DeploymentにおけるRollingとRecreateの違い

KubernetesにおけるDeploymentのデプロイ戦略にはRollingとRecreateがあります。今日はそれぞれの違いについて共有致します。

本記事は、以下のKubernetes公式ドキュメントを参考にしています。
https://kubernetes.io/ja/docs/concepts/workloads/controllers/deployment/

  • Rollingとは
  • Recreateとは
  • RollingとRecreateのユースケース

Rollingとは


Rollingとは、古いPodへのアクセスを新しく起動したPodに切り替えるデプロイ方法です。サービス提供中のPodは、新しいPodが起動するまでの間に停止することがないので、ダウンタイムを最小限に抑えることができます。

Recreateとは


Recreateは、サービス提供中のPod停止後に新しいPodを起動するデプロイ方法です。これまでのサーバー運用と同様に、アップデートにダウンタイムが発生します。

RollingとRecreateのユースケース


RollingとRecreateのユースケースを検討します。

Rollingはダウンタイムを最小限に抑えられる一方で、古いPodと新しいPodが同時に存在することになります。一方で、Recreateは新旧のPodが混在することはありませんが、ダウンタイムがRollingと比較して長い傾向にあります。

整理すると、以下のようにユースケースを分けられます。

  • Rolling・・・ダウンタイムを最小限に抑えたい場合、あるいは新旧Podの同時実行がサポートされているアプリケーションの場合に、利用することが多い。ステートレスなアプリケーションが適用しやすい。
  • Recreate・・・PersistentVolumeがRWOであったり、新旧Podの同時実行がサポートされていないアプリケーションの場合に、利用することが多い。ステートフルなアプリケーションに適用しやすい。

以上です。