理解 Kubernetes 的架构与控制平面组件运行机制

文章目录

Kubernetes(也称为 K8s)是一个开源的容器编排和管理系统,用于自动部署、扩展和管理容器化应用程序。

K8s架构

Kubernetes 采用主从架构(Master-Worker),主要分为两大部分:
1. 控制平面(Control Plane)------ 管理集群

用于全局决策(比如调度)、集群状态管理等。

2. 工作节点(Worker Node)------ 执行容器化应用

运行实际的容器应用,并向控制平面汇报状态。

3. 分布式特性

  1. 无中心节点(Master 节点可多副本 HA)
  2. 所有组件通过 API Server 交互
  3. 状态存储在 etcd 中(强一致性)


K8s核心组件

控制平面组件(部署在 Master 节点)

组件 作用
kube-apiserver 所有组件交互的入口,提供 REST API 接口,是集群的"中枢神经"
etcd 分布式键值存储,保存整个集群的状态数据(如 Pod 信息、配置等)
kube-scheduler 负责为新创建的 Pod 分配合适的 Node 节点
kube-controller-manager 管理控制器(副本控制器、节点控制器等),维持系统期望状态
cloud-controller-manager 用于和云厂商平台(如 AWS、GCP)集成,管理负载均衡、存储等资源

1. 查看组件运行情况

在 Kubernetes 中,控制平面组件本身并不是通过 kubectl 的 help 命令直接查看的对象,因为它们不是 API 对象,而是后台运行的服务程序。但你可以间接地通过以下方式获取它们的信息或确认它们是否在运行。

bash 复制代码
kubectl get pods -n kube-system

2. 查看组件 help 命令

Node端组件(部署在每个工作节点)

组件 作用
kubelet 负责与 API Server 通信,管理容器生命周期,监控容器运行状态
kube-proxy 实现服务的负载均衡和网络代理,实现 Kubernetes 的 Service 网络
容器运行时(如 containerd、CRI-O、Docker) 运行容器的底层工具,遵循 Kubernetes 的 CRI 接口

K8s内部工作原理

下面用一个创建 Pod 的过程来理解内部工作流程:

创建一个 Pod 的流程:
1. 用户操作:

用户通过 kubectl 或其他方式向 kube-apiserver 提交创建 Pod 的请求。

2. API Server 接收请求:

验证并将 Pod 对象写入到 etcd 中(持久存储)。

3. 调度器(kube-scheduler):

  1. 监听未调度的 Pod;
  2. 根据策略(资源使用率、亲和性等)选择合适的 Node;
  3. 将调度结果写入 etcd。

4. 控制器通知 Node:

kubelet 监听到自己的 Node 上有新 Pod 需要创建,拉取镜像并创建容器。

5. 容器运行:

使用容器运行时(如 containerd)启动容器。

6. kubelet 上报状态:

周期性向 API Server 汇报 Pod 运行状态。

7. Service 和 kube-proxy:

若 Pod 关联了 Service,kube-proxy 会更新 iptables 或 IPVS 规则,进行负载均衡。

相关推荐
YuTaoShao2 小时前
Java八股文——MySQL「架构篇」
java·mysql·架构
_板栗_2 小时前
k8s中pod有哪些状态?
云原生·容器·kubernetes
白总Server3 小时前
Web 架构之 GraphQL 与 REST API 对比与选型
java·大数据·前端·javascript·后端·架构·graphql
汪子熙3 小时前
HTTP 通信中 TCP 本地地址与远程地址的区别与角色
后端·架构
飞翔的佩奇3 小时前
Java项目:基于SSM框架实现的学生二手书籍交易平台管理系统【ssm+B/S架构+源码+数据库+毕业论文+答辩PPT+任务书+开题】
java·数据库·mysql·架构·毕业设计·毕业论文·二手书籍
用户85240917030174 小时前
Xcode调试控制台调试语法、断点使用
架构
言之。4 小时前
【MacOS】M3 Pro芯片MacBook极速搭建Kubernetes
macos·容器·kubernetes
bug菌4 小时前
深入浅出:我如何用 Redis + Kafka 实现高可用“最终一致性”系统架构(实战+思考)
后端·架构·全栈
bug菌4 小时前
“强一致”or“最终一致”?别再纠结!你真的懂“异步补偿机制”吗?
分布式·后端·架构
没有口袋啦15 小时前
《k8s 部署》常见报错类型1
linux·容器·kubernetes