{"name":"K8s","id":"运维-K8s","content":"# Kubernetes\n\n## 一、Kubernetes 的本质\n\n### 1. Kubernetes 的核心命题\n\n在抽离所有技术细节之后，Kubernetes 要解决的本质问题只有一个：\n\n> **如何在不确定的基础设施之上，可靠地运行确定的应用意图？**\n\n更抽象地说：\n\n* 应用期望是稳定的\n* 运行环境是动态的\n* Kubernetes 的使命是：\n  **在动态世界中维持稳定意图**\n\n---\n\n### 2. Kubernetes 的哲学基础\n\nKubernetes 的设计基于四个根本思想：\n\n| 思想       | 含义                   |\n| -------- | -------------------- |\n| 声明式      | 描述“要什么”，而不是“怎么做”     |\n| 控制器模型    | 通过不断对比期望状态与实际状态来修正系统 |\n| 资源抽象     | 用统一的 API 描述一切        |\n| 基础设施即资源池 | 屏蔽底层节点差异             |\n\n---\n\n### 3. Kubernetes 的抽象公式\n\n从认知高度，可以把 Kubernetes 抽象为：\n\n```\n用户意图（YAML）  \n   ↓\nAPI Server（期望状态存储）  \n   ↓\n控制器模型（Reconciliation Loop）  \n   ↓\n调度 + 执行  \n   ↓\n最终运行态\n```\n\n---\n\n## 二、Kubernetes 的统一认知模型\n\n### 1. 三层统一架构\n\nKubernetes 可以被简化为三层模型：\n\n```\n+-----------------------------+\n|        API & 资源层         |\n|  Pod / Service / Deployment |\n+-----------------------------+\n|         控制层              |\n| Controller + Scheduler      |\n+-----------------------------+\n|         执行层              |\n| kubelet + CRI + CNI        |\n+-----------------------------+\n```\n\n* **API 层**：统一表达意图\n* **控制层**：维持系统收敛\n* **执行层**：把抽象变为现实\n\n---\n\n### 2. 控制器模型：Kubernetes 的心脏\n\n一切 Kubernetes 组件都遵循同一范式：\n\n```go\nfor {\n    actual := getActualState()\n    desired := getDesiredState()\n    if actual != desired {\n        makeThemEqual()\n    }\n}\n```\n\n这就是 Kubernetes 最核心的第一性原理：\n\n> **期望状态驱动的自动化收敛系统**\n\n---\n\n## 三、架构：从宏观到微观\n\n### 1. 控制平面（Control Plane）\n\n控制平面的本质是：\n\n> 一个分布式意图处理系统\n\n| 组件                 | 本质职责 |\n| ------------------ | ---- |\n| API Server         | 意图网关 |\n| etcd               | 状态之源 |\n| Scheduler          | 资源决策 |\n| Controller Manager | 状态收敛 |\n\n---\n\n#### （1）API Server：唯一入口\n\n* 所有组件只与 API Server 通信\n* 构成“单一真相源”\n* 提供：\n\n  * 认证\n  * 授权\n  * 审计\n  * 资源变更通知\n\n**本质：**\n\n> API Server = Kubernetes 的“大脑皮层”\n\n---\n\n#### （2）etcd：状态中枢\n\n* 保存所有期望状态\n* 使用 Raft 算法保证一致性\n\n本质公式：\n\n```\nKubernetes 的可靠性 ≈ etcd 的可靠性\n```\n\n---\n\n#### （3）Scheduler：资源调度器\n\n调度本质：\n\n> 在资源池中寻找最合适的节点\n\n逻辑模型：\n\n```\n未调度 Pod  \n   ↓\n过滤可用节点  \n   ↓\n打分  \n   ↓\n绑定节点\n```\n\n---\n\n#### （4）Controller Manager：系统稳定器\n\n负责让系统：\n\n> 从“实际状态” → “期望状态”\n\n---\n\n### 2. 执行平面（Node）\n\n#### （1）Kubelet\n\n本质：\n\n> “节点上的执行代理”\n\n* 把 Pod 描述变为真实容器\n* 负责：\n\n  * 生命周期\n  * 健康检查\n  * 卷挂载\n\n---\n\n#### （2）kube-proxy\n\n本质：\n\n> Service 网络规则控制器\n\n真正转发流量的是：\n\n* iptables\n* ipvs\n\nkube-proxy 的定位：\n\n> 不是代理，而是“规则编程器”\n\n---\n\n#### （3）CRI / CNI / CSI\n\n| 接口  | 抽象目的  |\n| --- | ----- |\n| CRI | 运行时解耦 |\n| CNI | 网络解耦  |\n| CSI | 存储解耦  |\n\n体现 Kubernetes 的核心设计思想：\n\n> 一切皆可插拔\n\n---\n\n## 四、对象模型：Kubernetes 的语言\n\n### 1. Pod —— 最小运行单元\n\n**本质定义：**\n\n> Pod = 一个逻辑主机\n\n* 共享：\n\n  * Network Namespace\n  * UTS Namespace\n  * 存储卷\n\n容器与 Pod 的关系：\n\n| 比喻层       | 对应 |\n| --------- | -- |\n| Pod       | 机器 |\n| Container | 进程 |\n\n---\n\n### 2. Service —— 稳定入口\n\nService 的本质：\n\n> 为动态 Pod 集合提供稳定访问点\n\n三大功能：\n\n* 虚拟 IP\n* 负载均衡\n* 服务发现\n\n---\n\n### 3. Deployment —— 无状态管理器\n\n本质：\n\n> 版本化的副本控制器\n\n```\nDeployment\n   ↓\nReplicaSet\n   ↓\nPod\n```\n\n---\n\n### 4. StatefulSet —— 状态化管理器\n\n解决两个问题：\n\n| 维度   | 含义     |\n| ---- | ------ |\n| 拓扑状态 | 编号顺序   |\n| 存储状态 | 独立 PVC |\n\n---\n\n### 5. DaemonSet / Job / CronJob\n\n| 对象        | 场景本质   |\n| --------- | ------ |\n| DaemonSet | 节点守护进程 |\n| Job       | 一次性任务  |\n| CronJob   | 定时任务   |\n\n---\n\n## 五、网络模型\n\nKubernetes 网络的第一性原理：\n\n> 任何 Pod 可以无 NAT 直连任何 Pod\n\n---\n\n### 核心抽象\n\n* CNI 插件负责实现\n* Service 提供稳定入口\n* Ingress/Gateway 提供南北向流量\n\n---\n\n## 六、存储模型\n\nKubernetes 存储的核心理念：\n\n> 存储与计算解耦\n\n抽象层级：\n\n```\nPod\n  ↓\nPVC（声明）\n  ↓\nPV（资源）\n  ↓\nStorageClass（策略）\n```\n\n---\n\n## 七、安全模型\n\nKubernetes 安全的三个维度：\n\n| 维度 | 机制             |\n| -- | -------------- |\n| 身份 | ServiceAccount |\n| 权限 | RBAC           |\n| 隔离 | NetworkPolicy  |\n\n---\n\n## 八、可观测性模型\n\n现代运维三件套：\n\n| 能力      | 实现            |\n| ------- | ------------- |\n| Metrics | Prometheus    |\n| Logging | EFK/ELK       |\n| Tracing | OpenTelemetry |\n\n---\n\n## 九、运维方法论\n\n### 1. 资源管理原则\n\n* 明确 requests\n* 合理 limits\n* 依赖 QoS\n\n---\n\n### 2. 发布策略\n\n| 模式   | 场景   |\n| ---- | ---- |\n| 滚动更新 | 常规发布 |\n| 蓝绿发布 | 大版本  |\n| 金丝雀  | 灰度   |\n\n---\n\n### 3. 高可用设计\n\n* 控制平面多实例\n* etcd 集群\n* 无状态优先\n\n---\n\n## 十、最佳实践原则\n\n### 应用设计原则\n\n* 面向失败设计\n* 无状态优先\n* 可观测优先\n\n---\n\n### 运维实践原则\n\n* 不使用 latest\n* 充分利用探针\n* 日志 stdout 化\n\n---\n\n## 十一、Kubernetes 的边界\n\nKubernetes 不是什么：\n\n* 不是应用框架\n* 不是中间件\n* 不是监控系统\n\n它是：\n\n> **分布式应用的运行时平台**\n\n---\n\n## 十二、技术演进趋势\n\n* Ingress → Gateway API\n* iptables → eBPF\n* 手工运维 → GitOps\n* 单集群 → 多集群\n\n---\n\n## 关联内容（自动生成）\n\n- [/操作系统/容器化.md](/操作系统/容器化.md) 容器化技术是Kubernetes的基础，提供了轻量级虚拟化和应用打包的能力\n- [/运维/Docker.md](/运维/Docker.md) Docker是主流的容器技术，Kubernetes基于容器技术进行应用编排和管理\n- [/软件工程/微服务/微服务.md](/软件工程/微服务/微服务.md) 微服务架构是Kubernetes的主要应用场景之一，Kubernetes为微服务提供了理想的运行环境\n- [/软件工程/架构/系统设计/云原生.md](/软件工程/架构/系统设计/云原生.md) 云原生是Kubernetes的核心设计理念，Kubernetes是实现云原生架构的关键技术\n- [/软件工程/微服务/ServiceMesh/ServiceMesh.md](/软件工程/微服务/ServiceMesh/ServiceMesh.md) Service Mesh是微服务通信的解决方案，与Kubernetes结合提供更强大的服务治理能力\n- [/中间件/web中间件/Nginx.md](/中间件/web中间件/Nginx.md) K8s中的Ingress Controller（如nginx-ingress）实现了与Nginx类似的负载均衡和流量管理功能\n- [/中间件/数据库/redis/哨兵.md](/中间件/数据库/redis/哨兵.md) Kubernetes的高可用架构设计，提供了另一种分布式系统高可用的实现思路\n- [/数据技术/任务调度系统.md](/数据技术/任务调度系统.md) 涉及CronJob定时任务机制、Job与CronJob在Kubernetes中的调度实现\n- [/数据技术/数据运维.md](/数据技术/数据运维.md) K8s作为云原生应用的编排系统，其提供的资源调度、弹性伸缩、健康检查等能力为数据应用的运维提供了新的模式，是云原生数据运维的重要基础设施\n- [/编程语言/JAVA/高级/注解.md](/编程语言/JAVA/高级/注解.md) Kubernetes资源定义中也使用注解来存储元数据，与Java注解在概念上有相似之处\n","metadata":"tags: ['分布式系统', '运维', '架构设计']","hasMoreCommit":true,"totalCommits":28,"commitList":[{"date":"2026-02-12T15:12:41+08:00","author":"MY","message":"docs(SUMMARY): 移除SpringBoot文档并更新目录结构","hash":"cb0ebf64c788c03b810e8059b0f6253d1dff72bb"},{"date":"2026-02-12T14:07:03+08:00","author":"MY","message":"doc: 整理标签","hash":"290b3e8ad18f48832ac282290238d020fc030a88"},{"date":"2026-01-20T17:35:00+08:00","author":"MY","message":"doc(k8s): 重构文档","hash":"befdfb1270bb67d369d28c700c326cf98e6a1f21"},{"date":"2025-11-16T21:30:56+08:00","author":"MY","message":"docs: 统一并精简文档标签","hash":"21362e9d7aeb62e05364cd5e7f3a3c24d7e293c7"},{"date":"2025-07-12T15:49:09+08:00","author":"my","message":"📦K8S","hash":"433152c13bf25b0afb9f2da5a6d4cc3cb2124b36"},{"date":"2024-03-14T14:59:51+08:00","author":"MY","message":"✏k8s","hash":"ae3461309852c8bf76e2db070586ed92dfa72281"},{"date":"2024-03-13T21:31:48+08:00","author":"MY","message":"✏k8s","hash":"42232c8d5a5a7747fac2482872b948ba448ee2ea"},{"date":"2024-03-12T20:03:27+08:00","author":"MY","message":"✏k8s & 容器网络","hash":"a4f9529e07f942f438aa6875d64a7bfc453afb84"},{"date":"2024-03-11T19:44:53+08:00","author":"MY","message":"✏k8s","hash":"1210ea8a06dc8a66c57206993d7763a5cfcc6984"},{"date":"2024-03-09T15:55:32+08:00","author":"MY","message":"✏k8s","hash":"1908b97a3d7d04ddb1c5d9499ec77b9fcc2e462d"}],"createTime":"2019-11-04T23:11:04+08:00"}