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

Container Service for Kubernetes:リソースプロファイリングに基づいてコンテナーのリソース構成提案を提供する

最終更新日:Dec 12, 2024

Container Service for Kubernetes (ACK) は、Kubernetesネイティブワークロードのリソースをプロファイルし、リソース使用量の履歴データに基づいてコンテナーのリソース構成の提案を提供できます。 これにより、リソース要求の設定とコンテナの制限が大幅に簡素化されます。 このトピックでは、ACKコンソールでリソースプロファイリングを使用する方法と、CLIでリソースプロファイリングを使用する方法について説明します。

前提条件と使用法のメモ

  • 次の要件を満たすACK Proクラスターのみが、リソースプロファイリングをサポートしています。

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

    • metrics-serverバージョン0.3.8以降がインストールされています。

    • クラスターがコンテナートランタイムとしてcontainerdを使用し、2022年1月19日の14:00 (UTC + 8) より前にクラスターノードが追加された場合、クラスターノードを削除してクラスターに再追加するか、クラスターのKubernetesバージョンを最新バージョンに更新する必要があります。 詳細については、「既存のECSインスタンスのACKクラスターへの追加」および「ACKクラスターの手動アップグレード」をご参照ください。

  • リソースプロファイリングは、Cost Suiteモジュールでパブリックプレビューできます。 リソースプロファイリングに直接アクセスして使用できます。

  • リソースプロファイリングの精度を確保するために、システムがデータを収集するためのリソースプロファイリングを有効にしてから少なくとも1日待つことをお勧めします。

課金ルール

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

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

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

Introduction to resource profiling

Kubernetesでは、コンテナーのリソースリクエストを記述して、コンテナーリソースを管理できます。 コンテナーのリソース要求を指定した後、スケジューラはリソース要求を各ノードの割り当て可能なリソースと照合して、コンテナーがスケジュールされるノードを決定します。 リソース要求を手動で指定する場合は、コンテナーのリソース使用率とストレステストの履歴を参照できます。 コンテナの作成後に、コンテナのパフォーマンスに基づいてリソース要求を調整することもできます。

ただし、次の問題が発生する可能性があります。

  • アプリケーションの安定性を確保するには、アップストリームとダウンストリームのワークロードの変動を処理するために、特定の量のリソースをバッファとして予約する必要があります。 その結果、コンテナーに指定したリソースリクエストのリソース量が、コンテナーで使用されている実際のリソース量を大幅に超える場合があります。 これにより、クラスター内のリソース使用率が低くなり、リソースが無駄になります。

  • クラスターが多数のポッドをホストしている場合、個々のコンテナーに対するリソース要求を減らして、クラスターのリソース使用率を高めることができます。 これにより、より多くのコンテナをノードにデプロイできます。 ただし、トラフィックが急増すると、アプリケーションの安定性に悪影響を及ぼします。

この問題を解決するために、ack-koordinatorはワークロードのリソースプロファイルを提供します。 リソースプロファイルに基づいて、個々のコンテナのリソース構成の提案を取得できます。 これにより、コンテナのリソース要求と制限を設定する作業が簡単になります。 ACKコンソールにはリソースプロファイリング機能が組み込まれており、ポッドのリソースリクエストが適切に設定されているかどうかをすばやく確認し、必要に応じてリソース設定を調整できます。 CLIを使用してCustomResourceDefinitions (CRD) を作成し、リソースプロファイルを管理することもできます。

ACKコンソールでのリソースプロファイリングの使用

