【每日一个云原生小技巧 #14】kubectl rollout

kubectl rollout 是 Kubernetes 中的一个命令,用于管理资源的部署过程。该命令允许你查看部署的状态、暂停、恢复和撤回部署。

主要子命令包括:

  • history:查看资源的版本历史。
  • pause:暂停部署。
  • restart:重新启动部署。
  • resume:恢复部署。
  • status:查看部署的状态。
  • undo:撤回到之前的版本。

使用场景

  • 管理 Kubernetes 的 Deployment、DaemonSet、StatefulSet 或 ReplicaSet 的部署流程。
  • 查看部署的历史、状态或撤回到早前的版本。
  • 在进行系统升级或故障排查时,暂停或恢复部署。

使用技巧

  • 使用 kubectl rollout status 命令时,可以持续观察部署的状态,直到完成或失败。
  • 如果部署出现问题,你可以使用 kubectl rollout undo 快速回滚到之前的版本。
  • 在更新配置或镜像前,先使用 kubectl rollout pause 暂停部署,这可以帮助你确保所有更改都是预期的。
  • 使用 kubectl rollout history 来查看部署的历史记录,包括每个版本的更改。

实际使用案例

查看 Deployment 的部署状态

代码语言:javascript
复制
kubectl rollout status deployment/my-deployment

查看 Deployment 的版本历史

代码语言:javascript
复制
kubectl rollout history deployment/my-deployment

回滚到之前的版本

首先,你可以查看历史记录来确定要回滚的版本:

代码语言:javascript
复制
kubectl rollout history deployment/my-deployment

然后,使用 undo 命令回滚到指定的版本(例如版本 2):

代码语言:javascript
复制
kubectl rollout undo deployment/my-deployment --to-revision=2

暂停和恢复 Deployment

暂停:

代码语言:javascript
复制
kubectl rollout pause deployment/my-deployment

恢复:

代码语言:javascript
复制
kubectl rollout resume deployment/my-deployment

重新启动 Deployment

代码语言:javascript
复制
kubectl rollout restart deployment/my-deployment

使用 kubectl rollout 命令,你可以更加灵活和安全地管理 Kubernetes 集群中的部署流程,确保部署的稳定性和可靠性。