K8S学习笔记:Controller
·
本文是自己的学习笔记
1、Controller概述
在 Kubernetes (K8s) 中,控制器(Controller) 是整个集群实现自动化管理和自愈能力的核心机制。
如果把 K8s 集群比作一座现代化的智能工厂,那么 controller 就是各种自动化机器人或监控设备,它们不需要人工介入,就能确保工厂时刻按照预设的规则运行。
控制器遵循控制工程中的 “控制循环(Control Loop)” 理念(就像家里的空调恒温器)。它的工作逻辑非常简单且不断重复:
┌─────────────────────────────────────────────────┐
│ │
▼ │
【监听 (Watch)】───►【对比 (Compare)】───►【执行 (Act)】──┘
-
观察当前状态(Actual State): 通过 API Server 持续监听集群中资源的实际运行状态(比如:当前有几个 Pod 在运行)。
-
对比期望状态(Desired State): 将实际状态与你在 YAML 文件中声明的“期望状态”进行对比(比如:你要求运行 3 个 Pod,但当前只有 2 个)。
-
调谐纠偏(Reconcile): 如果两者不一致,控制器就会采取行动,消除差异(比如:自动再拉起 1 个新的 Pod),直到当前状态与期望状态完全吻合。
K8s 内置了多种控制器,每种控制器专注于管理特定类型的资源:
| 控制器名称 | 负责管理的资源 | 适用场景与主要职责 |
|---|---|---|
| Deployment Controller | Deployment | 无状态应用(如 Web API、前端服务)。负责无缝滚动更新、版本回滚、弹性扩缩容。 |
| ReplicaSet Controller | ReplicaSet | 副本数量保证。确保任何时刻集群中都有指定数量的 Pod 在运行(通常由 Deployment 间接管理)。 |
| CronJob Controller | CronJob | 定时周期任务。类似于 Linux 的 Crontab,按预设的时间表周期性创建 Job(如每日凌晨数据库备份)。 |
| Node Controller | Node | 集群节点管理。监控节点的健康状态(Heartbeat),当节点离线时触发驱逐机制并重新调度 Pod。 |
| Service / Endpoint Controller | Service / Endpoints | 网络服务发现。监听 Pod IP 的变化,动态更新 Service 后端的 Endpoints 列表,确保流量正确路由。 |
更多推荐
所有评论(0)