手順1: リソースプロファイリングコンポーネントのインストール

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[コストスイート] > [コスト最適化] を選択します。

  3. [コスト最適化] ページで、[リソースプロファイリング] タブをクリックし、[リソースプロファイリング] セクションの指示に従ってこの機能を有効にします。

    • ページの指示に従って、ack-koordinatorコンポーネントをインストールまたは更新します。 リソースプロファイリングを初めて使用する場合は、ack-koordinatorコンポーネントをインストールする必要があります。

      説明

      0.7.0より前のack-koordinatorバージョンを使用する場合は、移行と更新を実行する必要があります。 詳細については、「マーケットプレイスページからアドオンページへのack-koordinatorの移行」をご参照ください。

    • リソースプロファイリングを初めて使用する場合は、コンポーネントをインストールまたは更新した後、[デフォルト設定] を選択してすべてのワークロードのリソースプロファイリングを有効にすることを推奨します。 [プロファイル設定] をクリックすると、リソースプロファイリングの適用範囲を後で変更できます。

  4. [リソースプロファイリングの有効化] をクリックして、[リソースプロファイリング] タブに移動します。

手順2: リソースプロファイリングポリシーの管理

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[コストスイート] > [コスト最適化] を選択します。

  3. [コスト最適化] ページで、[リソースのプロファイリング] タブをクリックし、[設定のプロファイリング] をクリックします。

    [グローバル設定] または [カスタム設定] を選択できます。 リソースプロファイリングコンポーネントのインストール時に選択したデフォルト設定は、グローバル構成に属します。 [グローバル設定] を選択して設定を変更し、[OK] をクリックして変更を適用します。

    グローバル設定モード (推奨)

    グローバル構成モードでは、デフォルトでarms-promおよびkube-system名前空間以外のワークロードに対してリソースプロファイリングが有効になります。image.png

    パラメーター

    説明

    有効値

    除外された名前空間

    リソースプロファイリングを無効にする名前空間。 ほとんどの場合、システムコンポーネントの名前空間のリソースプロファイリングは無効になっています。 グローバル構成を変更すると、リソースプロファイリングは、除外された名前空間に属していない指定された型のワークロードに対してのみ有効になります。

    クラスター内で1つ以上の既存の名前空間を指定できます。 デフォルトでは、kube-systemおよびarms-prom名前空間が指定されます。

    ワークロードタイプ

    リソースプロファイリングが有効になっているワークロードの種類。 グローバル構成を変更すると、リソースプロファイリングは、除外された名前空間に属していない指定された型のワークロードに対してのみ有効になります。

    Kubernetesのワークロードタイプがサポートされています: Deployment、StatefulSet、およびDaemonSet。 1つ以上のワークロードタイプを選択できます。

    CPU冗長率 /メモリ冗長率

    リソースプロファイリングポリシーで指定されている冗長率。 詳細については、次のセクションをご参照ください。

    冗長率は0または正の値でなければなりません。 このシステムは、70% 、50% 、30% の3つの一般的に使用される冗長レートも提供します。

    カスタム設定モード

    カスタム構成モードでは、リソースプロファイリングは部分的なワークロードに対してのみ有効になります。 クラスターが大規模 (1,000ノードを超える) である場合、または部分的なワークロードのリソースプロファイリングを有効にする場合は、カスタム構成モードを選択します。 image.png

    パラメーター

    説明

    有効値

    名前空間

    リソースプロファイリングを有効にする名前空間。 カスタム構成を変更すると、選択した名前空間に属する指定された型のワークロードに対してリソースプロファイリングが有効になります。

    クラスター内の1つ以上の既存の名前空間を選択できます。

    ワークロードタイプ

    リソースプロファイリングを有効にするワークロードの種類。 カスタム構成を変更すると、選択した名前空間に属する指定された型のワークロードに対してリソースプロファイリングが有効になります。

    Kubernetesのワークロードタイプがサポートされています: Deployment、StatefulSet、およびDaemonSet。 1つ以上のワークロードタイプを選択できます。

    CPU冗長率 /メモリ冗長率

    リソースプロファイリングポリシーで指定されている冗長率。 詳細については、次のセクションをご参照ください。

    冗長率は0または正の値でなければなりません。 このシステムは、70% 、50% 、30% の3つの一般的に使用される冗長レートも提供します。

    リソースの冗長性: 管理者がアプリケーションのQPSなどのアプリケーションのワークロードを評価する場合、管理者は通常、ワークロードが100% の物理リソースを占有しないと想定します。 これは、ハイパースレッディングなどのテクノロジーでも物理リソースに制限があり、アプリケーションはピーク時のトラフィックスパイクに対処するためにリソースを予約する必要があるためです。 推奨リソース要求と元のリソース要求の差が指定された冗長度を超える場合、システムはリソース要求を減らすことを提案します。 リソースプロファイリングアルゴリズムの詳細については、「アプリケーションプロファイルの概要」をご参照ください。资源冗余

