(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Kubernetes】Recreateを指定するデプロイ方法

スポンサーリンク

やりたいこと

Kubernetesにおいて以下のようなロールアウト機能を用いたデプロイではなく

全てのポッドを一気に変更したい。

環境情報
  • Windows 10 Enterprise
  • Docker Desktop 2.2.0

やり方

deploymentのyamlファイルに以下の文言を追記する。

  strategy:
    type: Recreate

以下、解説です。

解説

冒頭の参考記事にあるように指定をせずにkubectl apply -f deployment.yamlを行うとローリングアップデート(RollingUpdate)と呼ばれる順々に新しいポッドが増えていきます。

一方で旧Podを全て落として一気に新Podを上げる必要がある要件もあるかと思います。

Kubernetesには以下のように「RollingUpdate」と「Recreate」が選択できるので

RollingUpdate:(*apps.RollingUpdateDeployment)(nil)}: supported values: "Recreate", "RollingUpdate"

そのような場合はyamlファイルに以下のように記載をすることで

spec:
  replicas: 10
  strategy:
    type: Recreate

新バージョンのマニフェストを適用すると

> kubectl apply -f .\nginx-deployment2.yaml
deployment.apps/nginx-deployment configured
> kubectl get pods
NAME                                READY   STATUS        RESTARTS   AGE
nginx-deployment-5754944d6c-5bmvv   1/1     Terminating   0          84s
nginx-deployment-5754944d6c-gkcht   1/1     Terminating   0          87s
nginx-deployment-5754944d6c-gt9ls   1/1     Terminating   0          87s
nginx-deployment-5754944d6c-jm2nq   1/1     Terminating   0          83s
nginx-deployment-5754944d6c-mrmvh   1/1     Terminating   0          87s
nginx-deployment-5754944d6c-nxplq   1/1     Terminating   0          82s
nginx-deployment-5754944d6c-rmrh2   1/1     Terminating   0          84s
nginx-deployment-5754944d6c-sfrpm   1/1     Terminating   0          87s
nginx-deployment-5754944d6c-spcn8   1/1     Terminating   0          82s
nginx-deployment-5754944d6c-xmpd8   1/1     Terminating   0          87s

旧Podは一気に落ちて新しいPodの起動を行う動きになります。

以上、ご参考になれば幸いです。