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

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

最終更新日:Dec 27, 2024

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

前提条件と使用上の注意

  • ack-koordinatorコンポーネントがインストールされていること。詳細については、ack-koordinator (旧称ack-slo-manager)を参照してください。

  • リソースプロファイリングの精度を確保するために、リソースプロファイリングを有効にしてから1日以上待って、システムがデータを収集できるようにすることをお勧めします。

課金

ack-koordinatorコンポーネントのインストールと使用には料金はかかりません。ただし、以下のシナリオでは料金が発生する場合があります。

  • ack-koordinatorがインストールされると、ack-koordinatorは2つのACS汎用ポッドを申請します。コンポーネントをインストールするときに、各モジュールによって要求されるリソースの量を指定できます。

  • デフォルトでは、ack-koordinatorは、リソースプロファイリングなどの機能の監視メトリックをPrometheusメトリックとして公開します。Ack-koordinatorのprometheusメトリックを有効にすると、Managed Service for Prometheusを使用する場合、これらのメトリックはカスタムメトリックと見なされ、これらのメトリックに対して料金が発生します。料金は、クラスタのサイズやアプリケーションの数などの要因によって異なります。Prometheusメトリックを有効にする前に、Managed Service for Prometheusの課金トピックを読んで、カスタムメトリックの無料枠と課金ルールを確認することをお勧めします。リソース使用量の監視と管理方法の詳細については、監視対象データ量と料金のクエリを参照してください。

制限

コンポーネント

必要なバージョン

metrics-server

≥ v0.3.9.7

ack-koordinator

≥ v1.5.0-ack1.14

リソースプロファイリングの概要

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

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

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

この問題を解決するために、ack-koordinatorは、ワークロードのリソースプロファイルを提供します。リソースプロファイルに基づいて、個々のコンテナのリソース構成候補を取得できます。これにより、コンテナのリソースリクエストと制限の構成作業が簡素化されます。ACSでは、CLIでリソースプロファイリング機能を使用できます。CustomResourceDefinitions (CRD)を作成して、リソースプロファイルを管理できます。

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

手順1:リソースプロファイリングを有効にする

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

  2. クラスタページで、管理するクラスタを見つけて、そのIDをクリックします。クラスタ詳細ページの左側のナビゲーションペインで、コストスイート > コスト最適化を選択します。

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

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

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

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

