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

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 de ClusterResourcePlacement est 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 ClusterSchedulingPolicySnapshot pour déterminer quels clusters ont été sélectionnés et 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 ClusterResourcePlacementRolloutStartedClusterResourcePlacement 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 placementStatuses dans l’état ClusterResourcePlacement pour le cluster spécifique. 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}

Remarque

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

Ensuite, comparez le ClusterSchedulingPolicySnapshot avec la politique ClusterResourcePlacement pour s'assurer qu'elles correspondent, en excluant le champ numberOfClusters 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}

Remarque

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 section placementStatuses de l'état test-crp, observez qu'il a distribué des ressources à deux clusters de membres et, par conséquent, il dispose de deux instances ClusterResourceBindings.

    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}

Remarque

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

    Remarque

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

Contactez-nous pour obtenir de l’aide

Si vous avez des questions ou avez besoin d’aide, créez une demande de support ou demandez le support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.