ステップ3: リソースプロファイルの表示

リソースプロファイリングポリシーを設定した後、[リソースプロファイリング] ページでワークロードのリソースプロファイルを表示できます。

リソースプロファイルの正確性を確保するために、初めてリソースプロファイリングを使用する場合は、システムがデータを収集するまで少なくとも24時間待つ必要があります。

image.png

このページには、集計されたリソースプロファイルデータと各ワークロードのリソースプロファイルが表示されます。

image.png

説明

次の表では、ハイフン (-) はN /aを示します。

説明

有効値

フィルター

ワークロード名

ワークロードの名前。

-

サポートされています。 リソースプロファイルは、ワークロード名でフィルタリングできます。

Namespaces

ワークロードが属する名前空間。

-

サポートされています。 リソースプロファイルは、名前空間でフィルタリングできます。 デフォルトでは、kube-system名前空間はフィルター条件から除外されます。

ワークロードタイプ

ワークロードのタイプ。

有効な値: Deployment、DaemonSet、およびStatefulSet。

サポートされています。 ワークロードタイプでリソースプロファイルをフィルタリングできます。 デフォルトでは、すべてのワークロードタイプがフィルタ条件として選択されます。

CPUリクエスト

ワークロードのポッドによって要求されるCPUコアの数。

-

サポートされていません。

メモリ要求

ワークロードのポッドによって要求されるメモリサイズ。

-

サポートされていません。

プロファイルデータのステータス

リソースプロファイルのステータス。

  • 収集: リソースプロファイリングコンポーネントは、履歴データを収集し、プロファイリング結果を生成しています。 ワークロードのリソースプロファイルを表示するには、リソースプロファイリングを有効にしてから少なくとも1日待ってから、その日の間にワークロードのトラフィック変動が発生することを確認することをお勧めします。

  • Normal: リソースプロファイルが生成されます。

  • Workload Deleted: ワークロードが削除されました。 ワークロードのリソースプロファイルは、一定期間後に削除されます。

サポートされていません。

CPUプロファイル /メモリプロファイル

CPUプロファイルおよびメモリプロファイルは、元のCPU要求およびメモリ要求を修正する方法についての提案を提供する。 値は、提案されたリソース要求、元のリソース要求、およびリソース冗長率に基づいて生成される。 詳細については、次のセクションをご参照ください。

有効な値: 増加、減少、および維持。 元のリソースリクエストと推奨リソースリクエストの違いの度合いを示すパーセント値。 相違度は、Abs(Suggested resource request − Original resource request)/Original resource requestの式に基づいて計算される。

サポートされています。 デフォルトでは、フィルター条件として増加と減少が選択されています。

作成時間

リソースプロファイルが作成された時刻。

-

サポートされていません。

リソース設定の変更

リソースプロファイルと提案を確認した後、[リソース設定の変更] をクリックしてリソース設定を変更できます。 詳細については、「手順5: リソース設定の変更」をご参照ください。

-

サポートされていません。

