K8S是云原生核心,下面我详解K8S工作原理@mikechen
K8S
Kubernetes(简称 K8S),是当前云原生的核心,是一个用于容器编排的开源平台。

负责容器化应用的部署、扩展与管理。
由 Google 开源(基于 Borg 系统),CNCF 毕业项目。
它通过声明式 API + 控制循环机制,实现自动化部署、扩缩容、自愈、负载均衡等能力。
K8S工作原理
k8s架构,如下所示:

┌──────────────┐
│ 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)
控制平面,负责:整个集群的决策(如调度)以及检测和响应集群事件。

API Server:集群的入口,所有操作通过 REST API 与其交互,负责认证、授权与请求校验。
etcd:分布式键值存储,持久化保存集群状态与配置数据,是单一真实数据源(SSoT)。
Scheduler(调度器):将未绑定的 Pod 分配到合适的节点,依据资源需求、亲和性、污点/容忍等策略。
Controller Manager:它是集群的“调节器”。
它运行着多个控制器进程,如: Node Controller、Deployment Controller…等等。

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

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 建立网络