Kubernetes的核心组件主要包括:
etcd 保存整个集群的状态
apiserver 提供资源操作的唯一入口,提供认证、授权、访问控制、API注册和发现等机制
controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等
scheduler 负责资源调度,按照预定的调度策略将Pod调度到相应的机器
kubelet 负责维护容器的生命周期,同时负责Volume(CVI)和网络(CNI)管理
Container runtime 负责镜像管理及Pod和容器的运行(CRI)
kube-proxy 负责为Service提供cluster内部的服务发现和负载均衡
组件通信
apiserver负责etcd存储的所有操作,并且只有apiserver才能直接操作etcd集群
apiserver对内(集群中的其他组件)和对外(用户)提供统一的REST API,其他组件均通过apiserver进行通信。
controller manager、scheduler、kube-proxy和kubelet等通过apiserver watch api监测资源变化情况,并对资源作出相应的操作。
apiserver也可以调用kubelet API(如logs、exec、attatch等),默认是不检验kubelet证书的,这也可以通过--kubelet-certificate-authority
开启。