0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DeploymentとStatefulSetのPodのスケールと更新のストラテジーの違い

Last updated at Posted at 2023-03-25

KubernetesにはPodを管理するリソースとして、DeploymentとStatefulSetの2つが挙げられます。これらのPodのスケールと更新のストラテジーにおける違いについてまとめると次の表のようになります。

Deployment StatefulSet
スケール なし OrderedReady or Parallel
更新 RollingUpdate or Recreate RollingUpdate or OnDelete

Podのスケール

DeploymentはPodをスケールする時、選択できるストラテジーはありません。Podの数を増減する場合には常に並列的に行われます。実際、DeploymentがPodを増減しているのではなく、Deploymentが管理しているReplicaSetが行っているのであり、この動作はReplicaSetによるものです。

一方で、StatefulSetはOrderedReadyとParallelの2つのストラテジーがあります。Deploymentと異なり、StatefulSetはPodを直接管理しています。

  • OrderedReadyはReadinessProbeを監視しつつ、一つずつPodを増減します。
  • ParallelはDeploymentのスケールと同様、Podを並列的に増減させます。

Podの更新

DeploymentはRollingUpdateとParallelの2つのストラテジーがあります。

  • RollingUpdateは段階的に古いPodから新しいPodへ以降する方法です。ダウンタイムは発生しないので本番環境では積極的に使われるストラテジーだと思います。
  • Recreateは全てのPodを一度に削除し、一度に作成する方法です。Podの数が0になる時間が発生するのでダウンタイムが発生します。

StatefulSetもRollingUpdateとOnDeleteの2つのストラテジーがあります。

  • RollingUpdateは一つずつPodを更新する方法です。Deploymentと同じ名前を持つストラテジーですが、Deploymentは任意の数で更新できるのに対し、StatefulSetは一つずつであるという違いがあります。
  • OnDeleteは手動で削除されたPodが更新される方法です。更新をよりコントロールしたい場合、こちらのほうが適切でしょう。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?