StatefulSet を作成する

StatefulSet は、個々のポッド ライフサイクルを超えて、アプリケーションの状態を保守します。 デプロイと同様に、StatefulSet は、一意の永続的な ID と安定したホスト名をもつ、少なくとも 1 つの同一のポッドを作成して管理します。 StatefulSet のレプリカは、デプロイ、スケーリング、およびアップグレードに対するシーケンシャル アプローチに従います。

StatefulSet は、安定した一意の識別子、永続ストレージ、順序付けされたデプロイ、スケーリングを必要とするアプリケーションにとって有用です。 このようなアプリの例としては、MySQL、MongoDB、Kafka、Cassandra があります。 Apache や Tomcat などのステートレス アプリケーションでは、使用しているネットワークが関心の対象となることはなく、永続的なストレージを必要とすることもありません。

StatefulSets の主なコンポーネントは、永続ボリューム プロビジョナーとヘッドレス サービスです。 詳細については、StatefulSets を参照してください。

StatefulSet を作成する

kubectl create コマンドまたは kubectl apply コマンドを使用して StatefulSet を作成します。次に例を示します。

kubectl create –f statefulset.yaml

同じマニフェスト YAML ファイルで、StatefulSet で使用されるヘッドレス サービスを作成することもできます。

StatefulSet 用に作成したコンポーネントを表示するには、次のコマンドを実行します。

kubectl get statefulset

永続ボリュームを表示する場合は kubectl get pv を実行し、永続ボリューム要求を表示する場合は kubectl get pvc を実行します。

StatefulSet を更新する

StatefulSet を更新するには、マニフェスト ファイルを編集し、StatefulSet の作成時に使用した同じコマンド kubectl apply –f statefulset.yaml を実行します。 更新の方法として、OnDelete 更新またはローリング更新のいずれかを使用できます。 OnDelete 更新では、マニフェストを適用するときにポッドの置き換えは行われませんが、新しいバージョンが作成される前に、既存の StatefulSet ポッドを手動で削除する必要があります。 ローリング更新では、マニフェストを適用すると、StatefulSet ポッドが削除され、逆の序数の順序で置き換えられます。

StatefulSet を削除する

kubectl delete コマンドを使用して StatefulSet を削除し、ヘッドレス サービスを個別に削除します。 StatefulSet を削除するには、次のコマンドを実行します。

kubectl delete statefulset <statefulset_NAME>

次に、ヘッドレス サービスを削除するには、次のコマンドを実行します。

kubectl delete service <svc_NAME>

永続ボリュームと永続ボリューム要求を削除するには、それぞれ kubectl delete pvkubectl delete pvc を使用します。 データ損失を防ぐために、StatefulSet が削除された場合、永続ボリュームおよび永続ボリューム要求は削除されません。

次の手順