すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ワークロードのデプロイDeploy a workload

最終更新日:Jan 02, 2025

Kubernetesワークロードは、Kubernetesクラスターでアプリケーションまたはサービスを実行するポッドとコンテナーのセットです。 ポッドの安定性とサービスの継続性を確保するために、ワークロードのデプロイ、スケーリング、更新、復元などの操作をワークロードで実行できます。 このトピックでは、Deployment、StatefulSet、Job、CronJobなど、さまざまな種類のKubernetesワークロードについて説明します。

ポッド

ポッドは、Kubernetesでアプリケーション用に作成または管理できる最小の配置可能単位です。 ポッドは、1つ以上のコンテナ、ストレージリソース、一意のIPアドレス、およびコンテナの実行方法を指定する構成をカプセル化します。 ほとんどの場合、Kubernetesユーザーは直接ポッドを作成しません。 代わりに、Kubernetesでは、DeploymentsやStatefulSetsなどのコントローラーを使用してポッドを管理できます。

image

デプロイメントとStatefulSets

デプロイ

以前は、KubernetesはReplicaSetコントローラーを使用して、レプリケートされたポッド、ラベルセレクター、およびポッドテンプレートの数を指定していました。 現在、KubernetesはDeploymentコントローラーを使用してReplicaSetコントローラーを管理しています。 これにより、Kubernetesはポッドを間接的に管理および制御できます。

image

デプロイメントは、マイクロサービスアーキテクチャを使用するwebサーバーやアプリケーションなど、データの永続性や要求の順序に影響されないシナリオに適しています。

シナリオ

説明

ステートレスwebサービス

変動するリクエストを処理する必要があるフロントエンドwebサービス。 デプロイは、ポッドの水平方向のスケーリング、更新、およびロールバックをサポートします。

マイクロサービスアーキテクチャを使用するアプリケーション

複数のマイクロサービスで構成されるシステムは、各サービスを個別にデプロイします。 各サービスには、独立したライフサイクルと独立したスケーリング要件があります。 デプロイメントを使用して、各マイクロサービスを個別にデプロイできます。

StatefulSet

展開によって管理されるポッドはステートレスであり、互いに独立しています。 特定のシナリオでは、デプロイメントが要件を満たすことができません。 たとえば、アクティブ /スタンバイモードの分散データベース用に作成されたポッドはステートフルで、相互に依存します。 この場合、StatefulSetsを使用してポッドを管理できます。

image

StatefulSetsは、データベースや分散ストレージシステムなど、永続ストレージと順序付き展開が必要なシナリオに適しています。

シナリオ

説明

Statefulデータベース

ほとんどのステートフルデータベースは永続的なストレージを必要とし、ポッドが再スケジュールされた後も同じネットワーク識別子とポッドデータを維持する必要があります。 たとえば、MySQLデータベース用に作成された各ポッドには、ポッドの再起動後も変更されない特定のデータと設定が必要です。

分散メッセージキューサービス

分散メッセージキューサービスには、ノードステータスの一貫性とログの永続性が必要です。 たとえば、Apache Kafkaでは、ブローカーノード間で厳密なデータ一貫性が必要です。 さらに、データの損失を防ぐために、ログを永続ボリューム (PV) に永続化する必要があります。

デプロイメントとStatefulSetsの違い

次の表では、DeploymentsとStatefulSetsを比較して、DeploymentsとStatefulSetsを選択できます。

項目

デプロイ

StatefulSet

シナリオ

webサーバーやAPIサービスなどのステートレスアプリケーションを対象としています。 デプロイは、迅速なスケーリングとローリング更新が必要なシナリオに適しています。

データベースや分散ファイルシステムなどのステートフルアプリケーションを対象としています。 StatefulSetsは、永続ストレージと順序付きデプロイが必要なシナリオに適しています。

永続ストレージ

すべてのレプリケートされたポッドは、同じ永続ボリュームクレーム (PVC) を共有します。 ポッドが再スケジュールまたは更新されても、データの一貫性を確保するために、元のPVCはポッドにマウントされます。

各ポッドは、データの永続性を実現するために個別のPVCでマウントされます。 ポッドは、データの一貫性を確保するために固定形式で名前が付けられます。 ポッドを再起動または再スケジュールしても、元のPVCはまだポッドにマウントされています。

ネットワーク識別子

ポッドには固定識別子がありません。 ポッドの名前とIPアドレスは、作成時に動的に生成されます。 ポッドの識別子、名前、およびIPアドレスは、ポッドが再作成されるたびに変更されます。