手順2:リソースプロファイリングを構成する

  1. コスト最適化ページで、リソースプロファイリングタブをクリックし、プロファイリング構成をクリックします。

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

    グローバル構成モード(推奨)

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

    パラメータ

    説明

    有効な値

    除外される名前空間

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

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

    ワークロードタイプ

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

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

    CPU冗長率/メモリ冗長率

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

    冗長率は0または正の値である必要があります。システムは、一般的に使用される3つの冗長率(70%、50%、30%)も提供します。

    カスタム構成モード

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

    パラメーター

    説明

    有効な値

    名前空間

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

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

    ワークロードタイプ

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

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

    CPU冗長化率/メモリ冗長化率

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

    冗長化率は0または正の値である必要があります。システムは、一般的に使用される3つの冗長化率(70%、50%、30%)も提供します。

    説明

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

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

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

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

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

    image.png

    説明

    次の表では、ハイフン(-)は該当なしを示します。

    説明

    有効な値

    フィルター

    ワークロード名

    ワークロードの名前。

    -

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

    名前空間

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

    -

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

    ワークロードタイプ

    ワークロードのタイプ。

    有効な値:Deployment、DaemonSet、StatefulSet。

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

    CPUリクエスト

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

    -

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

    メモリリクエスト

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

    -

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

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

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

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

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

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

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

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

    CPUプロファイルとメモリプロファイルは、元のCPUリクエストとメモリリクエストを変更する方法に関する推奨事項を提供します。値は、推奨リソースリクエスト、元のリソースリクエスト、およびリソース冗長率に基づいて生成されます。

    有効な値:アップグレード、ダウングレード、変更なし。元のリソースリクエストと推奨リソースリクエストの差異の程度を示すパーセンテージ値。式:Abs(推奨リクエスト値-元のリクエスト値)/元のリクエスト値

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

    ジョブが作成された時刻

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

    -

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

    リソース構成の変更

    リソースプロファイルと推奨事項を確認した後、リソース構成の変更をクリックしてリソース構成を変更できます。詳細については、手順5:リソース構成の変更を参照してください。

    -

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

    説明

    ACSのリソースプロファイリング機能は、ワークロードの各コンテナに対して推奨リソースリクエストを提供し、推奨リクエスト値(推奨)、元のリクエスト値(リクエスト)、およびリソース冗長率(バッファ)を比較します。また、ワークロードのリソースリクエストを増減するかどうかに関する推奨事項も提供します。ワークロードに複数のコンテナがある場合、ACSは、元のリソースリクエストが推奨リソースリクエストと最も大きく異なるコンテナに対して推奨事項を提供します。次の内容は、ACSが推奨リソースリクエストと元のリソースリクエストの差異の程度を計算する方法について説明しています。

    • 推奨リソースリクエストが元のリソースリクエストよりも大きい場合、コンテナのリソース使用量はコンテナのリソースリクエストよりも高くなります。この場合、ACSはコンテナのリソースリクエストを増やすことを推奨します。

    • 推奨リソースリクエストが元のリソースリクエストよりも小さい場合、コンテナのリソース使用量はコンテナのリソースリクエストよりも低くなります。この場合、ACSはリソースの無駄を避けるためにコンテナのリソースリクエストを減らすことを推奨します。ACSは、次の方法で推奨リソースリクエストと元のリソースリクエストの差異の程度を計算します。

      1. ACSは、次の式に基づいてターゲットリソースリクエストを計算します。ターゲットリソースリクエスト=推奨×(1 +バッファ)

      2. ACSは、次の式に基づいて、ターゲットリソースリクエストと元のリソースリクエストの差異の程度を計算します。差異= 1-リクエスト/ターゲット

      3. ACSは、ターゲットリソースリクエストと元のリソースリクエストの差異の程度に基づいて、CPUおよびメモリリクエストの調整に関する推奨事項を生成します。差異値が0.1を超える場合、ACSはリソースリクエストを減らすことを推奨します。

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

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

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

    詳細ページでは、ワークロードの基本情報、ワークロードの各コンテナーのリソース曲線、ワークロードのリソース仕様の変更を表示できます。 上の図は、ワークロードの CPU 曲線を示しています。

    曲線

    説明

    cpu limit

    コンテナーの CPU 制限曲線。

    cpu request

    コンテナーの CPU 要求曲線。

    cpu recommend

    コンテナーの推奨 CPU 要求曲線。

    cpu usage (average)

    コンテナーの平均 CPU 使用率の曲線。

    cpu usage (max)

    コンテナーのピーク CPU 使用率の曲線。

ステップ 5: リソース構成の変更

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

    次の表に、各列の説明を示します。

    説明

    リソースリクエスト

    コンテナの元のリソースリクエスト。

    リソース制限

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

    プロファイル値

    ACS によって推奨されるリソースリクエスト。

    リソース冗長率

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

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

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

    新しいリソース制限

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

    重要

    リソースプロファイリングによって提供される推奨リクエスト値は、アルゴリズムによって計算された実際の値です。リソース構成の変更を適用するためにクリックすると、ACS はポッドのコンピューティングクラスに基づいてリソース仕様を調整します。詳細については、リソース仕様 を参照してください。

  2. パラメータを設定した後、送信OK をクリックして、ワークロードをローリングアップデートします。システムはワークロードのリソース構成の更新を開始します。ワークロードの詳細ページにリダイレクトされます。

    重要

    リソース仕様が更新されると、コントローラーはワークロードのローリングアップデートを実行し、ポッドを再作成します。注意して進めてください。

CLI を使用してリソースプロファイリングを使用する

