k8s 集群的组成和原理

  • 集群

集群是一组节点,这些节点可以是物理服务器也可以是虚拟机,在它们中安装了k8s的环境。

  • 集群的组成

k8s 集群由 worker 节点和 node 节点组成,其中worker节点由Controller Manager(控制管理器)、etcd(键值数据库)、scheduler(调度器)、api-server(api服务器);node节点主要由kubelet(监工)、kube-proxy(代理网络组成)。

worker节点各部分的作用

master 负责管理集群,master 协调集群中的所有活动,例如调度应用程序、维护应用程序的所需状态、扩展应用程序和滚动更新。

  • kube-apiserver

集群控制的入口,提供 HTTP REST 服务。

  • etcd

一致且高可用的键值存储,用作 Kubernetes 所有集群数据的后台数据库。

  • kube-scheduler

负责 Pod 的调度

  • kube-controller-manager

Kubernetes 集群中所有资源对象的自动化控制中心

node节点各部分作用

节点是k8s 中的工作节点,负责维护运行的Pod 并提供k8s的环境。

  • kubelet

负责 pod 的创建、启动、监控、重启、销毁等工作,同时与Master节点协作,实现集群管理的基本功能。

  • kube-proxy

实现k8s的通信与负载均衡功能。


  • 归纳

k8s 的核心组件

复制代码
apiserver 提供了资源操作的唯一入口,并提供认证、授权、访问控制、API 注册和发现等机制;
etcd 保存了整个集群的状态,就是一个数据库;
controller manager 负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;
scheduler 负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;
kubelet 负责维护容器的生命周期,同时也负责 Volume(CSI)和网络(CNI)的管理;
Container runtime 负责镜像管理以及 Pod 和容器的真正运行(CRI);
kube-proxy 负责为 Service 提供 cluster 内部的服务发现和负载均衡;
  • k8s 部署一个应用的交互流程
  1. 程序员使用命令行工具: kubectl ; kubectl create deploy tomcat --image=tomcat8(告诉 master 让集群使用 tomcat8 镜像,部署一个 tomcat 应用)。
  2. kubectl 命令行内容发给 api-server,api-server 保存此次创建信息到 etcd 。
  3. etcd 给 api-server 上报事件,说刚才有人给我里面保存一个信息。(部署Tomcatdeploy)
  4. controller-manager 监听到 api-server 的事件,是 (部署Tomcatdeploy)。
  5. controller-manager 处理这个 (部署Tomcatdeploy)的事件。controller-manager 会生成 Pod 的部署信息【pod信息】。
  6. controller-manager 把 Pod 的信息交给 api-server ,再保存到 etcd
  7. etcd 上报事件【pod信息】给 api-server 。
  8. scheduler 专门监听 【pod信息】 ,拿到 【pod信息】的内容,计算,看哪个节点合适部署这个 Pod【pod 调度过后的信息(node: node-02)】。
  9. scheduler 把 【pod 调度过后的信息(node: node-02)】交给 api-server 保存给 etcd 。
  10. etcd 上报事件【pod调度过后的信息(node: node-02)】,给 api-server 。
  11. 其他节点的 kubelet 专门监听 【pod 调度过后的信息(node: node-02)】 事件,集群所有节点 kubelet 从 api-server 就拿到了 【pod调度过后的信息(node: node-02)】 事件。
  12. 每个节点的 kubelet 判断是否属于自己的事情;node-02 的 kubelet 发现是他的事情
  13. node-02 的 kubelet 启动这个 pod。汇报给 master 当前启动好的所有信息。
相关推荐
赵文宇(温玉)3 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
张洛闻Eren3 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
Thneonl3 天前
你的 Pod 为什么 Pending:调度器两阶段
后端·kubernetes
不吃香菜kkk、3 天前
CI/CD(GitOps)学习与部署手册
运维·云原生·容器·kubernetes·云计算·jenkins·argocd
ysu_03144 天前
【2026】K8s GPU调度空占怎么解?Kueue与Volcano Gang配置
云原生·kubernetes·gpu算力·volcano·ai基础设施·kueue·gang scheduling
哈__4 天前
KES-Operator重塑Kubernetes环境下的KES数据库集群管理
数据库·kubernetes·operator·kes
九皇叔叔5 天前
K8S 资源菜单
docker·容器·kubernetes·k8s
安易算力5 天前
PUE优化工程实践:从1.5到1.2的制冷架构与气流组织改造路径
网络·python·容器·架构·kubernetes
kuroomi5 天前
Ingress-Nginx与kubernetes 网络
linux·运维·网络·kubernetes
程序猿阿越6 天前
containerd如何创建Pod
后端·kubernetes·源码阅读