5.3.5 回滚Deployment控制器下的应用发布

若因各种原因的导致滚动更新无法正常进行,如镜像文件获取失败、“金丝雀”遇险等,则应该将应用回滚到之前的版本,或者回滚到由用户指定的历史记录中版本。Deployment控制器的回滚操作可使用“kubectl rollout undo”命令完成,例如,下面的命令可将myapp-deploy回滚至之前的版本:

**[terminal]
**[delimiter $ ]**[command kubectl rollout undo deployments myapp-deploy]
deployment.apps/myapp-deploy rolled back

等待回滚完成后,验证myapp-deploy的ReplicaSet控制器对象是否已恢复到指定的历史版本以确保其回滚正常完成。在“kubectl rollout undo”命令上使用“--to-revision”选项指定revision号码即可回滚到历史特定版本,例如,假设myapp-deploy包含如下的revision历史记录:

**[terminal]
**[delimiter $ ]**[command kubectl rollout history deployment myapp-deploy]
deployment.apps/myapp-deploy
REVISION  CHANGE-CAUSE
3         <none>
5         <none>
6         <none>

若要回滚到号码为3的revision记录,则使用如下命令即可完成:

**[terminal]
**[delimiter $ ]**[command kubectl rollout undo deployment myapp-deploy --to-revision 3]
deployment.apps/myapp-deploy rolled back

回滚操作中,其revision记录中的信息会发生变动,回滚操作会被当作一次滚动更新追加进历史记录中,而被回滚的条目则会被删除。需要注意的是,如果此前的滚动更新过程处于“暂停”状态,那么回滚操作就需要先将Pod模板改回到之前的版本,然后“继续”更新,否则,其将一直处于暂停状态而无法回滚。

results matching ""

    No results matching ""