StatefulSet(すてーとふるせっと)
最終更新:2026/4/25
StatefulSetは、Kubernetesにおけるワークロード管理オブジェクトであり、順序付けられた、一意なPodの展開と管理を可能にする。
別名・同義語 ステートフルセット
ポイント
StatefulSetは、データベースなどのステートフルなアプリケーションに適しており、Podの永続的な識別子と安定したストレージを提供することで、データの整合性を保つ。
StatefulSetとは
StatefulSetは、Kubernetesでステートフルなアプリケーションを管理するためのリソースオブジェクトです。ステートフルなアプリケーションとは、データを永続化し、Pod間で状態を共有する必要があるアプリケーション(データベース、メッセージキューなど)を指します。
StatefulSetの主な特徴
- 順序付けられたPodの展開とスケーリング: Podは、定義された順序で作成、更新、削除されます。これにより、アプリケーションの初期化やシャットダウンの順序を制御できます。
- 安定したネットワーク識別子: 各Podには、一意で安定したホスト名が割り当てられます。これにより、Podが再起動しても、同じネットワーク識別子を維持できます。
- 永続ストレージ: 各Podには、永続ボリュームクレーム(PVC)を介して、専用の永続ストレージが割り当てられます。これにより、Podが再起動しても、データが失われることはありません。
- ヘッドレスサービスとの連携: StatefulSetは、ヘッドレスサービスと連携して、Podのネットワーク識別子を解決します。
StatefulSetのユースケース
- データベース: MySQL、PostgreSQL、MongoDBなどのデータベースクラスタの管理
- メッセージキュー: Kafka、RabbitMQなどのメッセージキューの管理
- 分散ストレージ: Ceph、GlusterFSなどの分散ストレージシステムの管理
Deploymentとの違い
StatefulSetとDeploymentは、どちらもKubernetesでアプリケーションを管理するためのリソースオブジェクトですが、主な違いは、ステートフルなアプリケーションを扱うかどうかにあります。Deploymentは、ステートレスなアプリケーション(Webサーバーなど)に適しており、Podの順序や永続ストレージは重要ではありません。一方、StatefulSetは、ステートフルなアプリケーションに適しており、Podの順序や永続ストレージが重要です。