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:
- 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 deminReplicas
emaxReplicas
conforme necessário.
nodePools: - name: my-new-node-pool … replicas: 3 ... autoscaling: minReplicas: 1 maxReplicas: 5
- 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:
Edite um
nodePool
específico no arquivo de configuração do cluster de usuário e inclua o campoautoscaling
. Adapte os valores deminReplicas
emaxReplicas
conforme necessário.nodePools:
- name: my-existing-node-pool … replicas: 3 ... autoscaling: minReplicas: 1 maxReplicas: 5
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:
Edite o arquivo de configuração do cluster de usuário e remova o campo
autoscaling
deste pool de nós.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 podskube-system
. Para mais informações sobre como adicionar manualmente umPodDisruptionBudget
para os podskube-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 autoescalador. 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:
- Como funciona a redução de escala? (em inglês)
- O escalonador automático de clusters funciona com o PodDisruptionBudget em redução de escala? (em inglês)
- Que tipos de pods podem impedir que o escalonador automático de cluster remova um nó? (em inglês)