Solução de problemas da API ClusterResourcePlacement no Gerenciador de Frota do Kubernetes do Azure
Este guia de solução de problemas ajuda você a resolver ClusterResourcePlacement
problemas relacionados ao objeto de API ao usar o Gerenciador de Frotas do Kubernetes do Azure. A solução desses erros no cluster de hub requer conhecimento dos seguintes objetos:
ClusterResourceSnapshot
ClusterSchedulingPolicySnapshot
ClusterResourceBinding
Work
Para obter mais detalhes sobre cada objeto, consulte a referência da API.
Progressão completa da implantação ClusterResourcePlacement
Entender a progressão e o ClusterResourcePlacement
status do recurso personalizado é crucial para diagnosticar e identificar falhas. Você pode exibir o status do ClusterResourcePlacement
recurso personalizado usando o seguinte comando:
kubectl describe clusterresourceplacement <name>
Para obter mais informações, consulte Usar a API ClusterResourcePlacement para propagar recursos para clusters membros.
A progressão completa de ClusterResourcePlacement
é a seguinte:
ClusterResourcePlacementScheduled: indica que um recurso foi agendado para posicionamento.
Se for falso, consulte Como solucionar problemas quando o status da condição ClusterResourcePlacementScheduled é falso.
ClusterResourcePlacementRolloutStarted: indica que o processo de distribuição foi iniciado.
Se for falso, consulte Como solucionar problemas quando o status da condição ClusterResourcePlacementRolloutStarted for false.
ClusterResourcePlacementOverridden: indica que o recurso foi substituído.
Se for falso, consulte Como solucionar problemas quando o status da condição ClusterResourcePlacementOverridden for falso.
ClusterResourcePlacementWorkSynchronized: indica que os objetos de trabalho foram sincronizados.
Se for falso, consulte Como solucionar problemas quando o status da condição ClusterResourcePlacementWorkSynchronized for false.
ClusterResourcePlacementApplied: indica que o recurso foi aplicado.
Se for falso, consulte Como solucionar problemas quando o status da condição ClusterResourcePlacementApplied for false.
ClusterResourcePlacementAvailable: indica que o recurso está disponível.
Se for falso, consulte Como solucionar problemas quando o status da condição ClusterResourcePlacementAvailable for false.
Perguntas frequentes
Como posso depurar se alguns clusters não forem selecionados conforme o esperado?
Verifique o status de para determinar quais clusters foram selecionados e o motivo de ClusterSchedulingPolicySnapshot
sua seleção.
Como posso depurar se um cluster selecionado não tiver os recursos esperados ou se ClusterResourcePlacement não selecionar as alterações mais recentes?
- Verifique se a
ClusterResourcePlacementRolloutStarted
ClusterResourcePlacement
condição no status está definida como verdadeira ou falsa.- Se for falso, consulte Como depurar o status da condição ClusterResourcePlacementScheduled definido como falso.
- Se for verdadeiro, vá para a etapa 2.
- Verifique se a
ClusterResourcePlacementApplied
condição está definida como desconhecida, falsa ou verdadeira.- Se desconhecido, aguarde a conclusão do processo porque os recursos ainda estão sendo aplicados ao cluster membro. Se o status permanecer desconhecido por um tempo, abra um problema porque esse é um comportamento incomum.
- Se for falso, consulte Como depurar o status da condição ClusterResourcePlacementApplied definido como falso.
- Se for verdadeiro, verifique se o recurso existe no cluster do hub.
- Verifique a
placementStatuses
seção no status doClusterResourcePlacement
cluster específico. AFailedPlacements
seção deve fornecer motivos para quaisquer falhas no aplicativo de recursos.
Como posso encontrar e verificar o ClusterSchedulingPolicySnapshot mais recente para uma implantação de ClusterResourcePlacement?
Para encontrar a versão mais recente ClusterSchedulingPolicySnapshot
para a implantação da ClusterResourcePlacement
API, execute o seguinte comando:
kubectl get clusterschedulingpolicysnapshot -l kubernetes-fleet.io/is-latest-snapshot=true,kubernetes-fleet.io/parent-CRP={CRPName}
Observação
Neste comando, substitua {CRPName}
pelo seu ClusterResourcePlacement
nome.
Em seguida, compare o ClusterSchedulingPolicySnapshot
com a ClusterResourcePlacement
política para garantir que eles correspondam, excluindo o numberOfClusters
campo da especificação 'ClusterResourcePlacement'.
Se o tipo de posicionamento for PickN
, verifique se o número de clusters solicitados na ClusterResourcePlacement
política corresponde ao valor do number-of-clusters
rótulo.
Como posso encontrar o recurso ClusterResourceBinding mais recente?
O comando a seguir lista todas as ClusterResourceBindings
instâncias associadas a ClusterResourcePlacement
:
Kubectl get clusterresourcebinding -l kubernetes-fleet.io/parent-CRP={CRPName}
Observação
Neste comando, substitua {CRPName}
pelo seu ClusterResourcePlacement
nome.
Exemplo
Execute o comando a seguir para exibir o status da
ClusterResourcePlacement
implantação. Nesse caso, oClusterResourcePlacement
nome étest-crp
.kubectl describe clusterresourceplacement test-crp
Veja um exemplo de saída. Na
placementStatuses
seção dotest-crp
status, observe que ele distribuiu recursos para dois clusters membros e, portanto, tem duasClusterResourceBindings
instâncias:status: conditions: - lastTransitionTime: "2023-11-23T00:49:29Z" ... placementStatuses: - clusterName: kind-cluster-1 conditions: ... type: ResourceApplied - clusterName: kind-cluster-2 conditions: ... reason: ApplySucceeded status: "True" type: ResourceApplied
Para obter o
ClusterResourceBindings
valor, execute o seguinte comando:kubectl get clusterresourcebinding -l kubernetes-fleet.io/parent-CRP=test-crp
NAME WORKCREATED RESOURCESAPPLIED AGE test-crp-kind-cluster-1-be990c3e True True 33s test-crp-kind-cluster-2-ec4d953c True True 33s
A saída lista todas as
ClusterResourceBindings
instâncias associadas aotest-crp
. OClusterResourceBinding
nome do recurso usa o seguinte formato:{CRPName}-{clusterName}-{suffix}
Como posso encontrar o recurso ClusterResourceSnapshot mais recente?
Para localizar o recurso ClusterResourceSnapshot mais recente, execute o seguinte comando:
kubectl get clusterresourcesnapshot -l kubernetes-fleet.io/is-latest-snapshot=true,kubernetes-fleet.io/parent-CRP={CRPName}
Observação
Neste comando, substitua {CRPName}
pelo seu ClusterResourcePlacement
nome.
Como posso encontrar o recurso de trabalho correto associado a ClusterResourcePlacement?
Para encontrar o recurso de trabalho correto, siga estas etapas:
Identifique o namespace do cluster de membros e o
ClusterResourcePlacement
nome. O formato do namespace éfleet-member-{clusterName}
.Para obter o recurso de trabalho, execute o seguinte comando:
kubectl get work -n fleet-member-{clusterName} -l kubernetes-fleet.io/parent-CRP={CRPName}
Observação
Neste comando, substitua
{clusterName}
e{CRPName}
pelos nomes que você identificou na primeira etapa.
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.