kubernetesで更新したコンテナをロールバックする!

6 min read読了の目安(約5500字

はじめに

くーばねてすを倒すために今回はkubernetesで更新されたコンテナをもとに戻すためのロールバックを勉強する。

概要

■ロールバックとは
■ロールバックしてみる

をまとめた!(^^)!

■ロールバックとは

kubernetesでのロールバックはロールアウト前のコンテナにするためにポッドを入れ替えることを意味する。
ここでもクライアントのリクエストに答えられるように稼働コンテナを維持しつつポッドを入れ替えていく。
たとえば新機能と搭載したアプリケーションが不具合を起こしたときなどに前の状態に戻すなどをすることができる。

■ロールバックしてみる

コンテナを:前の状態に戻すためにポッドを入れ替えるには、

$ kubectl rollout undo deployment デプロイメント名

と入力する。
前回更新したnginx:1.17をnginx:1.16にロールバックする。

ロールバックする
$ kubectl rollout undo deployment web-deploy
deployment.apps/web-deploy rolled back

デプロイメント詳細取得

ロールバック開始直後
kubectl describe deployment web-deploy
Name:                   web-deploy
Namespace:              default
CreationTimestamp:      Tue, 23 Feb 2021 12:16:52 +0000
Labels:                 app=web-deploy
Annotations:            deployment.kubernetes.io/revision: 4
Selector:               app=web-deploy
Replicas:               10 desired | 10 updated | 10 total | 10 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=web-deploy
  Containers:
   nginx:
    Image:        nginx:1.16 # ここ注目
    Port:         <none>
    Host Port:    <none>
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    NewReplicaSetAvailable
OldReplicaSets:  web-deploy-859565657d (10/10 replicas created)# ここ注目
NewReplicaSet:   web-deploy-56865ddd5c (0/0 replicas created)
Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  56m   deployment-controller  Scaled down replica set web-deploy-56865ddd5c to 2
  Normal  ScalingReplicaSet  56m   deployment-controller  Scaled down replica set web-deploy-56865ddd5c to 0
ロールバック中
kubectl describe deployment web-deploy
Name:                   web-deploy
Namespace:              default
CreationTimestamp:      Tue, 23 Feb 2021 12:16:52 +0000
Labels:                 app=web-deploy
Annotations:            deployment.kubernetes.io/revision: 5
Selector:               app=web-deploy
Replicas:               10 desired | 5 updated | 8 total | 8 available | 5 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=web-deploy
  Containers:
   nginx:
    Image:        nginx:1.16
    Port:         <none>
    Host Port:    <none>
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    ReplicaSetUpdated
OldReplicaSets:  web-deploy-859565657d (3/3 replicas created)
NewReplicaSet:   web-deploy-56865ddd5c (5/10 replicas created)# ここ注目
Events:
  Type    Reason             Age    From                   Message
  ----    ------             ----   ----                   -------
  Normal  ScalingReplicaSet  4m18s  deployment-controller  Scaled up replica set web-deploy-56865ddd5c to 3
  Normal  ScalingReplicaSet  4m18s  deployment-controller  Scaled down replica set web-deploy-859565657d to 8
  Normal  ScalingReplicaSet  4m18s  deployment-controller  Scaled up replica set web-deploy-56865ddd5c to 5
  Normal  ScalingReplicaSet  55s    deployment-controller  Scaled down replica set web-deploy-859565657d to 3
  Normal  ScalingReplicaSet  55s    deployment-controller  Scaled up replica set web-deploy-56865ddd5c to 10
ロールバック終了
kubectl describe deployment web-deploy
Name:                   web-deploy
Namespace:              default
CreationTimestamp:      Tue, 23 Feb 2021 12:16:52 +0000
Labels:                 app=web-deploy
Annotations:            deployment.kubernetes.io/revision: 5
Selector:               app=web-deploy
Replicas:               10 desired | 10 updated | 13 total | 13 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=web-deploy
  Containers:
   nginx:
    Image:        nginx:1.16
    Port:         <none>
    Host Port:    <none>
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    ReplicaSetUpdated
OldReplicaSets:  <none>
NewReplicaSet:   web-deploy-56865ddd5c (10/10 replicas created)# ここ注目
Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  16m   deployment-controller  Scaled up replica set web-deploy-56865ddd5c to 3
  Normal  ScalingReplicaSet  16m   deployment-controller  Scaled down replica set web-deploy-859565657d to 8
  Normal  ScalingReplicaSet  16m   deployment-controller  Scaled up replica set web-deploy-56865ddd5c to 5
  Normal  ScalingReplicaSet  12m   deployment-controller  Scaled down replica set web-deploy-859565657d to 3
  Normal  ScalingReplicaSet  12m   deployment-controller  Scaled up replica set web-deploy-56865ddd5c to 10
  Normal  ScalingReplicaSet  35s   deployment-controller  Scaled down replica set web-deploy-859565657d to 0

まえのバージョンのコンテナに戻った!(^^)!

まとめ

ロールバックとロールバックの確認ができた!(^^)!