ACKのリソースプロファイリング機能は、ワークロードのコンテナごとに推奨されるリソース要求を提供します。 この機能は、提案されたリソース要求、元のリソース要求、およびリソース冗長率に基づいて、ワークロードのリソース要求を増加させるか減少させるかについての提案も提供する。 ワークロードが複数のコンテナを有する場合、ACKは、その元のリソース要求が提案されたリソース要求と比較して最も高い程度の差異を有するコンテナに対する提案を提供する。 以下の内容は、提案されたリソース要求と元のリソース要求との間の差異の程度をACKがどのように計算するかを説明する。

  • 提案されたリソース要求が元のリソース要求よりも大きい場合、コンテナのリソース使用量はコンテナのリソース要求よりも高い。 この場合、ACKはコンテナのリソース要求を増やすことを示唆しています。

  • 提案されたリソース要求が元のリソース要求よりも低い場合、コンテナのリソース使用量はコンテナのリソース要求よりも低い。 この場合、ACKは、リソースの無駄を避けるためにコンテナのリソース要求を減らすことを提案します。 ACKは、次の方法で、推奨リソース要求と元のリソース要求の違いの程度を計算します。

    1. ACKは、以下の式に基づいてターゲットリソース要求を計算する。ターゲットリソース要求=推奨リソース要求 × (1 + リソース冗長率)

    2. ACKは、以下の式に基づいて、ターゲットリソース要求とオリジナルリソース要求との間の差異の程度を計算する。degree=1 − オリジナルリソース要求 /ターゲットリソース要求

    3. ACKは、ターゲットリソース要求と元のリソース要求との間の差異の程度に基づいて、CPUおよびメモリ要求を調整することに関する提案を生成する。 次数値が0.1を超える場合、ACKはリソース要求を減らすことを提案します。

  • それ以外の場合は、[CPUプロファイル] または [メモリプロファイル] 列に [維持] が表示されます。これは、リソース要求を調整する必要がないことを意味します。

ステップ4: リソースプロファイルの詳細を表示する

[リソースのプロファイリング] タブで、ワークロードの名前をクリックして、プロファイルの詳細ページに移動します。

詳細ページには、ワークロードの基本情報、各コンテナのリソースカーブ、および変更可能なリソース構成が表示されます。应用画像详情

上の図は、ワークロードのCPUカーブを示しています。

カーブ

説明

cpu制限

コンテナのCPU制限カーブ。

cpuリクエスト

コンテナーのCPUリクエストカーブ。

cpu推奨

コンテナーの推奨CPUリクエストカーブ。

cpu使用量 (平均)

コンテナーの平均CPU使用率のカーブ。

cpu使用量 (max)

コンテナーのピークCPU使用率のカーブ。

ステップ5: リソース設定の変更

  1. プロファイルの詳細ページの下部にある [リソース設定の変更] セクションでは、リソースプロファイリングによって生成された推奨値に基づいてリソース設定を変更できます。

    次の表では、列について説明します。 资源变更

    パラメーター

    説明

    リソースリクエスト

    コンテナの元のリソース要求。

    リソース制限

    コンテナの元のリソース制限。

    プロファイル値

    ACKによって提案されるリソース要求。

    リソース冗長率

    リソースプロファイリングポリシーで指定されているリソース冗長率。 冗長度と推奨リソース要求に基づいて、新しいリソース要求を指定できます。 上の図では、新しいCPUリクエストは次の式に基づいて計算されます。4.28 CPUコア × (1 + 30%) = 5.6 CPUコア。

    新しいリソースリクエスト

    使用する新しいリソースリクエスト。

    新しいリソース制限

    使用する新しいリソース制限。 トポロジ対応のCPUスケジューリングがワークロードに対して有効になっている場合、CPU制限は整数でなければなりません。

  2. パラメーターを設定したら、[送信] をクリックします。 ワークロードのリソース設定の更新が開始されます。 ワークロードの詳細ページにリダイレクトされます。

    リソース構成が更新されると、コントローラはワークロードのローリング更新を実行し、ポッドを再作成します。

CLIでのリソースプロファイリングの使用

