Partager via


Résolution des problèmes liés à l’API ClusterResourcePlacement dans Azure Kubernetes Fleet Manager

Ce guide de résolution des problèmes vous aide à résoudre les ClusterResourcePlacement problèmes liés aux objets d’API lorsque vous utilisez Azure Kubernetes Fleet Manager. La résolution de ces erreurs sur le cluster hub nécessite une connaissance des objets suivants :

  • ClusterResourceSnapshot
  • ClusterSchedulingPolicySnapshot
  • ClusterResourceBinding
  • Work

Pour plus d’informations sur chaque objet, consultez la référence de l’API.

Progression complète du déploiement de ClusterResourcePlacement

La compréhension de la progression et de l’état de la ClusterResourcePlacement ressource personnalisée est essentielle pour diagnostiquer et identifier les échecs. Vous pouvez afficher l’état de la ClusterResourcePlacement ressource personnalisée à l’aide de la commande suivante :

kubectl describe clusterresourceplacement <name>

Pour plus d’informations, consultez l’API ClusterResourcePlacement pour propager des ressources aux clusters membres.

La progression complète est ClusterResourcePlacement la suivante :

  1. ClusterResourcePlacementScheduled : indique qu’une ressource a été planifiée pour le placement.

    Si la valeur est false, consultez Comment résoudre les problèmes lorsque l’état de la condition ClusterResourcePlacementScheduled a la valeur false.

  2. ClusterResourcePlacementRolloutStarted : indique que le processus de déploiement a commencé.

    Si la valeur est false, consultez Comment résoudre les problèmes lorsque l’état de la condition ClusterResourcePlacementRolloutStarted a la valeur false.

  3. ClusterResourcePlacementOverridden : indique que la ressource a été remplacée.

    Si la valeur est false, consultez Comment résoudre les problèmes lorsque l’état de la condition ClusterResourcePlacementOverridden a la valeur false.

  4. ClusterResourcePlacementWorkSynchronized : indique que les objets de travail ont été synchronisés.

    Si la valeur est false, consultez Comment résoudre les problèmes lorsque l’état de la condition ClusterResourcePlacementWorkSynchronized a la valeur false.

  5. ClusterResourcePlacementApplied : indique que la ressource a été appliquée.

    Si la valeur est false, consultez Comment résoudre les problèmes lorsque l’état de la condition ClusterResourcePlacementApplied a la valeur false.

  6. ClusterResourcePlacementAvailable : indique que la ressource est disponible.

    Si la valeur est false, consultez Comment résoudre les problèmes lorsque l’état de la condition ClusterResourcePlacementAvailable a la valeur false.

Questions fréquentes (FAQ)

Comment puis-je déboguer si certains clusters ne sont pas sélectionnés comme prévu ?

Vérifiez l’état de la sélection des ClusterSchedulingPolicySnapshot clusters et de la raison de leur sélection.

Comment puis-je déboguer si un cluster sélectionné n’a pas les ressources attendues ou si ClusterResourcePlacement ne récupère pas les dernières modifications ?

  1. Vérifiez si la condition dans l’état ClusterResourcePlacementRolloutStarted ClusterResourcePlacement est définie sur true ou false.
  2. Vérifiez si la ClusterResourcePlacementApplied condition est définie sur inconnue, false ou true.
  3. Vérifiez la section dans l’état placementStatuses ClusterResourcePlacement du cluster particulier. La FailedPlacements section doit fournir des raisons pour toute défaillance d’application de ressource.

Comment puis-je rechercher et vérifier la dernière version de ClusterSchedulingPolicySnapshot pour un déploiement ClusterResourcePlacement ?

Pour trouver la dernière version ClusterSchedulingPolicySnapshot du déploiement d’API ClusterResourcePlacement , exécutez la commande suivante :

kubectl get clusterschedulingpolicysnapshot -l kubernetes-fleet.io/is-latest-snapshot=true,kubernetes-fleet.io/parent-CRP={CRPName}

Note

Dans cette commande, remplacez {CRPName} par votre ClusterResourcePlacement nom.

Ensuite, comparez la ClusterSchedulingPolicySnapshot ClusterResourcePlacement stratégie pour vous assurer qu’elles correspondent, à l’exclusion du numberOfClusters champ de la spécification « ClusterResourcePlacement ».

Si le type de placement est PickN, vérifiez si le nombre de clusters demandés dans la ClusterResourcePlacement stratégie correspond à la valeur de l’étiquette number-of-clusters .

Comment trouver la dernière ressource ClusterResourceBinding ?

La commande suivante répertorie toutes les ClusterResourceBindings instances associées à ClusterResourcePlacement:

Kubectl get clusterresourcebinding -l kubernetes-fleet.io/parent-CRP={CRPName}

Note

Dans cette commande, remplacez {CRPName} par votre ClusterResourcePlacement nom.

Exemple

  1. Exécutez la commande suivante pour afficher l’état du ClusterResourcePlacement déploiement. Dans ce cas, le ClusterResourcePlacement nom est test-crp.

    kubectl describe clusterresourceplacement test-crp
    
  2. Voici un exemple de sortie. Dans la placementStatuses section de l’état test-crp , notez qu’il dispose de ressources distribuées à deux clusters membres et, par conséquent, a deux ClusterResourceBindings instances :

    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. Pour obtenir la ClusterResourceBindings valeur, exécutez la commande suivante :

    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
    

    La sortie répertorie toutes les ClusterResourceBindings instances associées à test-crp. Le ClusterResourceBinding nom de la ressource utilise le format suivant :

    {CRPName}-{clusterName}-{suffix}

Comment trouver la dernière ressource ClusterResourceSnapshot ?

Pour rechercher la dernière ressource ClusterResourceSnapshot, exécutez la commande suivante :

kubectl get clusterresourcesnapshot -l kubernetes-fleet.io/is-latest-snapshot=true,kubernetes-fleet.io/parent-CRP={CRPName}

Note

Dans cette commande, remplacez {CRPName} par votre ClusterResourcePlacement nom.

Comment trouver la ressource de travail appropriée associée à ClusterResourcePlacement ?

Pour rechercher la ressource de travail appropriée, procédez comme suit :

  1. Identifiez l’espace de noms du cluster membre et le ClusterResourcePlacement nom. Le format de l’espace de noms est fleet-member-{clusterName}.

  2. Pour obtenir la ressource de travail, exécutez la commande suivante :

    kubectl get work -n fleet-member-{clusterName} -l kubernetes-fleet.io/parent-CRP={CRPName}
    

    Note

    Dans cette commande, remplacez et {CRPName} par {clusterName} les noms que vous avez identifiés lors de la première étape.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.