组件
控制平面(master)
工作节点(node)
控制平面(master)的组件
控制平面也就是我们说的 master,主要用来控制并使得整个集群正常运转,控制平面主要包含如下组件:
-
etcd 分布式持久化存储
主要用来存储 k8s 集群中各个节点状态的信息,以及其他需要存储的信息,而且这些信息是持久化的,这样才能够保证 k8s 的完整运行,所以 etcd 需要多个才能获取 k8s 更好的性能 -
API 服务器
需要和它来进行通信
主要对外暴露了一个名为 ComponentStatus 的 API 资源,用来显示每个控制平面组件的健康状态,可以通过命令来显示组件以及他们的状态kubectl get componentstatuses
-
调度器(Scheculer)
主要用来负责调度应用 -
控制器管理器(Controller Manage)
执行集群级别的功能,主要用于维护集群
控制面板的组件用来存储、管理集群的状态,但它们不是用来运行应用的容器
工作节点上运行的组件
- Kubelet
主要用来与 API 服务器通信,定时汇报工作节点的状态,并管理它所在节点的容器 - Kube-proxy
负责组件之间的负载均衡,也是让客户端能够识别 service 的一个代理 - 容器(docker、rkt 或其他)
一个pod中通常只有一个容器,但是如果多个容器之间的耦合度比较高的话,也会有一个pod中有多个容器的情况
附加组件
除了控制平面和运行在节点上的组件,还需要有附加组件,这样才能够提供全面的功能,包含的组件有
- Kubernetes DNS 服务器
- 仪表盘
仪表盘 Dashboard 是 k8s 的一个原生 UI 界面,主要是能够实现一个可视化的界面,让用户更加方便的去操作以及检测状态。 - Ingress控制器
主要是用来做代理,类似于一个 nginx 的功能,但是ingress不需要写很多的配置文件,偏向于自动化 - Heapster 容器集群监控
- 容器网络接口插件