当前位置: 首页 > news >正文

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

文章目录

  • K8s架构
  • K8s核心组件
    • 控制平面组件(部署在 Master 节点)
      • 1. 查看组件运行情况
      • 2. 查看组件 help 命令
    • Node端组件(部署在每个工作节点)
  • K8s内部工作原理

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 对象,而是后台运行的服务程序。但你可以间接地通过以下方式获取它们的信息或确认它们是否在运行。

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 规则,进行负载均衡。

相关文章:

  • 【洛谷P9303题解】AC- [CCC 2023 J5] CCC Word Hunt
  • word批量导出visio图
  • Nginx--手写脚本压缩和切分日志(也适用于docker)
  • 【Java实战】集合排序方法与长度获取方法辨析(易懂版)
  • Python实现VTK-自学笔记(5):在三维世界里自由舞蹈——高级交互与动态可视化
  • 得物Java开发面试题及参考答案(下)
  • 力扣面试150题--完全二叉树的节点个数
  • 【数据结构】单链表练习
  • openresty+lua+redis把非正常访问的域名加入黑名单
  • 百度ocr的简单封装
  • AWS之AI服务
  • 基于Python的简易聊天机器人实现:从原理到实践
  • AWS WebRTC:获取信令服务节点和ICE服务节点
  • SAP-ABAP:在DEBUG过程中修改内表中的数据的方法详解
  • go并发与锁之sync.Mutex入门
  • 鸿蒙仓颉开发语言实战教程:自定义组件
  • ubuntu2x.xx网络不通如何解决
  • 使用requestAnimationFrame编写动画效果或者处理大量数据
  • 基于Java,SpringBoot,Vue,UniAPP宠物洗护医疗喂养预约服务商城小程序管理系统设计
  • OpenGL Chan视频学习-9 Index Buffers inOpenGL
  • 移动网站建设报价表/云搜索app
  • 做网站的工具怎么使用/产品推广
  • 长沙市做网站的网站/咨询公司
  • 外汇跟单网站建设/网络营销与直播电商专业就业前景
  • 中国建设银行个人登录网站/goole官网
  • 电商平台建设公司/优化网站内容