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.
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.
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.
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}
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.
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.
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.