Todos os produtos
Search
Central de documentação

Container Compute Service:Configure um acs-profile para injetar automaticamente configurações de pod

Última atualização: Jun 29, 2026

O acs-profile é um ConfigMap no nível do cluster que injeta automaticamente configurações de rede e DNS nos pods do ACS durante a criação. Em vez de adicionar IDs de vSwitch, IDs de grupo de segurança ou configurações de DNS em cada YAML de carga de trabalho, defina esses padrões uma única vez no acs-profile e o ACS os aplicará de forma transparente.

Como funciona

Ao criar um pod, o ACS lê o ConfigMap chamado acs-profile no namespace kube-system e mescla os padrões configurados na especificação do pod. Não é necessário reiniciar o componente acs-virtual-node ao atualizar o ConfigMap.

Comportamento da atualização:

  • Novos pods: as configurações atualizadas entram em vigor imediatamente.

  • Pods existentes: as novas configurações só são aplicadas após uma atualização contínua (rolling update).

O acs-profile oferece suporte a dois tipos de configuração:

  • Parâmetros de cluster: configurações padrão de rede aplicadas a todos os pods do ACS (IDs de vSwitch, grupo de segurança, VPC e modo de resolução de DNS).

  • Seletores: regras baseadas em rótulos que injetam anotações e rótulos adicionais nos pods correspondentes a critérios específicos.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Um cluster ACS com o componente acs-virtual-node implantado.

  • O kubectl configurado com acesso ao cluster.

  • Permissão para ler e editar ConfigMaps no namespace kube-system.

Visualize a configuração atual

Execute o comando a seguir para visualizar o acs-profile atual:

kubectl get cm -n kube-system acs-profile -o yaml

Um acs-profile padrão tem a seguinte estrutura:

apiVersion: v1
kind: ConfigMap
metadata:
  name: acs-profile
  namespace: kube-system
data:
  enablePrivateZone: "false"
  securityGroupId: sg-2zeeyaaxlkq9sppl****
  vSwitchIds: vsw-2ze23nqzig8inprou****,vsw-2ze94pjtfuj9vaymf****
  vpcId: vpc-2zeghwzptn5zii0w7****
  selectors: ""

Atualize os parâmetros do cluster

Os parâmetros de cluster no acs-profile definem o ambiente de rede padrão para todos os pods do ACS. Pods que não definem explicitamente esses valores os herdam do perfil.

Edite o ConfigMap com o kubectl:

kubectl edit configmap acs-profile -n kube-system

Como alternativa, use o console do ACS:

  1. Faça login no console do ACS.

  2. Na página Clusters, clique em Clusters e clique no nome do seu cluster.

  3. No painel de navegação à esquerda, escolha Configurations > ConfigMaps.

  4. Selecione kube-system na lista suspensa de namespaces.

  5. Localize acs-profile e clique em Edit YAML.

A tabela a seguir descreve os parâmetros atualizáveis:

Parâmetro

Exemplo

Descrição

securityGroupId

sg-2ze0b9o8pjjzts4h****

Grupo de segurança dos pods do ACS. Controla as regras de tráfego de entrada e saída para todos os pods que usam este perfil.

vSwitchIds

vsw-2zeet2ksvw7f14ryz****

IDs dos vSwitches associados aos pods do ACS. Separe múltiplos IDs por vírgulas. Determina as sub-redes onde os pods serão iniciados.

vpcId

vpc-2zeghwzptn5zii0w7****

Virtual Private Cloud (VPC) onde os pods do ACS são implantados. Deve corresponder à VPC dos vSwitches especificados.

enablePrivateZone

"false"

Define se o PrivateZone será usado para resolução de nomes de domínio. Defina como "true" caso seus pods precisem resolver registros DNS privados.

Nota

Estes são padrões no nível do cluster. Uma especificação de pod que defina explicitamente qualquer um desses valores terá precedência sobre os padrões do acs-profile.

Solucione erros de configuração

Caso exista um erro de formatação no acs-profile após uma edição, a configuração não entrará em vigor. O ACS registra o erro como um evento do Kubernetes. Execute o comando abaixo para visualizar os detalhes do erro:

kubectl -n kube-system get event --field-selector involvedObject.namespace=kube-system,involvedObject.name=acs-profile

