Dela via


Felsöka ClusterResourcePlacement API i Azure Kubernetes Fleet Manager

Den här felsökningsguiden hjälper dig att lösa ClusterResourcePlacement API-objektrelaterade problem när du använder Azure Kubernetes Fleet Manager. Felsökning av dessa fel i hubbklustret kräver kunskap om följande objekt:

  • ClusterResourceSnapshot
  • ClusterSchedulingPolicySnapshot
  • ClusterResourceBinding
  • Work

Mer information om varje objekt finns i API-referensen.

Fullständig utveckling av ClusterResourcePlacement-distributionen

Att förstå den anpassade resursens ClusterResourcePlacement utveckling och status är avgörande för att diagnostisera och identifiera fel. Du kan visa status för den ClusterResourcePlacement anpassade resursen med hjälp av följande kommando:

kubectl describe clusterresourceplacement <name>

Mer information finns i Använda ClusterResourcePlacement API för att sprida resurser till medlemskluster.

Den fullständiga progressionen av ClusterResourcePlacement är följande:

  1. ClusterResourcePlacementScheduled: Anger att en resurs har schemalagts för placering.

    Om det är falskt läser du Så här felsöker du när villkorsstatusen ClusterResourcePlacementScheduled är false.

  2. ClusterResourcePlacementRolloutStarted: Anger att distributionsprocessen har påbörjats.

    Om det är falskt läser du Så här felsöker du när villkorsstatusen ClusterResourcePlacementRolloutStarted är false.

  3. ClusterResourcePlacementOverridden: Anger att resursen har åsidosatts.

    Om det är falskt läser du Så här felsöker du när villkorsstatusen ClusterResourcePlacementOverridden är false.

  4. ClusterResourcePlacementWorkSynchronized: Anger att arbetsobjekt synkroniserades.

    Om det är falskt läser du Så här felsöker du när statusen för ClusterResourcePlacementWorkSynchronized-villkoret är falskt.

  5. ClusterResourcePlacementApplied: Anger att resursen tillämpades.

    Om det är falskt läser du Så här felsöker du när villkorsstatusen ClusterResourcePlacementApplied är false.

  6. ClusterResourcePlacementAvailable: Anger att resursen är tillgänglig.

    Om det är falskt läser du Så här felsöker du när villkorsstatusen ClusterResourcePlacementAvailable är false.

Vanliga frågor

Hur kan jag felsöka om vissa kluster inte har valts som förväntat?

Kontrollera statusen ClusterSchedulingPolicySnapshot för för att avgöra vilka kluster som har valts och orsaken till deras val.

Hur kan jag felsöka om ett valt kluster inte har de förväntade resurserna eller om ClusterResourcePlacement inte hämtar de senaste ändringarna?

  1. Kontrollera om villkoret ClusterResourcePlacementRolloutStarted i statusen ClusterResourcePlacement är inställt på sant eller falskt.
  2. Kontrollera om villkoret är inställt på ClusterResourcePlacementApplied okänt, falskt eller sant.
  3. Kontrollera avsnittet placementStatuses i statusen ClusterResourcePlacement för det specifika klustret. Avsnittet FailedPlacements bör ange orsaker till eventuella resursprogramfel.

Hur hittar och verifierar jag den senaste ClusterSchedulingPolicySnapshot för en ClusterResourcePlacement-distribution?

Kör följande kommando för att hitta det senaste ClusterSchedulingPolicySnapshot för ClusterResourcePlacement API-distributionen:

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

Kommentar

I det här kommandot ersätter du {CRPName} med ditt ClusterResourcePlacement namn.

ClusterSchedulingPolicySnapshot Jämför sedan med ClusterResourcePlacement principen för att se till att de matchar, exklusive numberOfClusters fältet från specifikationen "ClusterResourcePlacement".

Om placeringstypen är PickNkontrollerar du om antalet kluster som begärs i ClusterResourcePlacement principen matchar värdet för number-of-clusters etiketten.

Hur hittar jag den senaste ClusterResourceBinding-resursen?

Följande kommando visar alla ClusterResourceBindings instanser som är associerade med ClusterResourcePlacement:

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

Kommentar

I det här kommandot ersätter du {CRPName} med ditt ClusterResourcePlacement namn.

Exempel

  1. Kör följande kommando för att visa status för distributionen ClusterResourcePlacement . I det här fallet är test-crpnamnet ClusterResourcePlacement .

    kubectl describe clusterresourceplacement test-crp
    
  2. Här är ett exempel på utdata. Observera att det placementStatuses finns distribuerade resurser till två medlemskluster i avsnittet i statusen test-crp och därför har två ClusterResourceBindings instanser:

    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. Kör följande kommando för att hämta ClusterResourceBindings värdet:

    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
    

    Utdata visar alla ClusterResourceBindings instanser som är associerade med test-crp. Resursnamnet ClusterResourceBinding använder följande format:

    {CRPName}-{clusterName}-{suffix}

Hur hittar jag den senaste ClusterResourceSnapshot-resursen?

Kör följande kommando för att hitta den senaste ClusterResourceSnapshot-resursen:

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

Kommentar

I det här kommandot ersätter du {CRPName} med ditt ClusterResourcePlacement namn.

Hur hittar jag rätt arbetsresurs som är associerad med ClusterResourcePlacement?

Följ dessa steg för att hitta rätt arbetsresurs:

  1. Identifiera namnområdet för medlemsklustret och ClusterResourcePlacement namnet. Formatet för namnområdet är fleet-member-{clusterName}.

  2. Kör följande kommando för att hämta arbetsresursen:

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

    Kommentar

    I det här kommandot ersätter {clusterName} du och {CRPName} med de namn som du identifierade i det första steget.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.