首页 新闻 会员 周边

我改了原始的yaml文件,然后kubectl apply -f 好像没有用

0
[已关闭问题] 关闭于 2026-06-22 07:42

kubectl apply -f 更新的是集群中的资源定义(如 Deployment、StatefulSet、Pod 等),但:

  • 如果更新的是 Pod 资源(直接用 kind: Pod 创建的):Pod 是不可变的,apply 会报错或忽略变更。

  • 但是如果是更新的是 Deployment/ReplicaSet 等控制器,虽然控制器不会立即主动杀死旧的 Pod 来应用新配置,如果 Deployment 的更新策略(strategy)是 Recreate(重建),那它会先杀掉所有旧 Pod,再创建新的。但默认策略是 RollingUpdate(滚动更新)

    • 不主动杀死 = 不会立即 kill 所有旧 Pod

    • 但会创建新的,替换旧的 = 通过滚动更新逐步完成替换

直接创建了一个独立的 Pod(lifecycle-pod),所以直接修改 YAML 再 apply 是不会生效的。

 

方案一:删除并重新创建(适用于独立 Pod)

# 先删除旧的
kubectl delete -f att.yml

# 再重新创建
kubectl apply -f att.yml

或者一步到位:

kubectl replace --force -f att.yml

方案二:如果您用的是 Deployment(推荐)

如果您把 YAML 改为 Deployment 类型,可以用以下方式触发滚动更新:

 
# 方法1:重启 Deployment(不修改内容只重启)
kubectl rollout restart deployment lifecycle-deployment

# 方法2:修改镜像 tag 或环境变量后 apply,会触发滚动更新
kubectl apply -f att.yml
# 查看正在运行的 Pod 的完整 YAML
kubectl get pod lifecycle-pod -o yaml
  1. 生产环境避免使用独立 Pod,建议用 Deployment 管理,这样修改 YAML 后 apply 会自动滚动更新,无需手动删除。

  2. 修改完 YAML 后,可以先用 kubectl diff -f att.yml 查看改动是否会生效。

 

*Tesla*的主页 *Tesla* | 小虾三级 | 园豆:1834
提问于:2026-06-22 07:42
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册