手順1: リソースプロファイリングの有効化

  1. 次のYAMLテンプレートを使用して、recommendation-profile.yamlという名前のファイルを作成し、ワークロードのリソースプロファイリングを有効にします。

    RecommendationProfile CRDを使用して、ワークロードのリソースプロファイルを生成し、リソース構成の提案を取得できます。 RecommendationProfile CRDが適用される名前空間とワークロードタイプを指定できます。

    apiVersion: autoscaling.alibabacloud.com/v1alpha1
    kind: RecommendationProfile
    メタデータ:
      # RecommendationProfile CRDの名前。 名前空間のないRecommendationProfile CRDを作成する場合は、名前空間を指定しないでください。 
      名前: profile-demo
    spec:
      # リソースプロファイリングを有効にするワークロードの種類。 
      controllerKind:
      -デプロイ
      # リソースプロファイリングを有効にする名前空間。 
      enabledNamespaces:
      -default 

    次の表に、YAMLテンプレートのパラメーターを示します。

    パラメーター

    タイプ

    説明

    metadata.name

    String

    リソースオブジェクトの名前。 名前空間のないRecommendationProfile CRDを作成する場合は、名前空間を指定しないでください。

    spec.controllerKind

    String

    リソースプロファイリングを有効にするワークロードの種類。 有効な値: Deployment、StatefulSet、およびDaemonSet。

    spec.enabledNamespaces

    String

    リソースプロファイリングを有効にする名前空間。

  2. 次のコマンドを実行して、作成したアプリケーションのリソースプロファイリングを有効にします。

    kubectl apply -f recommender-profile.yaml
  3. cpu-load-gen.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。

    apiVersion: apps/v1
    kind: 配置
    メタデータ:
      名前: cpu-load-gen
      ラベル:
        アプリ: cpu-load-gen
    spec:
      レプリカ:2
      セレクタ:
        matchLabels:
          アプリ: cpu-load-gen-selector
      template:
        metadata:
          labels:
            アプリ: cpu-load-gen-selector
        仕様:
          containers:
          -name: cpu-load-gen
            画像: registry.cn-zhangjiakou.aliyuncs.com/acs/slo-test-cpu-load-gen:v0.1
            コマンド: ["cpu_load_gen.sh"]
            imagePullPolicy: Always
            resources:
              requests:
                cpu: 8# アプリケーションに8つのCPUコアを要求します。 
                メモリ: "1Gi"
              limits:
                cpu: 12
                メモリ: "2Gi" 
  4. 次のコマンドを実行して、cpu-load-gen.yamlを適用し、cpu-load-genアプリケーションをデプロイします。

    kubectl apply -f cpu-load-gen.yaml
  5. 次のコマンドを実行して、作成したアプリケーションのリソース構成の提案を取得します。

    kubectlがおすすめを取得-l \
      "alpha.alibabacloud.com/recommendation-workload-apiVersion=apps-v1, \
      alpha.alibabacloud.com/recommendation-workload-kind=Deployment, \
      alpha.alibabacloud.com/recommendation-workload-name=cpu-load-gen " -o yaml 
    説明

    正確なリソース構成の提案を生成するには、システムがデータを収集するためのリソースプロファイリングを有効にしてから少なくとも1日待つことをお勧めします。

    ワークロードのリソースプロファイリングを有効にすると、ack-koordinatorはワークロードのリソース構成の提案を提供します。 提案は推奨CRDに記憶される。 次のコードブロックは、cpu-load-gen.yamlという名前のリソースプロファイルを示しています。

    apiVersion: autoscaling.alibabacloud.com/v1alpha1
    kind: Recommendation
    メタデータ:
      ラベル:
        alpha.alibabacloud.com/recommendation-workload-apiVersion: app-v1
        alpha.alibabacloud.com/recommendation-workload-kind: デプロイ
        alpha.alibabacloud.com/recommendation-workload-name: cpu-load-gen
      名前: f20ac0b3-dc7f-4f47-b3d9-bd91f906 ****
      名前空間: recommender-demo
    spec:
      workloadRef:
        apiVersion: apps/v1
        kind: Deployment
        名前: cpu-load-gen
    ステータス:
      recommendResources:
        containerRecommendations:
        -containerName: cpu-load-gen
          ターゲット:
            cpu: 4742m
            メモリ: 262144k
          originalTarget: # リソースプロファイリングアルゴリズムによって生成された中間結果。 中間結果を使用しないことを推奨します。 
           # ...

    データの取得を容易にするために、推奨CRDはワークロードと同じ名前空間で生成されます。 さらに、Recommendation CRDは、APIのバージョン、タイプ、およびワークロードの名前を次の表に示すラベルに保存します。

    ラベルキー

    説明

    alpha.alibabacloud.com/recommendation-workload-apiVersion

    ワークロードのAPIバージョン。 ラベルの値は、Kubernetesの仕様に準拠しています。 スラッシュ (/) はハイフン (-) に置き換えられます。

    app-v1 (オリジナルフォーム: app/v1)

    alpha.alibabacloud.com/recommendation-workload-kind

    ワークロードのタイプ (DeploymentやStatefulSetなど) 。

    Deployment

    alpha.alibabacloud.com/recommendation-workload-name

    ワークロードの名前。 ラベルの値はKubernetes仕様に準拠しており、長さは63文字を超えることはできません。

    cpu-load-gen

    各コンテナのリソースプロファイリング結果は、status. recommendoResources. containerRecommendationsに保存されます。 下表に、各パラメーターを説明します。

    パラメーター

    説明

    Format

    containerName

    コンテナーの名前。The name of the container.

    String

    cpu-load-gen

    ターゲット

    提案されたCPU要求とメモリ要求を含むリソースプロファイリング結果。

    map[ResourceName]resource.Quantity

    cpu: 4742mmemory: 262144k

    originalTarget

    リソースプロファイリングアルゴリズムによって生成された中間結果。 中間結果を使用しないことを推奨します。 要件がある場合は、チケットを起票します。

    -

    -

    説明

    推奨されるCPUリソースの最小量は0.025 CPUコアです。 推奨されるメモリリソースの最小量は250 MBです。

    cpu-load-gen.yamlアプリケーションによって要求されたリソース設定と、この手順で推奨されるリソース設定を比較します。 要求されたCPUリソースは、提案されたCPUリソースよりも大きい。 リソースを節約するために、アプリケーションのCPU要求を減らすことができます。

    リソース

    要求された金額

    推奨金額

    CPU

    8 vCPU

    4.742 vCPU

