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