Kubernetes 主要由以下几个核心组件组成:
etcd 保存了整个集群的状态;apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;kubelet 负责维护容器的生命周期,同时也负责 Volume(CVI)和网络(CNI)的管理;kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡除了核心组件,还有一些推荐的 Add-ons:
kube-dns,更推荐使用 CoreDNS)多组件之间的通信原理为:
apiserver 负责操作 etcd,且只有 apiserver 才直接操作 etcd 集群apiserver 对内(集群中的其他组件)和对外(用户)提供统一的 REST API,其他组件均通过 apiserver 进行通信scheduler、kube-proxy 和 kubelet 等均通过 apiserver watch API 监测资源变化情况,并对资源作相应的操作apiserver 的 REST API 进行apiserver 也会直接调用 kubelet API(如 logs, exec, attach 等),默认不校验 kubelet 证书,但可以通过 --kubelet-certificate-authority典型的创建 Pod 的流程为:

