【Kubernetes】Recreateをやってみる
2022.03.02
2024.03.24
Kubernetes
Recreate
はじめに
Kubernetesのデプロイ戦略として、Recreateを実際に動かして試してみます。
Kubernetesでの代表的なデプロイ戦略については、下記でざっくりまとめています。
【Kubernetes】デプロイ戦略についてざっくり理解する
:::affiliate-message 本ページはAmazonアフィリエイトのリンクを含みます。
Recreateとは
Recreateは、全てのPodを同時に終了し、新しいバージョンのPodを同時に起動するデプロイ方法です。
メリット | デメリット |
---|---|
・異なるバージョンが同時に実行されない | ・ダウンタイムがある |
Deploymentのマニフェストで下記のように設定するだけです。
1spec:
2 strategy:
3 type: Recreate
実際に試してみる
実際にRecreateしてみます。
まずは、Deploymentのマニフェストdeployment.yml
を作成します。
1apiVersion: apps/v1
2kind: Deployment
3metadata:
4 name: myapp
5 labels:
6 app: myapp
7spec:
8 replicas: 10
9 strategy:
10 type: Recreate # Recreateの設定
11 selector:
12 matchLabels:
13 app: myapp
14 template:
15 metadata:
16 labels:
17 app: myapp
18 spec:
19 containers:
20 - name: web-container
21 image: nginx:1.20
22 ports:
23 - containerPort: 80
マニフェストを適用してDeploymentをデプロイします。
1kubectl apply -f deployment.yml
Deploymentを確認すると10個のレプリカがあることがわかります。
1❯ kubectl get deploy
2NAME READY UP-TO-DATE AVAILABLE AGE
3myapp 10/10 10 10 11s
マニフェストのイメージのバージョンを変更して、反映します。
1image: nginx:1.21
1kubectl apply -f deployment.yml
Deploymentを確認してみると、一度全てのPodが全て削除してから、新しいPodが起動していることがわかります。
1❯ kubectl get deploy -w
2NAME READY UP-TO-DATE AVAILABLE AGE
3myapp 10/10 10 10 2m41s
4myapp 10/10 0 10 2m42s
5myapp 0/10 0 0 2m50s # 全てのPodがすべて終了し、起動しているPodがなくなる
6myapp 0/10 10 0 2m50s
7myapp 1/10 10 1 2m56s # 徐々に新しいPodが起動
8myapp 2/10 10 2 2m57s
9myapp 3/10 10 3 2m57s
10myapp 4/10 10 4 2m58s
11myapp 5/10 10 5 2m58s
12myapp 6/10 10 6 2m58s
13myapp 7/10 10 7 2m59s
14myapp 8/10 10 8 2m59s
15myapp 9/10 10 9 3m
16myapp 10/10 10 10 3m # 全ての新しいPodが起動
参考
Share
関連記事
【Kubernetes】kubectl diffで差分チェック
2022.02.16
【Kubernetes】StatefulSetについて理解する
2023.02.23
【kustomize】ConfigMap作成時にglobでファイル指定
2022.03.24
【kubectl-neat】すっきりしたマニフェストを取得する
2023.12.09