手順 1: リソースプロファイリングを有効にする

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

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

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

    次の表は、YAML テンプレートのパラメーターについて説明しています。

    パラメーター

    タイプ

    説明

    metadata.name

    文字列

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

    spec.controllerKind

    文字列

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

    spec.enabledNamespaces

    文字列

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

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

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

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cpu-load-gen
      labels:
        app: cpu-load-gen
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: cpu-load-gen-selector
      template:
        metadata:
          labels:
            app: cpu-load-gen-selector
        spec:
          containers:
          - name: cpu-load-gen
            image: registry.cn-zhangjiakou.aliyuncs.com/acs/slo-test-cpu-load-gen:v0.1
            command: ["cpu_load_gen.sh"]
            imagePullPolicy: Always
            resources:
              requests:
                cpu: 8 # アプリケーションに 8 個の CPU コアをリクエストします。
                memory: "1Gi"
              limits:
                cpu: 12
                memory: "2Gi"
  4. cpu-load-gen アプリケーションをデプロイするには、次のコマンドを実行します。

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

    kubectl get recommendations -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 はワークロードのリソース構成の提案を提供します。提案は Recommendation CRD に保存されます。次のコードブロックは、cpu-load-gen という名前のリソースプロファイルを示しています。

    apiVersion: autoscaling.alibabacloud.com/v1alpha1
    kind: Recommendation
    metadata:
      labels:
        alpha.alibabacloud.com/recommendation-workload-apiVersion: app-v1
        alpha.alibabacloud.com/recommendation-workload-kind: Deployment
        alpha.alibabacloud.com/recommendation-workload-name: cpu-load-gen
      name: f20ac0b3-dc7f-4f47-b3d9-bd91f906****
      namespace: recommender-demo
    spec:
      workloadRef:
        apiVersion: apps/v1
        kind: Deployment
        name: cpu-load-gen
    status:
      recommendResources:
        containerRecommendations:
        - containerName: cpu-load-gen
          target:
            cpu: 4742m
            memory: 262144k
          originalTarget: #リソースプロファイリングアルゴリズムによって生成された中間結果。中間結果を使用しないことをお勧めします。
           # ...

    データの取得を容易にするために、Recommendation 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.recommendResources.containerRecommendations に保存されます。次の表にパラメーターを示します。

    パラメーター

    説明

    形式

    containerName

    コンテナの名前。

    文字列

    cpu-load-gen

    target

    リソースプロファイリング結果。推奨される CPU リクエストとメモリリクエストが含まれます。

    map[ResourceName]resource.Quantity

    cpu: 4742mmemory: 262144k

    originalTarget

    リソースプロファイリングアルゴリズムによって生成された中間結果。中間結果を使用しないことをお勧めします。

    -

    -

    説明

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

    この手順では、cpu-load-gen アプリケーションによってリクエストされたリソース構成と、推奨されるリソース構成を比較します。リクエストされた CPU リソースは、推奨される CPU リソースよりも大きくなっています。リソースを節約するために、アプリケーションの CPU リクエストを減らすことができます。

    リソース

    リクエストされた量

    推奨される量

    CPU

    8 vCPU

    4.742 vCPU

手順 2. (オプション): Managed Service for Prometheus でプロファイリング結果を確認する

ack-koordinator コンポーネントは、リソースプロファイリング結果をクエリするための 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"}

FAQ

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

リソースプロファイリングアルゴリズムは多次元データモデルを使用し、以下の特徴があります。

  • リソースプロファイリングアルゴリズムは、コンテナのリソース使用状況統計を継続的に収集し、データを集計してから、サンプルピーク値、加重平均、CPUとメモリの使用率の分数値を計算します。

  • プロファイリング結果では、推奨されるCPUリクエストは95パーセンタイル値、推奨されるメモリリクエストは99パーセンタイル値です。リソースプロファイリング機能は、ワークロードの信頼性を確保するために、両方の値に安全マージンも設定します。

  • リソースプロファイリングアルゴリズムが時間係数に対して最適化されている場合、半減期時間枠モデルを使用してデータを集計します。新しいデータサンプルはより大きな重みを持ちます。

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

詳細については、リソースプロファイリングの背後にある技術リソースプロファイリングの仕組みと推奨事項を参照してください。

どのような種類のアプリケーションがリソースプロファイリングに適していますか?

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

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

コンテナのリソースリクエストとリソース制限を指定するときに、リソースプロファイリングによって推奨されるリソース構成を直接使用できますか?

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

推奨リソースリクエストを設定した後も、スケールアップまたはスケールダウンが必要なのはなぜですか?

