Escalonador automático de clusters

10

Nesta página, mostramos como fazer o escalonamento automático dos seus clusters. Para saber mais sobre como o escalonador automático de clusters funciona, consulte esta página.

O escalonamento automático de clusters redimensiona o número de nós em um determinado pool de nós com base nas demandas das cargas de trabalho. Especifique valores minReplicas e maxReplicas para cada pool de nós no cluster.

Para um pool de nós individual, minReplicas precisa ser ≥ 1. No entanto, a soma dos nós de cluster de usuário sem taint em qualquer momento precisa ser pelo menos três. Isso significa que a soma dos valores minReplicas de todos os pools de nós com escalonamento automático, além da soma dos valores replicas de todos os pools de nós sem escalonamento automático, precisa ser pelo menos três.

Criar um cluster de usuário com escalonamento automático

Para criar um cluster de usuário com o escalonamento automático, adicione o campo autoscaling à seção nodePools no arquivo de configuração do cluster de usuário.

nodePools:
- name: pool‐1
  …
  replicas: 3
  ...
  autoscaling:
    minReplicas: 1
    maxReplicas: 5

Essa configuração cria um pool de nós com 3 réplicas e aplica o escalonamento automático com o tamanho mínimo do pool de nós como 1 e o tamanho máximo do pool de nós como 5.

O valor minReplicas precisa ser ≥ 1

Adicione um pool de nós com escalonamento automático

Para adicionar um pool de nós com escalonamento automático a um cluster atual:

  1. Edite o arquivo de configuração do cluster de usuário para adicionar um novo pool de nós e inclua o campo autoscaling. Adapte os valores de minReplicas e maxReplicas conforme necessário.
nodePools:
- name: my-new-node-pool
  …
  replicas: 3
  ...
  autoscaling:
    minReplicas: 1
    maxReplicas: 5
  1. Execute o comando gkectl update cluster --config <var class="edit">USER_CLUSTER_CONFIG</var> --kubeconfig <var class="edit">ADMIN_CLUSTER_KUBECONFIG</var>.

Ative um pool de nós para escalonamento automático

Para ativar o escalonamento automático em um pool de nós em um cluster atual:

  1. Edite um nodePool específico no arquivo de configuração do cluster de usuário e inclua o campo autoscaling. Adapte os valores de minReplicas e maxReplicas conforme necessário.

    nodePools:

    • name: my-existing-node-pool … replicas: 3 ... autoscaling: minReplicas: 1 maxReplicas: 5
  2. Execute o comando gkectl update cluster --config <var class="edit">USER_CLUSTER_CONFIG</var> --kubeconfig <var class="edit">ADMIN_CLUSTER_KUBECONFIG</var>.

Desative o escalonamento automático de um pool de nós existente

Para desativar o escalonamento automático de um pool de nós específico:

  1. Edite o arquivo de configuração do cluster de usuário e remova o campo autoscaling deste pool de nós.

  2. Execute o comando gkectl update cluster.

Verifique o comportamento do escalonador automático de cluster

É possível determinar o que o escalonador automático de cluster está fazendo de várias maneiras.

Verifique os registros do escalonador automático de cluster

Primeiro, encontre o nome do pod do escalonador automático de cluster. Execute este comando, substituindo USER_CLUSTER_NAME pelo nome do cluster de usuário:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods -n USER_CLUSTER_NAMEvar> | grep cluster-autoscaler

Para verificar os registros no pod do escalonador automático de cluster, substitua POD_NAME pelo nome do pod:

kubectl --kubeconfig ADMIN_KUBECONFIG logs cluster-autoscaler-POD_NAME --container cluster-autoscaler ADMIN_KUBECONFIG

Verifique o mapa de configuração

O escalonador automático de clusters publica o mapa de configuração kube-system/cluster-autoscaler-status. Para ver esse mapa, execute este comando:

run kubectl --kubeconfig USER_KUBECONFIG get configmap cluster-autoscaler-status -n kube-system -o yaml

Verifique os eventos de escalonamento automático do cluster.

É possível verificar os eventos de escalonamento automático do cluster:

  • Em pods (especialmente aqueles que não podem ser programados ou em nós subutilizados)
  • Em nós
  • No mapa de configuração kube-system/cluster-escalonador-status.

Solução de problemas

Consulte as informações de solução de problemas a seguir para o escalonador automático de cluster:

  • Talvez você esteja enfrentando uma das limitações do escalonador automático de cluster.
  • Se você tiver problemas com a diminuição de cluster, consulte Programação e interrupção de pods. Talvez seja necessário adicionar um PodDisruptionBudget para os pods kube-system. Para mais informações sobre como adicionar manualmente um PodDisruptionBudget para os pods kube-system, consulte as Perguntas frequentes do escalonador automático de cluster do Kubernetes.
  • Ao reduzir a escala, o escalonador automático de clusters respeita as regras de programação e remoção definidas nos pods. Essas restrições podem impedir que um nó seja excluído pelo escalonador automático. A exclusão de um nó pode ser evitada se ele contiver um pod com qualquer uma das seguintes condições:
    • As regras de afinidade ou antiafinidade impedem a reprogramação.
    • O pod tem armazenamento local.
    • O Pod não é gerenciado por um Controlador, como o Deployment, o StatefulSet, o Job ou o ReplicaSet.

Para mais informações sobre o escalonador automático de clusters e prevenção de interrupções, consulte os seguintes itens nas Perguntas frequentes sobre o escalonador automático de clusters do Kubernetes: