1.1.3 ReplicaSet、Deployment、StatefulSetコントローラ

Kubernetesには、Kubernetesクラスタ内のポッドの設定方法とデプロイ方法を定義するために使用できる様々なコントローラが備わっています。こうしたコントローラは、実行時のニーズに応じてポッドをグループ化することと、ポッドのレプリケーションとポッドの開始順序を定義することを目的に使用できます。

レプリケートする必要があるポッドのセットは、ReplicaSetで定義できます。これにより、グループ内の各ポッドに整合性のある構成を定義することと、それらのポッドがアクセスするリソースを定義することが可能になります。ReplicaSetを使用することで、アプリケーションのスケーリングと再スケジュールが簡単になるだけでなく、アプリケーションのローリング更新やマルチトラック更新の実行も可能になります。ReplicaSetの詳細は、次の場所にあるアップストリームのドキュメントを参照してください。

https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/

Deploymentは、ポッドとReplicaSetを管理するために使用できます。Deploymentは、ReplicaSetに変更をロール・アウトする必要があるときに役立ちます。DeploymentReplicaSetの管理に使用することで、以前のDeploymentリビジョンに簡単にロールバックできます。Deploymentを使用すると、ReplicaSetの新しいリビジョン作成して、既存のポッドを以前のReplicaSetから新しいリビジョンに移行できます。その後、Deploymentでは、不要になった古いReplicaSetのクリーン・アップを管理できます。Deploymentの詳細は、次の場所にあるアップストリームのドキュメント参照してください。

https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

StatefulSetは、起動順序と一意識別子が保証されるポッドを作成するために使用できます。この識別子は、StatefulSetのライフサイクルを通じてポッドのIDを維持するために使用されます。この機能により、一般的な永続コンポーネント(ストレージやネットワーキング)が保証されるため、Kubernetes内でステートフル・アプリケーションを実行できるようになります。さらに、ポッドの作成時に、それらのポッドは常に同じ順序で作成され、ホスト名と内部クラスタDNSに適用される識別子が割り当てられます。こうした識別子により、環境内のポッドに不変の予測可能なネットワークIDが存在することを保証します。StatefulSetの詳細は、次の場所にあるアップストリームのドキュメントを参照してください。

https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/