ステップ2。 (オプション): Managed Service for Prometheusでプロファイリング結果を確認する

ack-koordinatorを使用すると、ACKコンソールからPrometheusのManaged Serviceのリソースプロファイルを確認できます。

  • Managed Service for Prometheusが提供するダッシュボードを初めて使用する場合は、Resource Prometheusダッシュボードが最新バージョンに更新されていることを確認してください。 ダッシュボードの更新方法の詳細については、「関連する操作」をご参照ください。

    ACKコンソールの [Prometheusモニタリング] ページで収集されたリソースプロファイルの詳細を表示するには、次の手順を実行します。

    1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、[操作] > [Prometheusモニタリング] を選択します。

    3. [Prometheusモニタリング] ページで、[コスト分析 /リソース最適化] > [リソースプロファイル] を選択します。

      [リソースプロファイル] タブで、収集されたリソースプロファイルの詳細を表示できます。 詳細には、リソース要求、リソース使用量、コンテナの推奨リソース構成が含まれます。 詳細については、「Prometheusのマネージドサービス」をご参照ください。

  • 自己管理型のPrometheusモニタリングシステムを使用する場合、次のメトリクスを使用してダッシュボードを設定できます。

    # プロファイリング用のCPUとしてリソースを指定します。 
    koord_manager_recommender_recommendation_workload_target{exported_namespace="$namespace", workload_name="$workload", container_name="$container", resource="cpu"}
    # プロファイリング用のメモリとしてリソースを指定します。 
    koord_manager_recommender_recommendation_workload_target{exported_namespace="$namespace", workload_name="$workload", container_name="$container", resource="memory"} 
    重要

    ack-koordinatorが提供するリソースプロファイリングのモニタリングメトリックは、v1.5.0-ack1.14のkoord_manager_recommender_workload_targetに名前が変更されました。 ただし、以前のバージョンのメトリック名slo_manager_recommender_recommendation_workload_targetは互換性があります。 自己管理型Prometheusモニタリングシステムを使用している場合は、ack-koordinator v1.to 5.0-ack1.14にアップグレードした後、モニタリングメトリック名をkoord_manager_recommendation_workload_targetに切り替えることを推奨します。

