Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Resource profiling for container configuration recommendations

Última atualização: Jun 27, 2026

O ACK oferece resource profiling para workloads nativos do Kubernetes. Esse recurso analisa dados históricos de uso de recursos para fornecer recomendações de especificação de recursos no nível de contêiner, simplificando a configuração de requests e limits. Este tópico descreve como usar o resource profiling no console e na linha de comando.

Pré-requisitos e notas de uso

  • Este recurso está disponível apenas para ACK Pro cluster s que atendem aos seguintes requisitos:

    • O componente ack-koordinator (anteriormente ack-slo-manager) v0.7.1 ou posterior deve estar instalado. Para mais informações, consulte ack-koordinator.

    • O componente metrics-server v0.3.8 ou posterior deve estar instalado.

    • Se um nó usar containerd como runtime de contêiner e tiver sido adicionado ao cluster antes das 14h00 de 19 de janeiro de 2022, readicione o nó ou atualize o cluster para a versão mais recente. Para mais detalhes, consulte Add an existing node e manually upgrade a cluster.

  • O recurso de resource profiling está em preview público no Cost Suite e pode ser usado diretamente.

  • Para garantir resultados precisos, aguarde pelo menos 24 horas após ativar o resource profiling para uma workload. Esse período permite que o sistema colete dados suficientes.

Faturamento

A instalação e o uso do componente ack-koordinator são gratuitos. No entanto, cobranças adicionais podem ocorrer nos cenários abaixo.

  • O ack-koordinator é um componente autogerenciado. Após a instalação, ele consome recursos dos nós worker. Configure os requests de recursos para cada módulo durante a instalação do componente.

  • Por padrão, o ack-koordinator expõe métricas de monitoramento para recursos como resource profiling e agendamento refinado no formato Prometheus. Se você ativar a opção Enable Prometheus Monitoring for ACK-Koordinator e usar o Managed Service for Prometheus, essas métricas serão enviadas ao serviço como basic metrics. Alterações nas configurações padrão, como o período de retenção, podem gerar custos extras. Para mais informações, consulte Billing of Managed Service for Prometheus.

Resource profiling

O Kubernetes usa resource requests para descrever as necessidades de recursos dos contêineres. Ao definir um request para um contêiner, o scheduler compara essa solicitação com os recursos alocáveis dos nós para agendar o pod em um nó adequado. Na maioria dos casos, os requests são definidos com base na experiência prática. Os administradores revisam o histórico de utilização, resultados de testes de carga e feedback de produção, ajustando os valores ao longo do tempo.

Contudo, essa abordagem apresenta as seguintes limitações:

  • Para manter a estabilidade das aplicações em produção, os administradores frequentemente reservam uma grande margem de recursos para lidar com flutuações de tráfego entre dependências upstream e downstream. Consequentemente, os requests de recursos dos contêineres ficam muito acima da utilização real, resultando em baixa utilização dos recursos do cluster e desperdício significativo.

  • Quando a alocação do cluster está elevada, os administradores podem reduzir os requests para melhorar a utilização e liberar capacidade. Isso aumenta a densidade de contêineres e pode comprometer a estabilidade do cluster quando o tráfego da aplicação aumenta.

Para resolver esses problemas, o ack-koordinator fornece o recurso de resource profiling. Ele recomenda especificações de recursos no nível de contêiner e reduz a complexidade da configuração. O ACK disponibiliza esse recurso no console, permitindo que os administradores de aplicações avaliem rapidamente se as especificações atuais são adequadas e façam ajustes conforme necessário. Também é possível usar a linha de comando para gerenciar perfis de recursos de aplicações diretamente por meio de um CRD.

Uso do resource profiling no console