リソースプロファイリングによって提供される推奨リクエスト値は、アルゴリズムによって計算された実際の値です。リソース構成の変更を適用するためにクリックすると、ACSはポッドの計算クラスに基づいてリソース仕様を調整します。詳細については、リソース仕様を参照してください。調整後、ポッドの仕様は指定された仕様と異なる場合があります。

セルフマネージドPrometheus監視システムを使用している場合、リソースプロファイルを表示するにはどうすればよいですか?

Koordinator Managerコンポーネントのack-koordinatorモジュールは、リソースプロファイリング関連のメトリックをクエリするためのPrometheus HTTPインターフェースを提供します。次のコマンドを実行して、ポッドのIPアドレスをクエリし、そのメトリックを表示できます。

# ポッドのIPアドレスをクエリするには、次のコマンドを実行します。
$ kubectl get pod -A -o wide | grep koord-manager
#実際の出力は優先されます。
kube-system   ack-koord-manager-5479f85d5f-7xd5k                         1/1     Running            0                  19d   192.168.12.242   cn-beijing.192.168.xx.xxx   <none>           <none>
kube-system   ack-koord-manager-5479f85d5f-ftblj                         1/1     Running            0                  19d   192.168.12.244   cn-beijing.192.168.xx.xxx   <none>           <none>

# メトリックを表示するには、次のコマンドを実行します。Koordinator Managerはアクティブ/スタンバイ(2レプリカ)モードで実行されます。データはアクティブポッドとスタンバイポッドにのみ保存されます。
# IPアドレスとポートについては、Koordinator Managerモジュールのデプロイメントを参照してください。
# コマンドを実行するホストがクラスターのコンテナネットワークに接続されていることを確認してください。
$ curl -s http://192.168.12.244:9326/metrics | grep koord_manager_recommender_recommendation_workload_target
# 実際の出力は優先されます。
# HELP koord_manager_recommender_recommendation_workload_target ワークロードリソースリクエストの推奨事項。
# TYPE koord_manager_recommender_recommendation_workload_target gauge
koord_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
koord_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コンポーネントがインストールされると、サービスとサービスモニターが自動的に作成され、ポッドに関連付けられます。

Prometheusはさまざまな方法でメトリックを収集します。セルフマネージドPrometheus監視システムを使用する場合は、Prometheusの公式ドキュメントを参照し、前のセクションで説明したように構成をデバッグしてください。デバッグ後、手順2.(オプション):Managed Service for Prometheusのプロファイリング結果を確認するを参照して、Grafanaダッシュボードを構成してください。

リソースプロファイルとリソースプロファイリングポリシーを削除するにはどうすればよいですか?

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

# すべてのリソースプロファイルを削除します。
kubectl delete recommendation -A --all

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

RAMユーザーにリソースプロファイリングの使用を許可するにはどうすればよいですか?

Container Compute Service (ACS)の認証システムは、インフラストラクチャリソースのRAM認証とACSクラスターのロールベースアクセス制御(RBAC)認証で構成されています。詳細については、認証のベストプラクティスを参照してください。RAMユーザーにリソースプロファイリングの使用を許可する場合は、次のタスクを実行することをお勧めします。

  1. RAMユーザー認証

    Alibaba CloudアカウントでRAMコンソールにログオンし、RAMユーザーにAliyunAccReadOnlyAccess(読み取り専用)権限を付与します。詳細については、システムポリシーのアタッチを参照してください。

  2. RBAC認証

    RAMユーザー認証が完了したら、RAMユーザーにRBAC developerロールを割り当てるか、RAMユーザーにより高い権限を付与する必要があります。詳細については、RAMユーザーまたはRAMロールへのRBAC権限の付与を参照してください。

説明

RAMユーザーにdeveloper以上の権限が付与されている場合、RAMユーザーはクラスター内のすべてのKubernetesリソースを読み書きできます。よりきめ細かい方法で権限を付与するには、RBACポリシーのアタッチを参照し、カスタムClusterRoleを作成または変更します。リソースプロファイリング機能は、ClusterRoleに次のコンテンツを追加します。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: recommendation-clusterrole
- apiGroups:
  - autoscaling.alibabacloud.com
  resources:
  - '*'
  verbs:
  - '*'