SPONSORED

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の順序や永続ストレージが重要です。

SPONSORED