时间:2025-06-21 20:33
人气:
作者:admin
Kubernetes中的原地修改(In-Place Update)是一种不重建Pod对象,仅更新Pod内部容器配置(如镜像、环境变量等)的变更方式。相比传统的重建升级(删除旧Pod、创建新Pod),原地修改通过复用现有Pod资源(IP、存储卷、调度位置等),大幅提升发布效率并减少业务中断风险。以下是核心要点:
Pod对象复用
当仅修改Pod中容器的image、env、resources等字段时,Kubernetes不会删除并重建整个Pod,而是由kubelet检测到容器配置变化后,原地重启对应容器。
app和日志容器log-agent,仅更新app的镜像时,log-agent会保持运行不受影响。技术依赖
image、resources),其他字段变更会被拒绝。| 特性 | 原地修改 | 传统重建升级(如Deployment) |
|---|---|---|
| Pod重建 | ❌ 无需重建Pod | ✅ 删除旧Pod,创建新Pod |
| IP变化 | ❌ 保持不变 | ✅ 重新分配IP |
| 存储卷挂载 | ❌ 复用现有卷(无需卸载/重挂) | ✅ 重新挂载(可能触发延迟) |
| 调度开销 | ❌ 无需重新调度 | ✅ 需调度到新节点 |
| 镜像拉取速度 | ✅ 仅下载差异层(节省80%时间) | ❌ 完整拉取新镜像 |
需特定控制器支持
Deployment、StatefulSet不支持原地升级。InPlaceIfPossible策略优先原地更新。可修改字段范围
image、env、tolerations、activeDeadlineSeconds。InPlacePodVerticalScaling特性门控)。NotReady摘除流量,升级后恢复(需结合就绪探针)。原地修改是K8s中平衡效率与稳定性的高级变更策略,适用于对发布速度和业务连续性要求高的场景(如在线服务、数据库)。其核心价值在于复用Pod底层资源,通过容器级重启避免重建开销,但需配合扩展控制器(如OpenKruise)和流量管理机制实现完整能力。
本文来自博客园,作者:dashery,转载请注明原文链接:https://www.cnblogs.com/ydswin/p/18940638
Ubuntu离线环境部署Kubernetes v1.31.3(ARM64)