1.kubernetes组件
一个kubernetes集群主要由控制节点(master)、工作节点(node)构成,每个节点上都会安装不同的组件。
- 控制节点(master):集群的控制平面,负责集群的决策。
- API Server:集群操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制。
- Scheduler:负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上。
- ControllerManager:负责维护集群的状态,比如程序部署安排、故障检测、自动扩展和滚动更新等。
- Etcd:负责存储集群中各种资源对象的信息。
工作节点(node):集群的数据平面,负责为容器提供运行环境。
以部署一个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服务了。