Personalizar componentes do sistema em clusters do AKS

Nesta página, descrevemos como personalizar componentes do sistema do Google nos seus clusters anexados do GKE aplicando tolerâncias e rótulos personalizados. Ao personalizar esses componentes, você tem um gerenciamento mais preciso de onde e como eles operam no seu ambiente.

Visão geral

Ao anexar um cluster ao Google Cloud, por padrão, os componentes do sistema de propriedade do Google não incluem campos personalizáveis, como tolerâncias. Como resultado, você pode ter problemas, como falha na programação de pods em nós disponíveis, o que afeta a funcionalidade e a vinculação geral do cluster. Além disso, talvez seja necessário controlar a colocação e o gerenciamento de componentes em nós específicos, incluindo a capacidade de aplicar rótulos personalizados para fins organizacionais e operacionais.

A personalização dos componentes do sistema resolve esses problemas e permite que você tenha mais controle e flexibilidade sobre como esses componentes operam no cluster. É possível aplicar tolerâncias e rótulos personalizados a componentes do sistema de propriedade do Google:

  • As tolerâncias permitem que os componentes do Google sejam programados em nós com taints específicos do Kubernetes, o que permite aplicar a separação de cargas de trabalho ou usar pools de nós especializados. As tolerâncias personalizadas resolvem diretamente problemas em que taints imutáveis impedem o posicionamento adequado dos componentes.

  • Os rótulos oferecem uma maneira flexível de categorizar e identificar os componentes do sistema do Google de acordo com seus próprios padrões operacionais. Os rótulos personalizados permitem uma melhor integração com as ferramentas atuais de monitoramento, geração de registros e aplicação de políticas.

Restrições e limitações

As seguintes restrições e limitações são aplicáveis:

  • Só é possível adicionar tolerâncias e rótulos personalizados ao registrar o cluster.
  • É possível adicionar até 10 tolerâncias e 10 rótulos personalizados ao cluster.
  • Não é possível usar os seguintes marcadores:

    • name
    • component
    • app
    • Qualquer rótulo que inclua k8s.io ou kubernetes.io, já que eles pertencem a rótulos reservados no Kubernetes
    • Qualquer marcador que inclua google
    • Qualquer marcador que inclua gke.io

Adicionar tolerâncias personalizadas

Os pods de componentes do sistema de propriedade do Google sempre incluem a seguinte tolerância:

  - key: components.gke.io/gke-managed-components
    operator: Exists

Para especificar tolerâncias personalizadas, adicione a flag --system-component-tolerations ao comando gcloud container attached clusters register:

gcloud container attached clusters register CLUSTER_NAME \
  --location=GOOGLE_CLOUD_REGION \
  ...
  --system-component-tolerations=COMPONENT_TOLERATION \

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • GOOGLE_CLOUD_REGION: a região Google Cloud para administrar o cluster.
  • COMPONENT_TOLERATION: a lista separada por vírgulas das tolerâncias que você quer adicionar. É possível fornecer uma chave, um valor, um operador e um efeito nos seguintes formatos:

    • Para o operador Equal: use o formato key=value:operator:effect, por exemplo, workload=hpc:Equal:NoSchedule. Essa configuração significa que o pod tolera um taint somente se ele tiver a chave e o valor exatos de workload=hpc.
    • Para o operador Exists: use o formato key:operator:effect, por exemplo, workload:Exists:NoSchedule. Essa configuração significa que o pod tolera qualquer taint com a chave workload no nó, independente do valor.
    • Para programar em qualquer nó: use o formato :operator:effect, por exemplo, :Exists:NoSchedule. Essa configuração significa que o pod tolera qualquer taint no nó que tenha o efeito NoSchedule e ignora a chave ou o valor do taint.

    Para conferir uma lista de operadores e efeitos que você pode usar, consulte Taints e tolerâncias na documentação do Kubernetes.

Adicionar rótulos personalizados

Para especificar rótulos personalizados, adicione a flag --system-component-labels ao comando gcloud container attached clusters register:

gcloud container attached clusters register CLUSTER_NAME \
  --location=GOOGLE_CLOUD_REGION \
  ...
  --system-component-labels=COMPONENT_LABEL \

Substitua:

  • CLUSTER_NAME: o nome do cluster.
  • GOOGLE_CLOUD_REGION: a região Google Cloud para administrar o cluster.
  • COMPONENT_LABEL: a lista separada por vírgulas de um ou mais rótulos que você quer adicionar. Você fornece um rótulo e um valor no formato key=value. Por exemplo, env=production,region=us-east-1. Embora todo rótulo precise ter uma chave, o valor associado a ela pode estar vazio. Por exemplo, backend="".

A seguir