梗概
控制器(Controllers)是 Kubernetes 控制平面的核心组成部分,负责监视集群的状态并自动调整资源以达到期望状态。它们实现了 Kubernetes 的自动化和自修复能力,确保集群始终处于管理员定义的期望状态。
详细说明
控制器工作原理
- 控制器实现了控制循环模式,持续监控集群状态并进行必要的调整
- 每个控制器专注于特定类型的资源,通过 API服务器 观察集群变化
- 控制器遵循”期望状态”与”实际状态”对比的原则,当检测到差异时,自动采取操作使实际状态向期望状态靠拢
主要控制器类型
1. Deployment 控制器
- 管理Pod的副本,确保指定数量的Pod副本正常运行
- 支持滚动更新和回滚,实现应用的无缝升级
- 通过创建和管理ReplicaSet实现Pod的生命周期管理
2. ReplicaSet 控制器
- 确保特定数量的Pod副本同时运行
- 当Pod失败或被删除时,自动创建新Pod
- 通常由Deployment控制器管理,很少直接使用
3. StatefulSet 控制器
- 管理有状态应用的部署和扩缩
- 为每个Pod提供持久性标识和稳定的网络标识
- 支持有序、优雅的部署和扩缩操作
- 常用于数据库等需要持久化存储的应用
4. DaemonSet 控制器
- 确保所有(或部分)节点运行Pod的副本
- 当新节点加入集群时,自动在新节点上部署Pod
- 适用于节点监控、日志收集等需要在每个节点上运行的服务
5. Job 控制器
- 管理批处理任务的执行
- 确保指定数量的Pod成功完成任务后退出
- 支持并行执行和重试机制
6. CronJob 控制器
- 按照时间计划(cron表达式)创建Job
- 适用于定时任务,如备份、报告生成等
7. Node 控制器
- 监控节点健康状态
- 当节点不可用时,标记节点为不健康
- 从不健康节点上驱逐Pod
8. Service 控制器
- 监视Service资源变化
- 管理负载均衡、服务发现和DNS记录
- 确保Service与Pod正确关联
自定义控制器
- Kubernetes允许开发自定义控制器,扩展平台功能
- 通过Operator模式,可以实现特定应用的管理自动化
- 使用客户端库(如client-go)开发控制器,遵循Kubernetes的扩展机制
与其他组件的关系
- 控制器通过 API服务器 监视资源变化并修改集群状态
- 控制器管理器(Controller Manager)运行所有内置控制器
- 控制器协同工作,构建 Kubernetes 的自动化体系
- 与调度器配合:控制器创建Pod,调度器决定Pod在哪个节点运行
father:: kubernetes 控制平面