1.kubernetes组件
一个kubernetes集群主要由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件。
控制节点(master):集群的控制平面,负责集群的决策。
API Server:集群操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制。
Scheduler:负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上。
ControllerManager:负责维护集群的状态,比如程序部署安排、故障检测、自动扩展和滚动更新等。
Etcd:负责存储集群中各种资源对象的信息。
工作节点(node):集群的数据平面,负责为容器提供运行环境。
Kubelet:负责维护容器的生命周期,即通过控制Docker,来创建、更新、销毁容器。
KubeProxy:负责提供集群内部的服务发现和负载均衡。
Docker:负责节点上容器的各种操作。
2.kubernetes组件调用关系
以部署一个Nginx服务来说明Kubernetes系统各个组件调用关系:
首先需要明确,一旦Kubernetes环境启动之后,master和node都会将自身的信息存储到etcd数据库中。
一个Nginx服务的安装请求首先会被发送到master节点上的API Server组件。
API Server组件会调用Scheduler组件来决定到底应该把这个服务安装到那个node节点上。此时,它会从etcd中读取各个node节点的信息,然后按照一定的算法进行选择,并将结果告知API Server。
API Server调用Controller-Manager去调用Node节点安装Nginx服务。
Kubelet接收到指令后,会通知Docker,然后由Docker来启动一个Nginx的Pod。Pod是Kubernetes的最小操作单元,容器必须跑在Pod中。
一个Nginx服务就运行了,如果需要访问Nginx,就需要通过kube-proxy来对Pod产生访问的代理,这样,外界用户就可以访问集群中的Nginx服务了。