概述
本文试图用简单的语言描述Kubernetes主要组件的作用及其关系。这里我讲解的Kubernetes主要组件有API Server、Controller Manager、Scheduler、kubelet、kube-proxy,其中前三者运行于集群的Master节点,后两者运行于集群的Slave节点。接着描述了一下用于存储Kubernetes集群信息的Etcd,它是一个高可用、强一致性的服务发现存储仓库。最后,我抛出了一个我所遇到的一个问题。大家可以一同思考一下问题出在了哪里。
API Server
Kubernetes API Server通过kube-apiserver进程提供服务,该进程运行于Master节点上。
API Server是Kubernetes的核心组件,是各个组件通信的渠道,有如下特性:
1.集群管理的API入口
我们如果要创建一个资源对象如Deployment、Service、RC、ConfigMap等,都是要通过API Server的。
当然,我们可能是通过命令行的kubectl命令将一个yaml/json格式的文件create进行创建,还可能是通过写代码的方式使用如client-go这样的操作Kubernetes的第三方包来操作集群。总之,最终,都是通过API Server对集群进行操作的。通过API Server,我们就可以往Etcd中写入数据。Etcd中存储着集群的各种数据。
2.资源配额控制的入口
Kubernetes可以从各个层级对资源进行配额控制。如容器的CPU使用量、Pod的CPU使用量、namespace的资源数量等。这也是通过API Server进行配置的。将这些资源配额情况写入到Etcd中。
3.提供了完备的集群安全机制
Controller Manager
Replication Controller
副本控制器。用来保证Deployment或者RC中副本的数量的。
Node Controller
通过API Server监控Etcd中存储的关于节点的各类信息,这些信息是kubelet定时推给API Server的,由API Server写入到Etcd中。这些节点信息包括:节点健康状况、节点资源、节点名称、节