Etapa 1: Instalar e ativar o resource profiling

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Cost Suite > Cost Optimization.

  3. Na página Cost Optimization, clique na aba Resource Profiling. Na seção Resource Profiling, siga as instruções na tela para ativar o recurso.

    • Instalação ou atualização de componente: Siga as instruções na tela para instalar ou atualizar o componente ack-koordinator. Se for a primeira vez que você usa este recurso, instale o componente ack-koordinator.

      Nota

      Se o seu componente ack-koordinator estiver em uma versão anterior à v0.7.0, migre-o e atualize-o. Para mais informações, consulte Migrate ack-koordinator from the application marketplace to the component center.

    • Configuração de profiling: Após a instalação ou atualização, selecione Default Settings para controlar o escopo do profiling (recomendado). Posteriormente, você também pode clicar em Profiling Configuration no console para ajustar as configurações.

  4. Clique em Enable Resource Profiling para acessar a página Resource Profiling.

Etapa 2: Gerenciar políticas de profiling

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Cost Suite > Cost Optimization.

  3. Na página Cost Optimization, clique na aba Resource Profiling e, em seguida, clique em Profiling Configuration.

    Existem dois modos de configuração disponíveis: Global Configuration e Automated O&M mode. O modo padrão recomendado durante a instalação do componente é o Global Configuration. Modifique o modo e os parâmetros aqui e clique em OK para aplicar as alterações.

    Configuração global (recomendada)

    O modo Global Configuration ativa o resource profiling para todas as workloads. Por padrão, ele exclui os namespaces arms-prom e kube-system.

    Parâmetro

    Descrição

    Intervalo de valores

    Excluded Namespace

    Namespaces para os quais o resource profiling está desativado, geralmente destinados a componentes de sistema. O escopo final do profiling corresponde à interseção entre os namespaces e os tipos de workload especificados.

    Namespaces existentes no cluster atual. É possível selecionar vários namespaces. Valor padrão: kube-system e arms-prom.

    Workload Type

    Tipos de workload para os quais o resource profiling está ativado. O escopo final do profiling corresponde à interseção entre os namespaces e os tipos de workload especificados.

    As workloads nativas do Kubernetes suportadas são Deployment, StatefulSet e DaemonSet. É possível selecionar vários tipos de workload.

    CPU Redundancy Rate

    Margem de segurança para geração dos resultados de resource profiling. Para detalhes, veja a descrição a seguir.

    Um número não negativo. Opções comuns são 70%, 50% e 30%.

    Memory Redundancy Rate

    Margem de segurança para geração dos resultados de resource profiling. Para detalhes, veja a descrição a seguir.

    Um número não negativo. Opções comuns são 70%, 50% e 30%.

    Configuração de O&M automatizado

    O modo Automated O&M ativa o resource profiling apenas para workloads nos namespaces selecionados. Se o seu cluster for grande (por exemplo, com mais de 1.000 nós) ou se você desejar testar esse recurso apenas em um subconjunto de workloads, use este modo para especificar o escopo conforme necessário.

    Parâmetro

    Descrição

    Intervalo de valores

    Namespace

    Namespaces para os quais o resource profiling está ativado. O escopo final do profiling corresponde à interseção entre os namespaces e os tipos de workload especificados.

    Namespaces existentes no cluster atual. É possível selecionar vários namespaces.

    Workload Type

    Tipos de workload para os quais o resource profiling está ativado. O escopo final do profiling corresponde à interseção entre os namespaces e os tipos de workload especificados.

    As workloads nativas do Kubernetes suportadas são Deployment, StatefulSet e DaemonSet. É possível selecionar vários tipos de workload.

    CPU Redundancy Rate

    Margem de segurança para geração dos resultados de resource profiling. Para detalhes, veja a descrição a seguir.

    Um número não negativo. Opções comuns são 70%, 50% e 30%.

    Memory Redundancy Rate

    Margem de segurança para geração dos resultados de resource profiling. Para detalhes, veja a descrição a seguir.

    Um número não negativo. Opções comuns são 70%, 50% e 30%.

    Uma margem de consumo de recursos é a prática de não utilizar 100% dos recursos físicos quando os administradores avaliam a capacidade da aplicação, como Queries Per Second (QPS). Isso ocorre devido às limitações dos recursos físicos, como hyper-threading, e à necessidade de as aplicações reservarem recursos para lidar com requisições de carga durante períodos de pico. Se a diferença entre o valor do perfil e o request original exceder a margem de segurança, o sistema fornecerá uma recomendação de downgrade. Para detalhes sobre o algoritmo, consulte a descrição das recomendações de profiling no tópico Application Profiling Overview.Resource buffer

