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の同時実行がサポートされていないアプリケーションの場合に、利用することが多い。ステートフルなアプリケーションに適用しやすい。
以上です。