【Kubernetes】Recreateをやってみる

スポンサーリンク

はじめに

Kubernetesのデプロイ戦略として、Recreateを実際に動かして試してみます。

Kubernetesでの代表的なデプロイ戦略については、下記でざっくりまとめています。

【Kubernetes】デプロイ戦略についてざっくり理解する
はじめにKubernetesにおけるデプロイ戦略をざっくりまとめてみたいと思います。デプロイ戦略ここで紹介するデプロイ戦略は下記になります。ローリングアップデートRecreateブルーグリーンデプロイレインボーデプロイカナ...

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が起動

参考

タイトルとURLをコピーしました