当前位置: 首页 > ai >正文

Kubernetes Pod 控制器

Kubernetes Pod 控制器总结

一、控制器概述
  • 核心作用:Kubernetes 控制器是集群的 “中心大脑”,通过控制循环维持集群当前状态与期望状态一致。
  • 控制循环机制:不断对比 “预期状态”(资源清单定义)和 “真实状态”(集群实际运行状态),通过 “调谐” 操作(创建 / 删除 Pod)使两者匹配。例如:若期望 8 个 Pod 但实际只有 7 个,会自动创建 1 个;若实际有 9 个,会删除最新创建的 1 个。
二、主要 Pod 控制器类型及特点
1. ReplicationController(RC)
  • 核心功能:确保 Pod 副本数量始终与期望一致,自动替换异常退出的 Pod,回收多余 Pod。
  • 关键特性
    • 通过标签选择器管理 Pod,要求 Pod 标签必须是 RC 选择器的子集。
    • 支持通过kubectl scale rc <名称> --replicas=<数量>调整副本数。
    • 当 Pod 标签被修改导致不匹配时,RC 会创建新 Pod 维持期望数量。
  • 局限性:标签选择器功能简单,已逐步被 ReplicaSet 替代。
2. ReplicaSet(RS)
  • 核心功能:与 RC 功能类似,确保指定数量的 Pod 副本运行,是 RC 的升级版本。
  • 关键改进
    • 支持更灵活的标签选择器matchExpressions),可通过运算符(In/NotIn/Exists/DoesNotExist)定义匹配规则。
    • 例如:matchExpressions: {key: app, operator: In, values: [spring-k8s, haha]}表示匹配标签appspring-k8shaha的 Pod。
  • 使用场景:更适合复杂标签匹配需求的场景,是 Deployment 的底层依赖。
3. Deployment
  • 核心功能:基于 ReplicaSet 实现,提供声明式更新、滚动升级、回滚、扩容缩容等高级功能,是最常用的控制器。
  • 关键特性
    • 管理 RS:每个 Deployment 版本对应一个 RS,通过控制 RS 的副本数实现版本迭代(如从 v1.0 升级到 v2.0 时,新建 v2.0 的 RS 并逐步替换 v1.0 的 RS)。
    • 滚动更新:默认允许 25% 的额外 Pod(maxSurge)和 25% 的不可用 Pod(maxUnavailable),确保升级过程中服务不中断。
    • 回滚机制:通过kubectl rollout undo deployment/<名称>回滚到上一版本,或通过--to-revision=<版本号>回滚到指定版本。
    • 金丝雀部署:通过kubectl rollout pause暂停滚动,先部署少量新版本 Pod 测试,确认无误后用kubectl rollout resume继续。
  • 常用命令
    • 创建 / 更新:kubectl apply -f <yaml文件>(声明式)。
    • 调整副本数:kubectl scale deployment <名称> --replicas=<数量>
    • 更新镜像:kubectl set image deployment/<名称> <容器名>=<镜像>
    • 查看历史:kubectl rollout history deployment/<名称>
4. DaemonSet
  • 核心功能:确保每个节点(或指定节点)上运行且仅运行一个 Pod,节点加入集群时自动创建 Pod,节点移除时自动回收。
  • 典型场景
    • 集群存储(如 glusterd、ceph)。
    • 日志收集(如 fluentd、logstash)。
    • 节点监控(如 Prometheus Node Exporter)。
  • 特点:无需手动设置副本数,自动匹配集群节点数量;默认不调度到带污点(Taint)的节点(如 master 节点),需通过容忍(Toleration)配置例外。
5. Job
  • 核心功能:处理批处理任务(一次性任务),确保一个或多个 Pod 成功结束(返回码为 0)。
  • 关键参数
    • completions:需成功完成的 Pod 总数(默认 1)。
    • parallelism:并行运行的 Pod 数量(默认 1)。
    • restartPolicy:仅支持Never(不重启)或OnFailure(失败时重启)。
  • 使用场景:数据库备份、数据处理脚本等一次性任务。
6. CronJob
  • 核心功能:基于时间调度 Job,支持周期性任务(如每周备份)或一次性定时任务。
  • 关键配置
    • schedule:Cron 表达式(如*/1 * * * *表示每分钟执行一次)。
    • jobTemplate:定义要调度的 Job 模板。
    • concurrencyPolicy:并发策略(Allow默认允许并发、Forbid禁止并发、Replace替换当前运行的 Job)。
  • 局限性:最小调度单位为分钟级;创建的 Job 需是幂等操作(多次执行结果一致)。
三、控制器对比总结
控制器核心功能典型场景关键特点
ReplicationController维持固定 Pod 副本数简单场景(逐步被 RS 替代)仅支持简单标签选择器
ReplicaSet维持固定 Pod 副本数,支持复杂标签作为 Deployment 的底层依赖支持matchExpressions标签选择器
Deployment声明式更新、滚动升级、回滚无状态应用(如 Web 服务)管理 RS 实现版本控制,支持金丝雀部署
DaemonSet每个节点运行一个 Pod日志、监控、存储等节点级服务自动匹配节点数量,节点变化时自动调整
Job批处理任务(一次性)数据备份、脚本执行确保 Pod 成功结束,支持并行执行
CronJob定时 / 周期性批处理任务周期性备份、定时任务基于 Cron 表达式调度,支持并发策略

通过上述控制器,Kubernetes 可灵活管理不同类型的工作负载,从无状态服务到批处理任务,满足多样化的业务需求。

http://www.xdnf.cn/news/18157.html

相关文章:

  • 【PyTorch项目实战】OpenNMT本地机器翻译框架 —— 支持本地部署和自定义训练
  • 学习strandsagents的http_request tool
  • 接口性能测试工具 - JMeter
  • IMX6ULL-KERNEL源代码
  • KMM跨平台叛逃实录:SwiftUI与Compose Multiplatform共享ViewModel的混合开发框架(代码复用率85%)
  • RPC高频问题与底层原理剖析
  • 【树莓派】【嵌入式】远程树莓派,解决ping不通问题
  • 应用缓存不止是Redis!——亿级流量系统架构设计系列
  • Windows/Centos 7下搭建Apache服务器
  • Nacos-7--扩展一下:0-RTT和1-RTT怎么理解?
  • Spring Boot 全局异常处理
  • 重置iPhone会删除所有内容吗? 详细回答
  • 基于WebSocket和SpringBoot聊天项目ChatterBox测试报告
  • 如何用Prometheus和FastAPI打造任务监控的“火眼金睛”?
  • 11.Ansible自动化之-内容集管理
  • 如何理解关系型数据库的ACID?
  • 浅看架构理论(一)
  • 【上升跟庄买入】副图/选股指标,动态黄色线由下向上穿越绿色基准线时,发出买入信号
  • 机器学习深度学习 所需数据的清洗实战案例 (结构清晰、万字解析、完整代码)包括机器学习方法预测缺失值的实践
  • RWA在DeFi中的应用
  • 【计算机视觉】检测与分割详解
  • AMPAK正基科技系列产品有哪些广泛应用于IOT物联网
  • spring声明式事务,finally 中return对事务回滚的影响
  • Spring Cloud系列—Seata分布式事务解决方案AT模式
  • 大模型落地选择困难症?RAG、Workflow、Agent全解析
  • Python脚本每天爬取微博热搜-终版
  • 在线客服系统访客表的设计与实现-增加最新消息字段
  • C#项目集成海康SDK指南:从搭建环境到实现视频预览、录制、截屏
  • 【LeetCode】16. 最接近的三数之和
  • 图论——Bellman-Ford和SPFA