ステートレス ワークロードをスケーリングする

このドキュメントでは、Google Distributed Cloud(GDC)のエアギャップ Kubernetes クラスタで実行されている既存のステートレス ワークロードをスケーリングする方法について説明します。コンテナ ワークロードの要件の進化に合わせて、ステートレス ワークロードで実行されている Pod をスケーリングする必要があります。

このドキュメントは、組織のアプリケーション ワークロードの管理を担当するアプリケーション オペレーター グループのデベロッパーを対象としています。詳細については、GDC のエアギャップ環境のユーザー グループのドキュメントをご覧ください。

始める前に

Kubernetes クラスタに対してコマンドを実行するには、次のリソースがあることを確認してください。

  1. Kubernetes クラスタ名を確認するか、プラットフォーム管理者にクラスタ名を確認します。

  2. まだ Kubernetes クラスタの kubeconfig ファイルがない場合は、ログインして生成します。

  3. これらの手順では、Kubernetes クラスタの kubeconfig パスを使用して KUBERNETES_CLUSTER_KUBECONFIG を置き換えます。

ステートレス ワークロードをスケーリングするために必要な権限を取得するには、組織の IAM 管理者に、プロジェクトの Namespace で Namespace 管理者ロール(namespace-admin)を付与するよう依頼してください。

Deployment をスケールする

Kubernetes のスケーリング機能を利用して、デプロイで実行されている Pod の量を適切にスケーリングします。

Deployment の Pod を自動スケーリングする

Kubernetes は自動スケーリングを提供し、需要の変化に応じてデプロイを手動で更新する必要をなくします。この機能を有効にするには、デプロイで水平 Pod 自動スケーラーを設定します。

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    autoscale deployment DEPLOYMENT_NAME \
    --cpu-percent=CPU_PERCENT \
    --min=MIN_NUMBER_REPLICAS \
    --max=MAX_NUMBER_REPLICAS

次のように置き換えます。

  • KUBERNETES_CLUSTER_KUBECONFIG: クラスタの kubeconfig ファイル。

  • NAMESPACE: プロジェクトの Namespace。

  • DEPLOYMENT_NAME: 自動スケーリングするデプロイの名前。

  • CPU_PERCENT: すべての Pod でリクエストする平均 CPU 使用率の目標値(パーセント)。

  • MIN_NUMBER_REPLICAS: オートスケーラーがプロビジョニングできる Pod 数の下限。

  • MAX_NUMBER_REPLICAS: オートスケーラーがプロビジョニングできる Pod 数の上限。

新しく作成された水平 Pod 自動スケーラーの現在のステータスを確認するには、次のコマンドを実行します。

kubectl get hpa

出力は次のようになります。

NAME              REFERENCE                          TARGET    MINPODS   MAXPODS   REPLICAS   AGE
DEPLOYMENT_NAME   Deployment/DEPLOYMENT_NAME/scale   0% / 50%  1         10        1          18s

Deployment の Pod を手動でスケーリングする

デプロイを手動でスケーリングする場合は、次のコマンドを実行します。

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
    -n NAMESPACE \
    scale deployment DEPLOYMENT_NAME \
    --replicas NUMBER_OF_REPLICAS

次のように置き換えます。

  • KUBERNETES_CLUSTER_KUBECONFIG: クラスタの kubeconfig ファイル。

  • NAMESPACE: プロジェクトの Namespace。

  • DEPLOYMENT_NAME: 自動スケーリングするデプロイの名前。

  • DEPLOYMENT_NAME: デプロイ内の複製された Pod オブジェクトの目的の数。