Compartilhar via


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:

  1. ClusterResourcePlacementScheduled: indica que um recurso foi agendado para posicionamento.

    Se for falso, consulte Como solucionar problemas quando o status da condição ClusterResourcePlacementScheduled é falso.

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

  3. ClusterResourcePlacementOverridden: indica que o recurso foi substituído.

    Se for falso, consulte Como solucionar problemas quando o status da condição ClusterResourcePlacementOverridden for falso.

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

  5. ClusterResourcePlacementApplied: indica que o recurso foi aplicado.

    Se for falso, consulte Como solucionar problemas quando o status da condição ClusterResourcePlacementApplied for false.

  6. 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?

  1. Verifique se a ClusterResourcePlacementRolloutStarted ClusterResourcePlacement condição no status está definida como verdadeira ou falsa.
  2. Verifique se a ClusterResourcePlacementApplied condição está definida como desconhecida, falsa ou verdadeira.
  3. Verifique a placementStatuses seção no status do ClusterResourcePlacement cluster específico. A FailedPlacements 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

  1. Execute o comando a seguir para exibir o status da ClusterResourcePlacement implantação. Nesse caso, o ClusterResourcePlacement nome é test-crp.

    kubectl describe clusterresourceplacement test-crp
    
  2. Veja um exemplo de saída. Na placementStatuses seção do test-crp status, observe que ele distribuiu recursos para dois clusters membros e, portanto, tem duas ClusterResourceBindings 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
    
  3. 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 ao test-crp. O ClusterResourceBinding 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:

  1. Identifique o namespace do cluster de membros e o ClusterResourcePlacement nome. O formato do namespace é fleet-member-{clusterName}.

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