よくある質問

リソースプロファイリングアルゴリズムはどのように機能しますか?

リソースプロファイリングアルゴリズムは多次元データモデルを使用し、次の特性を持ちます。

  • リソースプロファイリングアルゴリズムは、コンテナのリソースメトリックを継続的に収集し、CPUメトリックとメモリメトリックの集計値に基づいて提案を生成します。

  • リソースプロファイリングアルゴリズムが集計値を計算するとき、最も最近収集されたメトリックが最も高い重みを有する。

  • リソースプロファイリングアルゴリズムは、メモリ不足 (OOM) エラーなどのコンテナイベントを考慮に入れます。 これにより、提案の精度が向上する。

リソースプロファイリングに適したアプリケーションの種類?

リソースプロファイリングは、オンラインアプリケーションに適しています。

ほとんどの場合、リソースプロファイリング機能によって提案されるリソース設定は、アプリケーションのリソース要件を満たすことができます。 オフラインアプリケーションはバッチ処理を使用し、高いスループットを必要とします。 オフラインアプリケーションは、リソース利用を改善するためにリソース競合を許容する。 オフラインアプリケーションのリソースプロファイリングを有効にすると、リソースの無駄が発生する可能性があります。 ほとんどの場合、主要なシステムコンポーネントはアクティブ /スタンバイモードでデプロイされ、複数のレプリカがあります。 スタンバイレプリカに割り当てられているリソースはアイドル状態です。 結果として、資源プロファイリングアルゴリズムは、不正確な結果を生成する。 上記のケースでは、リソースプロファイリングによって提案されたリソース設定を使用しないことを推奨します。 ACKは、これらの場合にリソースプロファイリングによって提供される提案に基づいてリソース構成を指定する方法に関する更新を提供します。

コンテナのリソース要求とリソース制限を指定するときに、リソースプロファイリングで提案されたリソース設定を直接使用できますか。

リソースプロファイリングは、アプリケーションの現在のリソース要求に基づいてリソース構成提案を生成する。 管理者は、ビジネス特性を考慮し、それに応じて推奨値を変更する必要があります。 たとえば、トラフィックの急増を処理するためにリソースを予約したり、ゾーン災害復旧のためにリソースを予約したりする必要があります。 また、ホストの負荷が高い場合にリソースを必要とするアプリケーションを安定して実行できるように、推奨値を増やす必要がある場合もあります。

自己管理型のPrometheusモニタリングシステムを使用する場合、リソースプロファイルを表示するにはどうすればよいですか?

ack-Koordinatorのkoordinator Managerコンポーネントは、HTTP API操作を使用して、リソースプロファイルのモニタリングメトリックをPrometheusメトリックとして公開します。 次のコマンドを実行して、ポッドのIPアドレスを照会し、メトリクスデータを表示します。

# 次のコマンドを実行して、ポッドのIPアドレスを照会します。$kubectl get pod -A -o wide | grep koord-manager
# 期待される出力は、環境によって異なる場合があります
kube-system ack-koord-manager-5479f85d5f-7xd5k 1/1実行0 19d 192.168.12.242 cn-beijing.192.168.xx.xxx <none> <none>
kube-system ack-koord-manager-5479f85d5f-ftblj 1/1実行0 19d 192.168.12.244 cn-beijing.192.168.xx.xxx <none> <none>

