はじめに
Kubernetesのデプロイ戦略として、Recreateを実際に動かして試してみます。
Kubernetesでの代表的なデプロイ戦略については、下記でざっくりまとめています。

【Kubernetes】デプロイ戦略についてざっくり理解する
はじめにKubernetesにおけるデプロイ戦略をざっくりまとめてみたいと思います。デプロイ戦略ここで紹介するデプロイ戦略は下記になります。ローリングアップデートRecreateブルーグリーンデプロイレインボーデプロイカナリアデプロイKub...
Recreateとは
Recreateは、全てのPodを同時に終了し、新しいバージョンのPodを同時に起動するデプロイ方法です。
メリット | デメリット |
---|---|
・異なるバージョンが同時に実行されない | ・ダウンタイムがある |
Deploymentのマニフェストで下記のように設定するだけです。
spec:
strategy:
type: Recreate
実際に試してみる
実際にRecreateしてみます。
まずは、Deploymentのマニフェストdeployment.yml
を作成します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
labels:
app: myapp
spec:
replicas: 10
strategy:
type: Recreate # Recreateの設定
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: web-container
image: nginx:1.20
ports:
- containerPort: 80
マニフェストを適用してDeploymentをデプロイします。
kubectl apply -f deployment.yml
Deploymentを確認すると10個のレプリカがあることがわかります。
❯ kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
myapp 10/10 10 10 11s
マニフェストのイメージのバージョンを変更して、反映します。
image: nginx:1.21
kubectl apply -f deployment.yml
Deploymentを確認してみると、一度全てのPodが全て削除してから、新しいPodが起動していることがわかります。
❯ kubectl get deploy -w
NAME READY UP-TO-DATE AVAILABLE AGE
myapp 10/10 10 10 2m41s
myapp 10/10 0 10 2m42s
myapp 0/10 0 0 2m50s # 全てのPodがすべて終了し、起動しているPodがなくなる
myapp 0/10 10 0 2m50s
myapp 1/10 10 1 2m56s # 徐々に新しいPodが起動
myapp 2/10 10 2 2m57s
myapp 3/10 10 3 2m57s
myapp 4/10 10 4 2m58s
myapp 5/10 10 5 2m58s
myapp 6/10 10 6 2m58s
myapp 7/10 10 7 2m59s
myapp 8/10 10 8 2m59s
myapp 9/10 10 9 3m
myapp 10/10 10 10 3m # 全ての新しいPodが起動