Depurando o autoscaler de cluster
Revise as opções que você tem para depurar seu autoscaler de cluster e localize as causas raiz para falhas.
Antes de começar: acesse o seu cluster do Red Hat OpenShift.
Etapa 1: Verificar a versão
- Verifique se o complemento de autoescalonamento do cluster está instalado e pronto para uso.
Saída de exemploibmcloud oc cluster addon ls --cluster CLUSTER_NAMEName Version Health State Health Status cluster-autoscaler 1.0.4 normal Addon Ready - Compare a versão que é executada em seu cluster com a versão mais recente no log de mudanças do escalador automático de cluster.
- Se a versão estiver desatualizada, implemente a versão mais recente do escalador automático de cluster para o cluster.
Etapa 2: Verificar a configuração
Verifique se o autoscaler do cluster está configurado corretamente.
-
Obtenha o arquivo de configuração YAML do configmap autoscaler do cluster.
oc get cm iks-ca-configmap -n kube-system -o yaml > iks-ca-configmap.yaml -
No campo
data.workerPoolsConfig.json, verifique se os conjuntos de trabalhadores corretos estão ativados com o tamanho mínimo e máximo por conjunto de trabalhadores."name": "<worker_pool_name>": o nome do conjunto de trabalhadores no configmap deve ser exatamente o mesmo que o nome do conjunto de trabalhadores no cluster. Múltiplos conjuntos de trabalhadores devem ser separados por vírgula. Para verificar o nome dos conjuntos de trabalhadores de cluster, executeibmcloud oc worker-pool ls -c <cluster_name_or_ID>."minSize": 2: em geral, ominSizedeve ser2ou maior."maxSize": 3: OmaxSizedeve ser igual ou maior do que ominSize."enabled": true: configure o valor comotruepara ativar o ajuste automático de escala do conjunto de trabalhadores.
data: workerPoolsConfig.json: | [{"name": "default", "minSize": 2, "maxSize": 3, "enabled": true }] -
No campo
metadata.annotations.workerPoolsConfigStatus, verifique se há uma mensagem de erro FAILED CODE. Siga qualquer etapa de recuperação que esteja na mensagem de erro. Por exemplo, é possível obter uma mensagem semelhante à seguinte, indicando que deve-se ter as permissões corretas para o grupo de recursos no qual o cluster está.annotations: workerPoolsConfigStatus: '{"1:3:default":"FAILED CODE: 400 ... \"description\":\"Unable to validate the request with resource group manager.\",\"type\":\"Authentication\\"recoveryCLI\":\"To list available resource groups, run ''ibmcloud resource groups''. Make sure that your cluster and the other IBM Cloud resources that you are trying to use are in the same resource group. Verify that you have permissions to work with the resource group. If you think that the resource group is set up correctly and you still can't use it, contact IBM Cloud support.\"}"}'
Etapa 3: Revisar o status do escalador automático de cluster
Revise o status do autoscaler de cluster.
oc describe cm -n kube-system cluster-autoscaler-status
status: revise a mensagem de status para obter mais informações de resolução de problemas, se houver.Health: revise o funcionamento geral do autoscaler de cluster em busca de quaisquer erros ou falhas.ScaleUp: Analisar o andamento das atividades de ampliação. Em geral, se o número de nós de trabalho que estão prontos e registrados for o mesmo, o aumento de escala não tem umNoActivity, pois seu conjunto de nós de trabalho já possui nós de trabalho suficientes.ScaleDown: Verifique o andamento das atividades de redução de escala. Se o autoscalador de cluster identificarNoCandidates, seu conjunto de trabalhadores não será escalonado para baixo porque nenhum dos nós do trabalhador pode ser removido sem tirar recursos solicitados de suas cargas de trabalho.Events: revise os eventos para obter mais informações de resolução de problemas, se houver.
Exemplo de um status funcional do escalador automático de cluster
Data
====
status:
----
Cluster-autoscaler status at 2020-02-04 19:51:50.326683568 +0000 UTC:
Cluster-wide:
Health: Healthy (ready=2 unready=0 notStarted=0 longNotStarted=0 registered=2longUnregistered=0)
LastProbeTime: 2020-02-04 19:51:50.324437686 +0000 UTC m=+9022588.836540262
LastTransitionTime: 2019-10-23 09:36:25.741087445 +0000 UTC m=+64.253190008
ScaleUp: NoActivity (ready=2 registered=2)
LastProbeTime: 2020-02-04 19:51:50.324437686 +0000 UTC m=+9022588.836540262
LastTransitionTime: 2019-10-23 09:36:25.741087445 +0000 UTC m=+64.253190008
ScaleDown: NoCandidates (candidates=0)
LastProbeTime: 2020-02-04 19:51:50.324437686 +0000 UTC m=+9022588.836540262
LastTransitionTime: 2019-10-23 09:36:25.741087445 +0000 UTC m=+64.253190008
Events: none
Etapa 4: Verificar o pod do escalador automático de cluster
Verifique o funcionamento do pod de autoscaler de cluster.
-
Obtenha o pod de autoscaler de cluster. Se o status não for Em execução, descreva o pod.
oc get pods -n kube-system | grep ibm-iks-cluster-autoscaler -
Descreva o pod de autoscaler de cluster. Revise a seção Eventos para obter mais informações de resolução de problemas.
oc describe pod -n kube-system <pod_name> -
Revise a seção Comando para verificar se a configuração de autoscaler de cluster customizada corresponde ao que você espera, como o valor
scale-down-delay-after-add.Command: ./cluster-autoscaler --v=4 --balance-similar-node-groups=true --alsologtostderr=true --stderrthreshold=info --cloud-provider=IKS --skip-nodes-with-local-storage=true --skip-nodes-with-system-pods=true --scale-down-unneeded-time=10m --scale-down-delay-after-add=10m --scale-down-delay-after-delete=10m --scale-down-utilization-threshold=0.5 --scan-interval=1m --expander=random --leader-elect=false --max-node-provision-time=120m
Etapa 5: Procurar os logs de pod
Procure mensagens relevantes nos logs do pod de escalador automático de cluster, como mensagens de falha como lastScaleDownFailTime, o Final scale-up plan ou eventos do escalador automático de cluster.
Se o pod do autoscaler do seu cluster estiver com o estado “inactive” e não conseguir transmitir logs, verifique os logs do pod na sua instância do IBM Cloud Logs. Note que se o seu administrador de cluster não ativou IBM Cloud Logs para o seu cluster, você pode não ter nenhum logs para revisar.
oc logs -n kube-system <pod_name> -c ibm-iks-cluster-autoscaler > logs.txt
Etapa 6: Reinicie o pod
Se você não localizar nenhuma falha ou mensagem de erro e já tiver ativado a criação de log, reinicie o pod do escalador automático de cluster. A implementação recria o pod.
oc delete pod -n kube-system <pod_name>
Etapa 6: Desativar e ativar novamente
Opcional: se você tiver concluído as etapas de depuração e o seu cluster ainda não for escalado, será possível desativar e reativar o ajustador automático de escala editando o mapa de configuração.
-
Edite
iks-ca-configmap.oc edit cm iks-ca-configmap -n kube-systemSaída de exemplo:
apiVersion: v1 data: workerPoolsConfig.json: | [{"name": "default", "minSize": 2, "maxSize": 5, "enabled": true }] kind: ConfigMap metadata: annotations: workerPoolsConfigStatus: '{"2:5:default":"SUCCESS"}' creationTimestamp: "2020-03-24T17:44:35Z" name: iks-ca-configmap namespace: kube-system resourceVersion: "40964517" selfLink: /api/v1/namespaces/kube-system/configmaps/iks-ca-configmap uid: 11a1111a-aaaa-1a11-aaa1-aa1aaaa11111 -
Configure o parâmetro
enabledparafalsee salve as suas mudanças. -
Edite
iks-ca-configmapnovamente. Configure o parâmetro ativado paratruee salve suas mudanças.oc edit cm iks-ca-configmap -n kube-system -
Se o seu cluster ainda não estiver sendo escalado depois de desativar e ativar novamente o ajustador automático de escala de cluster, será possível editar os parâmetros
minSizeoumaxSizenoiks-ca-configmap. Às vezes, a edição dos parâmetros do trabalhadorminSizeemaxSizereinicia o escalador automático de cluster com êxito.oc edit cm iks-ca-configmap -n kube-system -
Edite os parâmetros
minSizeoumaxSizee salve suas mudanças.
Etapa 7: Verifique se o problema foi resolvido
Monitore as atividades de autoscaler do cluster em seu cluster para ver se o problema está resolvido. Se você ainda experimentar problemas, consulte Feedback, perguntas e suporte.