etcd 保存了整个集群的状态; apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制; controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等; scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上; kubelet 负责维护容器的生命周期,同时也负责 Volume(CSI)和网络(CNI)的管理; Container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI); kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡;
好的,那我们假设您是一位名叫小明的 5 岁小朋友,我将用简单易懂的方式为您讲解 kubernetes 的工作原理: 小明,我们先想象成一个王国。在这个王国里有个国王,名字叫 etcd,他知道王国里所有的情况。 有一天,国王 etcd 决定搬到一个新的城堡里去居住。这需要整个王国的人一起来完成这件大工程。 首先,国王 etcd 告诉了王国唯一的信使 apiserver 这个消息。apiserver 信使把这个消息传给王国里所有部门了解情况。 然后,总指挥 controller manager 带领各个部门商讨搬迁的计划。 scheduler 根据计划找到各个部门的首领 kubelet 来分配任务。 kubelet 部门首领带着部下 container runtime 开始工作。有的砍伐树木,有的运输木材,有的建造新城堡。大家通过 kube-proxy 部门安排的小路互相联系和运送东西。 在工作期间,总指挥 controller manager 时常检查进度。如果发现山上的石头滑落或树倒下,会立刻告诉 kubelet 部门的首领采取措施。 所有的 kubelet 部门都靠 container runtime 提供的斧头、锤子等工具完成工作。幸好有这些工具,每个部门可以专心自己的工作。 经过每个部门的努力,最终国王 etcd 和所有的人民都搬进了新城堡。在新家,kube-proxy 部门也搭建了联络各地的通路。 小明,这就是 kubernetes 工作的原理故事。每个组件就像故事里的一个角色,相互协作完成任务。我希望这个简单的例子能帮助你理解 kubernetes 的各个部分以及它们之间的联系。 如果还有什么不明白的地方,可以继续问我。我会用更简单的说法为你解释,让你像个小天才一样了解这些知识! 共同学习,共同进步!