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 当前启动好的所有信息。
相关推荐
无言听风雨丶11 小时前
Linux 容器本质探秘:Cgroup 与 Namespace 深度解析与实战
linux·运维·服务器·kubernetes
无言听风雨丶15 小时前
Kubernetes GitOps 持续交付实战:用 Argo CD 让 Git 成为集群事实源
git·elasticsearch·kubernetes
无言听风雨丶1 天前
Kubernetes 控制平面深度剖析:从 kubectl apply 到 etcd 写入的全链路
平面·kubernetes·etcd
openFuyao1 天前
openFuyao x 复旦大学软件工程实验室 Panel 回顾:Agentic时代,集群调度技术体系将如何演进?
kubernetes·openfuyao
螺蛳粉 螺蛳粉1 天前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
相思难忘成疾1 天前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
weirong1 天前
给 K8s 加一个自动值班员:分级故障自愈引擎
kubernetes
云和数据.ChenGuang1 天前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes
weirong1 天前
为什么 HPA 会震荡?手写一个带冷却窗口的伸缩决策引擎
kubernetes
-星空下无敌2 天前
Windows Docker K8s 安装部署Naocs ,SpringBoot 3.x 4.x 整合Naocs 版本兼容 配置中心、服务注册与发现
windows·docker·nacos·kubernetes·springboot·alibaba