# 次のコマンドを実行してメトリクスデータを表示します (Koordinator Managerはマスターレプリカアーキテクチャにあり、メトリクスデータはプライマリレプリカポッドにあります)
# IPアドレスとポートについては、Koordinator Managerの展開設定を参照してください。# コマンドを実行するホストとコンテナーが相互接続されていることを確認してから
$curl -s http:// 192.168.12.244:9326 /メトリクス | grep slo_manager_recommender_recommendation_workload_target
# 期待される出力は、環境によって異なる場合があります
# HELP slo_manager_recommender_recommendation_workload_targetワークロードリソース要求の推奨.
# タイプslo_manager_recommender_recommendation_workload_targetゲージ
slo_manager_recommender_recommendation_workload_target{container_name="xxx",namespace="xxx",recommendation_name="xxx",resource="cpu",workload_api_version="apps/v1",workload_kind="Deployment",workload_name="xxx"} 2.406
slo_manager_recommender_recommendation_workload_target{container_name="xxx",namespace="xxx",recommendation_name="xxx",resource="memory",workload_api_version="apps/v1",workload_kind="Deployment",workload_name="xxx"} 3.861631195e + 09 

ack-koordinatorのインストール後、ServiceとService Monitorは自動的に作成され、ポッドに関連付けられます。 Releventメトリクスは、Alibaba Cloud Prometheus Serviceを使用している場合、Grafanaダッシュボードに収集および表示されます。

自己管理型Prometheusモニタリングシステムのカスタムメトリック収集構成を構成する方法の詳細については、公式のPrometheusドキュメントを参照してください。 Grafanaダッシュボードを設定して、リソースプロファイルを表示できます。 詳細については、ステップ2をご参照ください。 (オプション): Managed Service for Prometheusでプロファイリング結果を確認します。

リソースプロファイルとリソースプロファイリングポリシーを削除する方法を教えてください。

リソースプロファイルは推奨CRDに格納されます。 リソースプロファイリングポリシーは、RecommendationProfile CRDに格納されます。 次のコマンドを実行して、すべてのリソースプロファイルとリソースプロファイリングポリシーを削除します。

# すべてのリソースプロファイルを削除します。 
kubectl削除の推奨事項-A -- すべて

# すべてのリソースプロファイリングポリシーを削除します。 
kubectl delete recommendationprofile -A -- すべて 

リソースプロファイリング機能を使用するようにRAMユーザーに権限を付与するにはどうすればよいですか?

ACKの承認システムは、リソースアクセス管理 (RAM) 承認とロールベースのアクセス制御 (RBAC) 承認で構成されます。 RAM権限は、クラウドリソースに対する権限を付与するために使用されます。 RBAC権限付与は、クラスター内のKubernetesリソースに対する権限を付与するために使用されます。 ACKの認証システムの詳細については、「認証のベストプラクティス」をご参照ください。 RAMユーザーにリソースプロファイリング機能の使用を許可するには、権限付与のベストプラクティスから次の手順を実行することを推奨します。

  1. RAM権限付与

    Alibaba CloudアカウントでRAMコンソールにログインし、RAMユーザーに定義済みのAliyunCSFullAccess権限を付与します。 詳細については、「権限付与の概要」をご参照ください。

  2. RBAC承認

    RAM権限付与を実行した後、ターゲットクラスターのこのRAMユーザーに対して開発者ロール以上のRBAC権限付与を実行する必要があります。 詳細については、「RAMユーザーまたはRAMロールへのRBAC権限の付与」をご参照ください。

説明

開発者レベル以上の事前定義されたRBACロールには、Kubernetesクラスター内のすべてのリソースに対する読み取りおよび書き込み権限があります。 きめ細かいアクセス制御が必要な場合は、カスタムClusterRoleを作成または編集できます。 詳細については、「RBACロールのカスタマイズ」をご参照ください。

リソースプロファイリング機能を使用するには、次のコンテンツをClusterRoleに追加します。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
メタデータ:
  名前: recommendation-clusterrole
-apiGroups:
  - autoscaling.alibabacloud.com
  resources:
  - '*'
  verbs:
  - '*'