このセクションでは、Deployment リソースを使ってPod のローリングアップデートやロールバックの処理を一時停止する方法と処理を再開する方法について、紹介します。Deployment の更新処理を行った場合、即時に適用されてしまいますが、更新一時停止しておくことによって即時の適用がされないようにできます。

Deployment の更新一時停止

Master サーバーから Deployment の更新処理を一時停止します。

[root@kube-master sample-deployment]# kubectl rollout pause deployment sample-deployment
deployment.extensions/sample-deployment paused
[root@kube-master sample-deployment]# 

Master サーバーから Deployment リソースの変更履歴を確認します。ここでは、リビジョン 6 と 7 の 2つのリビジョンが確認できます。

[root@kube-master sample-deployment]# kubectl rollout history deployment sample-deployment
deployment.extensions/sample-deployment 
REVISION  CHANGE-CAUSE
6         kubectl apply --filename=sample-deployment.yaml --record=true
7         kubectl apply --filename=sample-deployment.yaml --record=true

[root@kube-master sample-deployment]# 

Deployment の更新処理を一時停止した状態で、Master サーバーから Deployment の更新(ロールバック)をします。更新処理が一時停止されているため、更新がされないことが確認できます。

[root@kube-master sample-deployment]# kubectl rollout undo deployment sample-deployment --to-revision 6
error: you cannot rollback a paused deployment; resume it first with 'kubectl rollout resume deployment/sample-deployment' and try again
[root@kube-master sample-deployment]# 
[root@kube-master sample-deployment]# kubectl rollout history deployment sample-deployment
deployment.extensions/sample-deployment 
REVISION  CHANGE-CAUSE
6         kubectl apply --filename=sample-deployment.yaml --record=true
7         kubectl apply --filename=sample-deployment.yaml --record=true

[root@kube-master sample-deployment]# 

Deployment の更新再開

Master サーバーから Deployment の更新処理を再開します。

[root@kube-master sample-deployment]# kubectl rollout resume deployment sample-deployment
deployment.extensions/sample-deployment resumed
[root@kube-master sample-deployment]# 

Master サーバーから Deployment リソースの変更履歴を確認します。ここでは、リビジョン 6 と 7 の 2つのリビジョンが確認できます。

[root@kube-master sample-deployment]# kubectl rollout history deployment sample-deployment
deployment.extensions/sample-deployment 
REVISION  CHANGE-CAUSE
6         kubectl apply --filename=sample-deployment.yaml --record=true
7         kubectl apply --filename=sample-deployment.yaml --record=true

[root@kube-master sample-deployment]# 

Deployment の更新処理を再開した状態で、Master サーバーから Deployment の更新(ロールバック)をします。更新処理が再開されているため、更新がされることが確認できます。

[root@kube-master sample-deployment]# kubectl rollout status deployment sample-deployment
deployment "sample-deployment" successfully rolled out
[root@kube-master sample-deployment]# 
[root@kube-master sample-deployment]# kubectl rollout history deployment sample-deployment
deployment.extensions/sample-deployment 
REVISION  CHANGE-CAUSE
7         kubectl apply --filename=sample-deployment.yaml --record=true
8         kubectl apply --filename=sample-deployment.yaml --record=true

[root@kube-master sample-deployment]#