Deployments および ReplicaSets を使用してすでにクラスタにアプリケーションをデプロイしていますが、これらのリソースはデータベースなどのステートフルアプリケーションには適していません。ステートフルアプリケーションの詳細について学び、それらを Kubernetes にデプロイする方法を確認します。
Kubernetes では、ステートレスアプリケーションのデプロイが簡単です。Deployment を使用して ReplicaSet を作成し、ReplicaSet によって Pod が作成されます。1 つの Pod が失敗すると、ReplicaSet によって新しい Pod が作成されます。これらの Pod は、その仕様および適用されたラベルに基づいて識別されます。ただし、ReplicaSet によって作成された Pod には、名前の末尾にランダムなハッシュが割り当てられます (例: hello-kyma-59fd556764-fkr6d)。これは、Pod がステートレスであり、同じ仕様およびラベルを持つ他の Pod に置き換えることができるためです。
代わりに、ステートフルアプリケーションには、安定したホスト名など、一意で整合性のある識別子が必要になることがよくあります。これにより、ReplicaSets はランダムに新しい名前が割り当てられるため、Pod を識別して接続することが困難になるため、ReplicaSets の性質が問題になります。このため、Kubernetes では StatefulSets が提供されます。
ワークロードで以下の 1 つまたは複数の機能が必要な場合は、正式な Kubernetes 文書に基づいて StatefulSets を使用できます。
- 安定したユニークなネットワーク識別子
- 安定かつ永続的なストレージ
- オーダー済み、適切なデプロイメント、およびスケーリング
- 自動ローリング更新の順序付け
そのため、StatefulSet は、再スケジュール全体で Kubernetes が維持する一意の永続的な ID と安定したホスト名を持つ Pod のグループを管理します。