Etapa 3: Visualizar a visão geral do profiling

Após configurar a política de resource profiling, visualize os resultados para cada workload na página Resource Profiling.

Para melhorar a precisão, o sistema solicita a coleta de pelo menos 24 horas de dados quando você usa esse recurso pela primeira vez.

A tabela a seguir descreve as colunas da visão geral do profiling.

Nota

Na tabela abaixo, um hífen (-) indica que o campo não se aplica.

Coluna

Descrição

Valores

Filtrável

Nome da workload

Nome da workload.

-

Sim. Pesquise exatamente por nome na parte superior da página.

Namespace

Namespace da workload.

-

Sim. Por padrão, o namespace kube-system é excluído das condições de filtro.

Tipo de workload

Tipo da workload.

Deployment, DaemonSet e StatefulSet.

Sim. O filtro padrão é All.

Request de CPU

Request de recurso de CPU dos pods da workload.

-

Não.

Request de memória

Request de recurso de memória dos pods da workload.

-

Não.

Status dos dados de perfil

Status do resource profiling para a workload.

  • Collecting: O perfil foi criado recentemente e possui dados insuficientes. Aguarde pelo menos um dia para garantir que a workload execute de forma estável e que seus dados cubram tanto picos quanto vales de tráfego.

  • Normal: Os resultados do profiling foram gerados.

  • Workload deleted: A workload foi excluída. Os resultados do profiling serão removidos automaticamente após um período de retenção.

Não.

Perfil de CPU, perfil de memória

Recomendação baseada no valor do perfil, no request original e na margem de consumo de recursos configurada.

Inclui Upgrade, Downgrade e Keep. A porcentagem indica a magnitude do desvio, calculada pela seguinte fórmula: .

Sim. As condições de filtro padrão são Upgrade e Downgrade.

Hora de criação

Momento em que o resultado do profiling foi criado.

-

Não.

Alterar configuração de recursos

Após avaliar os resultados e recomendações do profiling, clique em Change Resource Configuration para aumentar ou diminuir os recursos. Para mais informações, consulte Etapa 5: Aplicar especificações de recursos recomendadas.

-

Não.

O resource profiling do ACK gera um valor de perfil para a especificação de recursos de cada contêiner em uma workload. Ao comparar o valor do perfil (Recommend), o request original (Request) e a margem de consumo de recursos (Buffer) configurada na política de profiling, o console fornece recomendações de Upgrade ou Downgrade para o request. Se uma workload possuir múltiplos contêineres, o console destaca aquele com o maior desvio. A lógica de cálculo é a seguinte:

  • Se o valor do perfil (Recommend) for maior que o request original (Request), o contêiner tem usado recursos acima do solicitado por um período prolongado. Isso representa um risco à estabilidade. Aumente a especificação de recursos oportunamente. O console exibirá uma recomendação de "Upgrade".

  • Caso o valor do perfil (Recommend) seja menor que o request original (Request), o contêiner pode estar desperdiçando recursos, sendo possível reduzir a especificação. Essa decisão deve considerar a margem de consumo de recursos configurada.

    1. Calcule a especificação alvo de recursos (Target) com base no valor do perfil e na margem de consumo configurada (Buffer): Target = Recommend * (1 + Buffer).

    2. Calcule o desvio (Degree) do request original (Request) em relação à especificação alvo (Target): Degree = 1 - (Request / Target).

    3. Com base no valor do perfil e no nível de desvio (Degree), o console gera uma recomendação para CPU e memória. Se o valor absoluto do desvio (Degree) for superior a 0,1, o console exibirá uma recomendação de "Downgrade".

  • Em todos os outros casos, a recomendação é Maintain a especificação atual, indicando que nenhum ajuste é necessário.