ポッドの識別子は、<StatefulSet name>-<Serial number> 形式です。 例: web-0およびweb-1 ポッドの名前は、ポッドの再起動後も変更されません。

ポリシーの更新

  • ローリングアップデート:

    ローリングアップデート中に、古いポッドは新しいポッドにプログレッシブな方法で置き換えられ、アップデート中のサービスの可用性を確保します。

  • レクリエーション:

    システムが新しいポッドを作成する前に、古いポッドはすべて削除されます。 その結果、更新中にサービスの中断が発生します。 この更新ポリシーは、古いポッドと新しいポッドが共存できないシナリオに適しています。

  • ローリングアップデート:

    ポッドはシリアル番号の順に更新されます。 システムは、前のポッドが更新されて準備完了状態になった後にのみ、ポッドの更新を開始します。

  • レクリエーション:

    ポッドを手動で削除してレクリエーションをトリガーする必要があります。 この更新ポリシーは、厳密な更新が必要なシナリオに適しています。

サービス検出

さまざまなサービスタイプに基づいてサービス検出を実装し、ポッドの負荷分散を実行します。 詳細については、「クイックスタート」をご参照ください。

各ポッドには、一意の固定ドメイン名があります。 StatefulSetsは、ヘッドレスサービスを使用してサービス検出を実装し、各ポッドに直接アクセスできるようにします。

DaemonSets

DaemonSetは、クラスター内の各ノードがレプリケートされたポッドを実行することを保証します。 DaemonSetsは、ログ収集サービス、リソース監視システム、ネットワークプラグインなど、すべてのノードで実行する必要があるバックグラウンドサービスまたは監視プロセスに適しています。 ノードがクラスターに追加またはクラスターから削除されると、DaemonSetは自動的にノードにポッドを作成するか、ノードからポッドを削除します。

image

DaemonSetsは、Kubernetesクラスターの各ノードで同じデーモンを実行するのに適しています。

シナリオ

説明

ログ収集

DaemonSetsは、Logtailなどのログ収集ツールのデプロイに適しています。 各ノードのログファイルを収集し、処理し、集中ログ管理システムに配信できるように、クラスタ内の各ノードでログ収集ツールを実行する必要があります。

監視エージェント

DaemonSetsは、リソース使用量メトリックを収集するNode ExporterやDatadog AgentなどのPrometheusモニタリングエージェントをデプロイするために使用されます。 これにより、ノードのステータスとパフォーマンスを監視できます。

求人とCronJobs

Kubernetesでは、ジョブは1回限りのタスクの実行に使用され、CronJobsはスケジュールされたタスクの実行に使用されます。 ジョブとCronJobsは、バッチ処理タスクやデータ処理ジョブなど、オンデマンドで実行されるワークロードに適しています。

  • ジョブは、タスクを実行するための1つ以上のポッドを作成します。 タスクが完了すると、ジョブによって作成されたポッドは自動的に終了します。 ジョブは、データ処理タスクやデータバックアップタスクなどの1回限りのタスクに適しています。

  • CronJobは、cron式で指定されたスケジュールに基づいてジョブを作成します。 cron式は、分、時間、日、週、および月の組み合わせをサポートします。 CronJobsは、定期的なデータベースバックアップタスクや定期的なログ削除タスクなどの定期的なタスクに適しています。

ワークロードの管理

ACKクラスターでワークロードを管理するには、API操作を呼び出すか、kubectlコマンドラインツールを使用するか、ACKコンソールを使用します。 これらの方法を使用して、アプリケーションを効率的にデプロイ、監視、およびスケーリングできます。

ACKコンソールの使用

ACKコンソールを使用して、効率的、便利、視覚化された方法でワークロードを作成、管理、および監視できます。 次のトピックでは、ACKコンソールでさまざまなタイプのワークロードを管理する方法について説明します。

kubectlの使用

クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続できます。 その後、ビジネス要件に基づいてクラスターを管理できます。 たとえば、アプリケーションのデプロイ、リソースの管理、クラスターのモニタリングなどを行うことができます。

API

API操作を呼び出すことで、ワークロードを作成、更新、削除、および監視できます。 詳細については、「Kubernetes APIの使用」をご参照ください。

よくある質問

ワークロードの使用中に問題が発生した場合は、ソリューションのFAQ about workloadsを参照してください。

関連ドキュメント