K8S工作原理最全详解(图文全面总结)

K8S是云原生核心,下面我详解K8S工作原理@mikechen

K8S

Kubernetes(简称 K8S),是当前云原生的核心,是一个用于容器编排的开源平台。

K8S工作原理最全详解(图文全面总结)-mikechen

负责容器化应用的部署、扩展与管理。

由 Google 开源(基于 Borg 系统),CNCF 毕业项目。

它通过声明式 API + 控制循环机制,实现自动化部署、扩缩容、自愈、负载均衡等能力。

 

K8S工作原理

k8s架构,如下所示:

K8S工作原理最全详解(图文全面总结)-mikechen

                ┌──────────────┐
                │   kubectl    │
                └──────┬───────┘
                       ↓
               ┌──────────────┐
               │ API Server   │ ← 控制入口
               └──────┬───────┘
      ┌───────────────┼────────────────┐
      ↓               ↓                ↓
┌──────────┐   ┌────────────┐   ┌────────────┐
│ Scheduler│   │ Controller │   │   etcd     │
└──────────┘   └────────────┘   └────────────┘
                      ↓
               ┌──────────────┐
               │   Node节点   │
               └──────┬───────┘
                      ↓
         ┌──────────────────────────┐
         │ kubelet + kube-proxy     │
         └──────────────────────────┘
                      ↓
                   Pod运行

K8S 集群由控制平面(Control Plane,通常 3 台高可用) 、和工作节点(Worker Nodes,可无限横向扩展) 组成。

所有组件通过 kube-apiserver 通信,状态持久化在 etcd。

核心分层:Control Plane(Master):大脑,负责全局调度、状态管理。

Data Plane(Nodes):执行层,运行实际 Pod。

用户通过 kubectl / Dashboard / CI/CD 与 apiserver 交互。

 

控制平面(Control Plane)

控制平面,负责:整个集群的决策(如调度)以及检测和响应集群事件。

K8S工作原理最全详解(图文全面总结)-mikechen

API Server:集群的入口,所有操作通过 REST API 与其交互,负责认证、授权与请求校验。

etcd:分布式键值存储,持久化保存集群状态与配置数据,是单一真实数据源(SSoT)。

Scheduler(调度器):将未绑定的 Pod 分配到合适的节点,依据资源需求、亲和性、污点/容忍等策略。

Controller Manager:它是集群的“调节器”。

它运行着多个控制器进程,如: Node Controller、Deployment Controller…等等。

K8S工作原理最全详解(图文全面总结)-mikechen

负责:维护期望状态与实际状态一致(声明式控制循环)。

 

节点组件(Node)

K8S工作原理最全详解(图文全面总结)-mikechen

kubelet:每个节点上的代理,负责接收来自 API Server 的 PodSpec。

启动与管理容器,并定期汇报节点与 Pod 状态。

kube-proxy:实现服务(Service)抽象的网络转发和负载均衡。。。等功能。

容器运行时(Container Runtime):如 containerd、CRI-O、Docker(旧),负责实际运行容器镜像。

 

K8S工作流程

理解 K8s 的最好方式是,看一个 Pod 是如何从命令变成容器的:

1. kubectl提交请求
        ↓
2. API Server接收请求
        ↓
3. 写入 etcd(存储期望状态)
        ↓
4. Controller 发现新Pod
        ↓
5. Scheduler 开始调度
        ↓
6. 选择一个 Node
        ↓
7. kubelet 收到任务
        ↓
8. 拉取镜像 + 创建容器
        ↓
9. Pod 启动成功
        ↓
10. kube-proxy 建立网络

评论交流
    说说你的看法