Etapa 4: Visualizar detalhes do perfil da aplicação

Na página Resource Profiling, clique no nome de uma workload para abrir sua página de detalhes do perfil.

A página de detalhes contém três partes: informações básicas da workload, curvas de perfil de recursos para cada contêiner e uma janela para alterar as especificações de recursos da aplicação.应用画像详情

Conforme mostrado na figura anterior, a tabela a seguir descreve as métricas na curva de recursos, usando CPU como exemplo.

Nome da curva

Descrição

cpu limit

Limite de recurso de CPU do contêiner.

cpu request

Request de recurso de CPU do contêiner.

cpu recommend

Valor de CPU do perfil para o contêiner.

cpu usage (average)

Uso médio de CPU em todas as réplicas de contêiner da workload.

cpu usage (max)

Uso máximo de CPU entre todas as réplicas de contêiner da workload.

Etapa 5: Aplicar especificações de recursos recomendadas

Use a margem de segurança configurada como referência para a necessidade alvo de recursos. Por exemplo, adicione um fator de margem sobre o valor do perfil, como 4.742 * 1,3 ≈ 6,2.

A tabela a seguir descreve os parâmetros.

Parâmetro

Descrição

Current resource request

Request atual de recursos do contêiner.

Current resource limit

Limite atual de recursos do contêiner.

Profiled value

Valor do perfil gerado para o contêiner, utilizável como referência para o request de recursos.

Safety buffer

Margem de segurança configurada na política de profiling, utilizável como referência para a necessidade alvo de recursos. Por exemplo, adicione um fator de margem sobre o valor do perfil, como 4.742 * 1,3 ≈ 6,2.

New Resource Request

Valor alvo para o request de recursos do contêiner.

New Resource Limit