Configure seletores

Os seletores permitem injetar anotações e rótulos adicionais em pods específicos com base em seus namespaces ou rótulos, sem modificar os arquivos YAML desses pods.

Durante a criação de um pod, o ACS avalia cada seletor sequencialmente. Para cada seletor cujos critérios correspondam ao pod, o ACS mescla as configurações de effect (anotações e rótulos) no pod. Anotações e rótulos já presentes nunca são sobrescritos.

Parâmetros do seletor

Parâmetro

Obrigatório

Descrição

name

Sim

Nome exclusivo para o seletor.

namespaceSelector

Não

Filtra pods pelos rótulos de seu namespace.

namespaceSelector.matchLabels

Não

Regra de correspondência no formato {key: value}.

namespaceSelector.matchExpressions

Não

Lista de requisitos do seletor. Operadores válidos: In, NotIn, Exists, DoesNotExist. Para In e NotIn, os valores não podem estar vazios.

objectSelector

Não

Filtra pods pelos rótulos do próprio pod.

objectSelector.matchLabels

Não

Regra de correspondência no formato {key: value}.

objectSelector.matchExpressions

Não

Lista de requisitos do seletor. Usa os mesmos operadores de namespaceSelector.matchExpressions.

effect

Não

Anotações e rótulos a serem injetados nos pods correspondentes.

Importante

O namespaceSelector e o objectSelector usam lógica AND. Quando ambos estão configurados, o pod deve satisfazer as duas condições para haver correspondência. Configure pelo menos um deles para cada seletor. Se nenhum for configurado, mas o effect estiver definido, o efeito será aplicado a todos os pods do ACS no cluster.

Prioridade do seletor

Se múltiplos seletores corresponderem ao mesmo pod, o ACS os aplicará na ordem em que aparecem no array selectors. As anotações e rótulos injetados seguem esta prioridade:

  1. Anotações e rótulos existentes no pod (maior prioridade — nunca sobrescritos).

  2. As configurações de effect do primeiro seletor correspondente.

  3. As configurações de effect dos seletores correspondentes subsequentes.

Exemplo

O acs-profile a seguir usa um seletor chamado selector-demo1 para injetar uma configuração personalizada de DNS em pods que atendem a critérios específicos de rótulos:

apiVersion: v1
kind: ConfigMap
metadata:
  name: acs-profile
  namespace: kube-system
data:
  selectors: |
    [
      {
        "name": "selector-demo1",
        "namespaceSelector": {
          "matchLabels": {
            "kubernetes.io/metadata.name": "dev-ns"
          }
        },
        "objectSelector": {
          "matchLabels": {
            "acs": "true"
          },
          "matchExpressions": [
            {
              "key": "usage",
              "operator": "In",
              "values": ["testing"]
            }
          ]
        },
        "effect": {
          "annotations": {
            "network.alibabacloud.com/custom-dnsconfig": "{\"servers\":[\"114.114.114.114\",\"8.8.8.8\"],\"searches\":[\"xx.com\",\"yy.com\"],\"options\":[\"ndots:2\",\"edns0\"]}"
          },
          "labels": {
            "created-by-acs": "true"
          }
        }
      }
    ]

Funcionamento deste seletor: qualquer pod no namespace dev-ns que tenha tanto o rótulo acs=true quanto o rótulo usage=testing receberá:

  • Anotação: network.alibabacloud.com/custom-dnsconfig com os servidores DNS 114.114.114.114 e 8.8.8.8, domínios de busca xx.com e yy.com, e opções ndots:2 e edns0.

  • Rótulo: created-by-acs=true.

Para verificar se o seletor funciona corretamente, crie um pod que atenda aos critérios:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: dev-ns
  labels:
    acs: "true"
    usage: "testing"
spec:
  containers:
  - name: nginx
    image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
    command: ["sleep", "infinity"]
    ports:
    - containerPort: 80

Após criar o pod, verifique se as anotações e rótulos foram injetados:

kubectl get pod nginx -n dev-ns -o yaml

Na saída do comando, confirme se a anotação network.alibabacloud.com/custom-dnsconfig e o rótulo created-by-acs=true aparecem em metadata.

image

Próximos passos