从此
文章
📄文章 #️⃣专题 🌐上网 📺 🛒 📱

k8s/Kubernetes运维基本概念简单描述

🕗2019-07-17

在k8s中,有各种各样的概念和术语。这些概念是必须要学习和掌握的。

大概说一下这些概念:

如果不理解没啥关系,看一遍有印象下,下面我们一个个琢磨琢磨。

master

k8s的master节点上有三个进程,它们都是以docker的形式存在的。我们在k8s的master节点看docker ps 就可以看到这几个进程:

8824aad1ee95        e851a7aeb6e8                     "kube-apiserver --ad…"   3 days ago          Up 3 days                               k8s_kube-apiserver_kube-apiserver-docker-for-desktop_kube-system_f23c0965aad6df9f61b1c9c4bb953cf5_0
a9ce81ec9454        978cfa2028bf                     "kube-controller-man…"   3 days ago          Up 3 days                               k8s_kube-controller-manager_kube-controller-manager-docker-for-desktop_kube-system_1dc44822f21a9cbd68cc62b1a4684801_0
85da3f6e700f        d2c751d562c6                     "kube-scheduler --ad…"   3 days ago          Up 3 days                               k8s_kube-scheduler_kube-scheduler-docker-for-desktop_kube-system_b6155a27330304c86badfef38a6b483b_0

其中的 apiserver 是提供 k8s 的 rest api 服务的进程。当然它也包括了 restapi 的权限认证机制。 k8s 的 apiserver 提供了三种权限认证机制:

我们也可以通过使用kubectl proxy 在 master 上来创建一个代理,从而外部可以访问这个 k8s 集群。

kube-controller-manager 是用来管理所有的 controller 的。之前我们说的 Replication Controller 就是一种管控 Pod 副本的Controller, 其他相关的 Controller 还有:

kube-scheduler 负责 Pod 调度,接收 Controller Manager 创建的新的Pod,为其选择一个合适的Node,并且在Node上创建Pod。

一个k8s集群只有一个master节点,所以 master 节点的高可用性是一个问题,一旦 master 节点挂了,整个集群也就挂了。这点真有点神奇。所以网上关于搭建高可用的k8s Master 节点的方案有很多。

Node

Node 是 k8s 的工作节点,Node 一般是一个虚拟机或者物理机,每个 node 上都运行三个服务:

docker 就是 docker server,它提供

kubelet 是一个管理系统,它管理本个node上的容器的生命周期。它主要功能就是定时从某个地方获取节点上pod/container的期望状态,并调用对应的容器平台接口,来达成这个状态。它可以设置 http 监控,命令行监控等方式。

kube-proxy 是管理 service 的访问入口,包括集群内 pod 到 service 的访问,以及集群外访问service。

可用性

其实k8s自身的可用性是比较弱的,如果master挂了,那么master上的三个服务也就挂了。node挂了,如果node上的pod是被 controller控制住的话,controller会在其他node上启动对应的pod。