Valor alvo para o limite de recursos do contêiner. Nota: Se a workload usar agendamento com reconhecimento de topologia de CPU, o limite de recursos de CPU deve ser um número inteiro.

  • Após concluir a configuração, clique em Submit. O sistema atualiza as especificações de recursos e redireciona você automaticamente para a página de detalhes da workload.

    Depois que as especificações de recursos forem atualizadas, o controller executa uma atualização contínua da workload e recria seus pods.

  • Uso do resource profiling via linha de comando

    Etapa 1: Ativar o resource profiling

    1. Crie um arquivo chamado recommendation-profile.yaml com o seguinte conteúdo yaml para ativar o resource profiling para uma workload.

      Um RecommendationProfile CRD ativa o resource profiling para uma workload e fornece dados de especificação de recursos para seus contêineres. Controle o escopo do profiling especificando namespaces e tipos de workload. O escopo final é a interseção dos dois.

      apiVersion: autoscaling.alibabacloud.com/v1alpha1
      kind: RecommendationProfile
      metadata:
        # The object name. A namespace is not required for this cluster-scoped object.
        name: profile-demo
      spec:
        # The workload types for which to enable resource profiling.
        controllerKind:
        - Deployment
        # The namespaces for which to enable resource profiling.
        enabledNamespaces:
        - default

      A tabela a seguir descreve os campos de configuração.

      Parâmetro

      Tipo

      Descrição

      metadata.name

      String

      Nome do objeto. Não é necessário um namespace porque RecommendationProfile é um objeto com escopo de cluster (não namespaced).

      spec.controllerKind

      String

      Tipos de workload para os quais o resource profiling está ativado. Os tipos suportados incluem Deployment, StatefulSet e DaemonSet.

      spec.enabledNamespaces

      String

      Namespaces para os quais o resource profiling está ativado.

    2. Aplique a configuração do perfil.

      kubectl apply -f recommendation-profile.yaml
    3. Crie um arquivo chamado cpu-load-gen.yaml com o seguinte conteúdo.

      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 # The CPU request for this application is 8 cores.
                  memory: "1Gi"
                limits:
                  cpu: 12
                  memory: "2Gi"
    4. Implante a aplicação cpu-load-gen.

      kubectl apply -f cpu-load-gen.yaml
    5. Obtenha os resultados do resource profiling.

      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

      O ack-koordinator gera um perfil de recursos para cada workload analisada e armazena os resultados em um Recommendation CRD. Abaixo está um exemplo de perfil de recursos para a workload cpu-load-gen.

      apiVersion: autoscaling.alibabacloud.com/v1alpha1
      kind: Recommendation
      metadata:
        labels:
          alpha.alibabacloud.com/recommendation-workload-apiVersion: apps-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: # Intermediate result of the resource profiling algorithm. Do not use directly.
             # ...

      Para simplificar a recuperação, o objeto Recommendation é criado no mesmo namespace da workload. Ele também inclui rótulos que especificam a versão da api, o tipo e o nome da workload, conforme descrito na tabela a seguir.

      Chave do rótulo

      Descrição

      Exemplo

      alpha.alibabacloud.com/recommendation-workload-apiVersion

      Versão da api da workload. A barra (/) é substituída por um hífen (-) para cumprir a sintaxe de rótulos do Kubernetes.

      apps-v1 (de apps/v1)

      alpha.alibabacloud.com/recommendation-workload-kind

      Tipo da workload, como Deployment ou StatefulSet.

      Deployment

      alpha.alibabacloud.com/recommendation-workload-name

      Nome da workload. Deve ter no máximo 63 caracteres para cumprir a sintaxe de rótulos do Kubernetes.

      cpu-load-gen

      Os resultados do resource profiling para cada contêiner são armazenados em status.recommendResources.containerRecommendations. A tabela a seguir descreve os campos.

      Campo

      Descrição

      Formato

      Exemplo

      containerName

      Nome do contêiner.

      string

      cpu-load-gen

      target

      Especificações de recursos do perfil, incluindo CPU e memória.

      map[ResourceName]resource.Quantity

      cpu: 4742m

      memory: 262144k

      originalTarget

      Resultado intermediário do algoritmo de profiling. Não use este campo diretamente.

      -

      -

      Nota

      O valor mínimo de CPU do perfil por pod é 0,025 núcleos, e o valor mínimo de memória é 250 MB.

      Ao comparar as especificações de recursos declaradas na aplicação cpu-load-gen com os resultados do profiling, nota-se que o request de CPU está superprovisionado. Reduza o request para economizar recursos do cluster.

      Categoria

      Especificação original

      Especificação do perfil

      CPU

      8 núcleos

      4.742 núcleos

    Etapa 2: (Opcional) Visualizar os resultados no Prometheus

    O componente ack-koordinator fornece uma interface de consulta Prometheus para resultados de resource profiling. Visualize esses resultados diretamente usando o recurso Prometheus Monitoring no ACK.

    • Se for a primeira vez que você usa este dashboard, certifique-se de que o dashboard Resource Profile esteja atualizado para a versão mais recente. Para etapas de atualização, consulte Related operations.

      Para visualizar os resultados do resource profiling no console ACK usando o Prometheus Monitoring, siga estas etapas:

      1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

      2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Operations > Prometheus Monitoring.

      3. Na página Prometheus Monitoring, escolha Cost Analysis/Resource Optimization > Resource Profile.

        Na aba Resource Profile, visualize dados detalhados, incluindo especificações de contêiner (Request), uso real de recursos do contêiner (Usage) e especificações de recursos do perfil (Recommend). Para mais informações, consulte Connect to and configure Managed Service for Prometheus.

    • Caso possua uma instância Prometheus autogerenciada, configure seu dashboard com base nas seguintes métricas.

      # Profiled CPU resource specification for a container in the workload.
      koord_manager_recommender_recommendation_workload_target{exported_namespace="$namespace", workload_name="$workload", container_name="$container", resource="cpu"}
      # Profiled memory resource specification for a container in the workload.
      koord_manager_recommender_recommendation_workload_target{exported_namespace="$namespace", workload_name="$workload", container_name="$container", resource="memory"}
      Importante

      A métrica de resource profiling fornecida pelo componente ack-koordinator foi renomeada para koord_manager_recommender_recommendation_workload_target na v1.5.0-ack1.14. No entanto, a métrica slo_manager_recommender_recommendation_workload_target de versões anteriores ainda é compatível. Se você tiver uma instância Prometheus autogerenciada, mude para koord_manager_recommender_recommendation_workload_target após atualizar o componente ack-koordinator para v1.5.0-ack1.14 ou posterior.

    FAQ

    Algoritmo de resource profiling

    O algoritmo de resource profiling usa um modelo de dados multidimensional que funciona da seguinte forma:

    • Coleta continuamente dados de uso de recursos do contêiner e calcula estatísticas agregadas, como valores de pico, médias ponderadas e percentis para uso de CPU e memória.

    • A recomendação final define o valor recomendado de CPU no percentil P95 e o valor recomendado de memória no percentil P99. O algoritmo adiciona uma margem de segurança a ambos para garantir a confiabilidade da workload.

    • Otimizado para atualidade, o algoritmo considera apenas dados dos últimos 14 dias. Ele usa um modelo de janela deslizante de meia-vida para agregação, onde o peso dos pontos de dados mais antigos diminui gradualmente.

    • Considera eventos de runtime do contêiner, como encerramentos por falta de memória (OOM), para melhorar a precisão dos valores do perfil.

    Tipos de aplicação adequados

    O resource profiling é mais adequado para aplicações de serviços online.

    Atualmente, os resultados do profiling priorizam garantir que um contêiner tenha recursos suficientes para cobrir a vasta maioria de suas amostras de uso. No entanto, essa abordagem pode ser conservadora para certos tipos de aplicação. Para aplicações offline, como tarefas de processamento em lote que priorizam o throughput geral e toleram alguma contenção de recursos para melhorar a utilização do cluster, os resultados podem parecer excessivamente conservadores. Além disso, para componentes críticos de sistema implantados em configuração ativo-passivo, as réplicas passivas ficam ociosas por longos períodos, e seu baixo uso de recursos pode interferir no algoritmo de profiling. Nesses cenários, revise e ajuste os resultados do profiling conforme necessário antes de aplicá-los. Recomendamos manter-se atualizado com as novidades do produto sobre resource profiling.

    Uso de valores do perfil para requests e limits

    Isso depende da sua workload específica. Os valores do perfil fornecem um resumo da demanda atual de recursos da sua aplicação. Use-os como linha de base e ajuste-os com base nas características da sua aplicação e nos requisitos de negócios.

    Por exemplo, para aplicações que precisam lidar com picos de tráfego ou exigem failover transparente em uma arquitetura ativo-ativo, adicione uma margem de recursos. Para aplicações sensíveis a recursos que não apresentam bom desempenho em hosts com alta carga, aumente a alocação de recursos além do valor do perfil.

    Visualizar métricas em Prometheus autogerenciado

    O módulo ack-koord-manager do componente ack-koordinator expõe métricas de resource profiling como um endpoint HTTP formatado para Prometheus. Obtenha o endereço ip do pod e acesse os dados das métricas.

    1. Obtenha o endereço ip do pod.

      kubectl get pod -A -o wide | grep koord-manager

      Saída esperada:

      kube-system    ack-koord-manager-b86bd47d9-92f6m                                 1/1     Running     0               16h     10.10.0.xxx   cn-hangzhou.10.10.0.xxx   <none>           <none>
      kube-system    ack-koord-manager-b86bd47d9-vg5z7                                 1/1     Running     0               16h     10.10.0.xxx   cn-hangzhou.10.10.0.xxx   <none>           <none>
    2. Execute o comando a seguir para visualizar os dados das métricas (observe que o ack-koord-manager executa em modo ativo-passivo de réplica dupla e os dados estão disponíveis apenas no Pod da réplica primária). Para a porta port (padrão: 9326), consulte a configuração do Deployment do ack-koord-manager.

      Certifique-se de que o servidor onde você executa o comando possa se comunicar com a rede de contêineres do cluster.
      curl -s http://10.10.0.xxx:9326/all-metrics | grep slo_manager_recommender_recommendation_workload_target
      # If you use an ack-koordinator version earlier than v1.5.0-ack1.12, run the following command to view the metrics data.
      curl -s http://10.10.0.xxx:9326/metrics | grep slo_manager_recommender_recommendation_workload_target

      Saída esperada:

      # HELP slo_manager_recommender_recommendation_workload_target Recommendation of workload resource request.
      # TYPE slo_manager_recommender_recommendation_workload_target gauge
      slo_manager_recommender_recommendation_workload_target{container_name="xxx",namespace="xxx",recommendation_name="d2169dbf-fb36-4bf4-99d1-673577fb85c1",resource="cpu",workload_api_version="apps/v1",workload_kind="Deployment",workload_name="xxx"} 0.025
      slo_manager_recommender_recommendation_workload_target{container_name="xxx",namespace="xxx",recommendation_name="d2169dbf-fb36-4bf4-99d1-673577fb85c1",resource="memory",workload_api_version="apps/v1",workload_kind="Deployment",workload_name="xxx"} 2.62144e+08

    Após a instalação do componente ack-koordinator, ele cria automaticamente objetos Service e ServiceMonitor associados aos pods correspondentes. Se você usar o Managed Service for Prometheus, o serviço coleta e exibe automaticamente essas métricas no dashboard Grafana correspondente.

    O Prometheus suporta vários métodos de coleta. Caso use uma instância Prometheus autogerenciada, consulte a documentação oficial do Prometheus para configuração e use o processo descrito acima para depuração. Após a depuração, consulte Etapa 2: (Opcional) Visualizar os resultados no Prometheus para configurar um dashboard Grafana em seu ambiente.

    Excluir resultados e regras de profiling

    Os Recommendation CRDs armazenam resultados de profiling, e os RecommendationProfile CRDs armazenam regras de profiling. Execute os comandos a seguir para excluir todos os resultados e regras.

    # Delete all profiling results.
    kubectl delete recommendation -A --all
    # Delete all profiling rules.
    kubectl delete recommendationprofile -A --all

    Conceder permissões a usuários ram

    A autorização no ACK possui duas camadas: autorização ram para acesso básico a recursos e RBAC (Role-Based Access Control) para permissões dentro do cluster. Para uma visão geral, consulte Authorization best practices. Para conceder permissões a um usuário ram para usar o resource profiling, configure as permissões em ambos os níveis:

    1. Autorização ram

      Faça login no RAM console com sua conta Alibaba Cloud e conceda a política de sistema integrada AliyunCSFullAccess ao usuário ram. Para instruções detalhadas, consulte Grant permissions.

    2. Autorização RBAC

      Após concluir a autorização ram, conceda ao usuário ram a função developer ou superior no cluster alvo. Para instruções, consulte Use RBAC to authorize operations on cluster resources.

    Nota

    A função predefinida de desenvolvedor concede acesso de leitura e gravação a todos os recursos do Kubernetes no cluster. Para um controle mais granular, crie ou edite um ClusterRole personalizado seguindo as instruções em Use custom RBAC roles to restrict resource operations in a cluster. O recurso de resource profiling requer a adição das seguintes regras ao ClusterRole:

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