3. Deployment 概念:Kubernetes Deployment 的定义、作用与生命周期
在日志平台中,采集器(如 Filebeat、Fluent Bit)通常以 Deployment 或 DaemonSet 形式运行。理解 Deployment 的核心机制,是后续实现版本一致性校验的基础。本节从定义、作用与生命周期三个维度展开。
3.1 定义:什么是 Deployment
Deployment 是 Kubernetes 中用于声明式管理 Pod 和 ReplicaSet 的 API 对象。它描述了一个期望状态(Desired State),控制器(Controller)会持续将实际状态向期望状态靠拢。
关键特性: Deployment 不直接管理 Pod,而是通过控制 ReplicaSet 来间接管理 Pod。每次更新都会创建一个新的 ReplicaSet,实现平滑滚动升级。
| 属性 | 说明 | 日志平台关联 |
|---|---|---|
| apiVersion | apps/v1(稳定版) | 校验时需确认 API 版本兼容性 |
| kind | Deployment | 明确资源类型,区分 DaemonSet/StatefulSet |
| spec.replicas | 期望 Pod 副本数 | 日志采集器副本数影响吞吐与容灾 |
| spec.template | Pod 模板(含容器镜像、环境变量等) | 镜像版本是版本一致性校验的核心字段 |
| spec.selector | 标签选择器,关联 Pod | 校验时需确保选择器与模板标签匹配 |
| spec.strategy | 更新策略(RollingUpdate / Recreate) | 滚动更新策略影响版本切换的连续性 |
3.2 作用:为什么需要 Deployment
Deployment 解决了日志平台中采集器管理的四个核心问题:
- 声明式更新:只需修改 YAML 并 apply,控制器自动完成 Pod 替换,无需手动操作。
- 滚动升级:逐步替换旧版本 Pod,保证采集器在升级过程中不中断日志上报。
- 回滚能力:当新版本采集器出现兼容性问题时,可快速回滚到上一个稳定版本。
- 自愈与扩缩:Pod 异常退出时自动重建;高峰期可临时增加副本数提升采集能力。
日志平台场景: 当采集器镜像从 filebeat:7.17.0 升级到 7.17.3 时,Deployment 会逐步替换 Pod。版本一致性校验需要确保集群中所有运行中的 Pod 镜像版本与期望版本一致,避免出现“灰度未完成”导致的版本混杂。
3.3 生命周期:从创建到回滚
Deployment 的生命周期包含以下关键阶段,每个阶段都与版本一致性校验的触发时机相关:
3.4 关键字段详解
以下字段在版本一致性校验中需要重点关注:
| 字段路径 | 校验内容 | 常见问题 |
|---|---|---|
spec.template.spec.containers[].image |
镜像名称与标签(如 filebeat:7.17.3) |
标签为 latest 导致版本漂移 |
spec.template.spec.containers[].imagePullPolicy |
拉取策略(Always / IfNotPresent / Never) | 策略不一致导致节点间镜像版本不同 |
spec.replicas |
期望副本数与实际运行数是否匹配 | 滚动升级过程中新旧 Pod 总数不等于期望值 |
spec.strategy.rollingUpdate.maxSurge |
升级时可超出期望副本数的最大 Pod 数 | 设置过大可能导致资源超限 |
spec.strategy.rollingUpdate.maxUnavailable |
升级时可不可用的最大 Pod 数 | 设置过小导致升级缓慢 |
status.readyReplicas |
实际就绪的 Pod 数量 | 就绪数小于期望数说明升级未完成 |
3.5 滚动升级策略与版本一致性的关系
滚动升级策略直接影响版本一致性校验的判定逻辑:
核心原则: 版本一致性校验不是简单的“期望版本 vs 实际版本”二元判断,而是需要结合滚动升级状态进行动态评估。
- RollingUpdate(默认):升级过程中集群内会同时存在新旧两个版本的 Pod。校验逻辑应允许“过渡期”内的版本混杂,但需设定最大容忍时间。
- Recreate:先删除所有旧 Pod,再创建新 Pod。升级期间服务会短暂中断,校验逻辑应检测到旧 Pod 完全消失、新 Pod 全部就绪。
- 暂停状态(paused):Deployment 被暂停后,控制器不会执行任何更新。校验逻辑应识别暂停状态,避免误报版本不一致。
3.6 版本一致性校验的典型触发场景
注意: 以下场景是日志平台中版本一致性校验的高频触发点,建议在课程实验中重点模拟。
- CI/CD 流水线触发:新镜像构建完成后,自动更新 Deployment 并触发校验。
- 定时巡检:每 5 分钟扫描集群中所有 Deployment,比对期望版本与实际运行版本。
- 滚动升级完成事件:监听 Deployment 的
Progressing状态变为True时触发校验。 - 回滚操作:执行
kubectl rollout undo后立即校验版本是否回退成功。 - 节点故障恢复:Pod 被重新调度到其他节点后,校验新 Pod 的镜像版本是否与期望一致。