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

Container Service for Kubernetes:CPU抑制を有効にする

最終更新日:Nov 19, 2024

動的リソースのオーバーコミットシナリオでは、高優先度の保証アプリケーションまたはバースト可能アプリケーションの未使用リソースを低優先度のBestEffortタスクにオーバーコミットできます。 BestEffort (BE) ポッドのCPU使用率を妥当な範囲内に維持するために、Container Service for Kubernetes (ACK) にはCPU抑制機能が用意されています。これにより、ノード上のレイテンシに敏感な (LS) ポッドの安定した動作に優先順位を付けることができます。

説明

CPU抑制を有効にする理由

クラスタリソースの使用を強化するために、動的リソースオーバーコミットモデルは、高優先度のLSタスク用のリソースバッファを予約して、アップストリームおよびダウンストリームリンクにおける負荷変動を管理する一方で、オーバーコミットされたリソースを低優先度のBEタスクに割り当てることを可能にする。 ノード上のLSポッドに十分なCPUリソースを確保するために、ack-koordinatorを使用して、ノード上のBEポッドのCPU使用率を制限できます。 CPU抑制機能は、ノードのリソース使用率を指定されたしきい値未満に維持し、beポッドで使用できるCPUリソースの量を制限できます。 これにより、ノード上のコンテナの安定性が保証されます。 CPU抑制機能は、ノードの全体的なリソース使用量がしきい値を下回った場合に、BEポッドによって使用されるCPUリソースの量を制限できます。 これにより、ノード上のコンテナが安定して実行するのに十分なリソースを確保できます。

次のリストは、図で使用される用語を説明しています。

  • CPUしきい値: ノードのCPU使用率しきい値。

  • ポッド (LS).Usage: LSポッドのCPU使用率。

  • BEのCPU制限: BEポッドのCPU使用率。

beポッドで使用できるCPUリソースの量は、LSポッドのCPU使用率の変動に基づいて調整されます。 動的リソースオーバーコミットメントモデルでは、CPUしきい値と予約済みCPU透かしに同じ値を使用することを推奨します。 これにより、CPUリソース使用率の一貫したレベルが保証されます。

image

前提条件

  • ACK Proクラスターが作成されました。 詳細については、「ACK Proクラスターの作成」をご参照ください。

  • ack-koordinator 0.4.0以降がインストールされます。 ack-koordinatorのインストール方法の詳細については、「ack-koordinator (ack-slo-manager) 」をご参照ください。

課金

ack-koordinatorコンポーネントをインストールまたは使用する場合、料金はかかりません。 ただし、次のシナリオでは料金が請求される場合があります。

  • ack-koordinatorは、インストール後にワーカーノードリソースを占有する管理対象外のコンポーネントです。 コンポーネントのインストール時に、各モジュールが要求するリソースの量を指定できます。

  • 既定では、ack-koordinatorは、リソースプロファイリングや細粒度スケジューリングなどの機能のモニタリングメトリックをPrometheusメトリックとして公開します。 ack-koordinatorのPrometheusメトリクスを有効にし、PrometheusのManaged Serviceを使用する場合、これらのメトリクスはカスタムメトリクスと見なされ、料金が課金されます。 料金は、クラスターのサイズやアプリケーションの数などの要因によって異なります。 Prometheusメトリクスを有効にする前に、Prometheusのマネージドサービスの課金トピックを読んで、カスタムメトリクスの無料クォータと課金ルールについて確認することをお勧めします。 リソース使用量を監視および管理する方法の詳細については、「観察可能なデータ量と請求書の照会」をご参照ください。

手順

ConfigMapを使用して、クラスターレベルでCPU抑制機能を有効にできます。 さらに、CPU抑制を有効にしたノードのCPU使用率のしきい値 (cpuSuppressThresholdPercent) などの関連パラメーターをConfigMapで設定して、きめ細かいリソース管理を実現できます。

  1. 次のconfigmapコンテンツに基づいて、ConfigMap. yamlという名前のファイルを作成します。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ack-slo-config
      namespace: kube-system
    data:
      # Enable CPU Suppress.
      resource-threshold-config: |
        {
          "clusterStrategy": {
            "enable": true
          }
        }
  2. ack-slo-config ConfigMapがkube-system名前空間に存在するかどうかを確認します。

    • ack-slo-config ConfigMapが存在する場合は、PATCHメソッドを使用してConfigMapを更新することを推奨します。 この方法では、ConfigMapの他の設定は変更されません。

      kubectl patch cm -n kube-system ack-slo-config --patch "$(cat configmap.yaml)"
    • ack-slo-config ConfigMapが存在しない場合は、次のコマンドを実行してack-slo-configという名前のConfigMapを作成します。

      kubectl apply -f configmap.yaml
  3. 次のコマンドを実行して、ノードのBEポッドに割り当てられているCPUコアを照会します。

    cat /sys/fs/cgroup/cpuset/kubepods.slice/kubepods-besteffort.slice/cpuset.cpus

    期待される出力:

    10-25,35-51,62-77,87-103

    予想される出力は、次のCPUコアがノードのBEポッドに割り当てられていることを示しています: 10-25,35-51,62-77,87-103。 これは、現在のリソース使用量に基づいて、CPU Suppressを有効にした後、BEポッドの使用可能なCPUリソースが制限されることを示します。

  4. オプション: 次のConfigMapコンテンツに基づいて詳細パラメーターを設定します。

    CPU Suppressを使用すると、CPU使用率のしきい値をさらに設定できます。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ack-slo-config
      namespace: kube-system
    data:
      resource-threshold-config: |
        {
          "clusterStrategy": {
            "enable": true,
            "cpuSuppressThresholdPercent": 65
          }
        }

    次の表に、主要なパラメーターを示します。

    パラメーター

    タイプ

    値の範囲

    説明

    enable

    Boolean

    • true

    • false

    • true: CPU Suppressを有効にします。

    • false: CPU Suppressを無効にします。

    cpuSuppressThresholdPercent

    Integer

    [0, 100]

    ノードのCPU使用率のしきい値。 デフォルト値: 65 単位: % 。