更新 Deployment
通过 Deployment 部署应用后,经常会有 Deployment 文件的配置更改或者镜像版本迭代的需求,更改配置后该 Deployment 会创建新的 ReplicaSet,之后会对管理的 Pod 进行滚动升级。
执行更新操作
主要存在两种更新方式:
查看更新过程
可以使用 kubectl rollout status 查看更新过程(要快,不然信息会只有一部分):
$ kubectl rollout status deploy nginx-deploy
Waiting for deployment "nginx-deploy" rollout to finish: 1 out of 2 new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 1 out of 2 new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 1 out of 2 new replicas have been updated...
Waiting for deployment "nginx-deploy" rollout to finish: 1 old replicas are pending termination...
Waiting for deployment "nginx-deploy" rollout to finish: 1 old replicas are pending termination...
deployment "nginx-deploy" successfully rolled out可以看出更新过程为新旧交替更新,首先新建一个 Pod,当 Pod 状态为 Running 时,删除一个旧的 Pod,同时创建一个新的 Pod。
查看 ReplicaSet
当触发一个更新后,会有新的 ReplicaSet 产生,旧的 ReplicaSet 会被保存,查看此时的 ReplicaSet,可以从 AGE 或 READY 看出新旧 ReplicaSet:
查看 deployment 详细信息
通过 describe 查看 Deployment 的详细信息:
在 describe 中可以看出:
(第35行)第一次创建时,它创建了一个名为 nginx-deploy-585ff57b46 的 ReplicaSet,并直接将其扩展为 2 个副本。
(第36和37行)更新部署时,它创建了一个新的 ReplicaSet,命名为 nginx-deploy-68c574c9f,并将其副本数扩展为 1,然后将旧的 ReplicaSet 缩小为 1,这样至少可以有一个 Pod 可用,最多创建了 3 个 Pod。
(第38和39行)以此类推,使用相同的滚动更新策略向上和向下扩展新旧 ReplicaSet,最终新的 ReplicaSet 可以拥有 2 个副本,并将旧的 ReplicaSet 缩小为 0。
最后更新于
这有帮助吗?