Compartir a través de


Solución de problemas de ClusterResourcePlacement API en Azure Kubernetes Fleet Manager

Esta guía de solución de problemas le ayuda a resolver ClusterResourcePlacement problemas relacionados con objetos de API cuando se usa Fleet Manager de Azure Kubernetes. La solución de estos errores en el clúster del concentrador requiere conocimiento de los siguientes objetos:

  • ClusterResourceSnapshot
  • ClusterSchedulingPolicySnapshot
  • ClusterResourceBinding
  • Work

Para obtener más información sobre cada objeto, consulte la referencia de API.

Progresión completa de la implementación clusterResourcePlacement

Comprender la progresión y el estado del ClusterResourcePlacement recurso personalizado es fundamental para diagnosticar e identificar errores. Puede ver el estado del ClusterResourcePlacement recurso personalizado mediante el siguiente comando:

kubectl describe clusterresourceplacement <name>

Para obtener más información, consulte Uso de clusterResourcePlacement API para propagar recursos a clústeres miembros.

La progresión completa de ClusterResourcePlacement es la siguiente:

  1. ClusterResourcePlacementScheduled: indica que se ha programado un recurso para la selección de ubicación.

    Si es false, consulte Solución de problemas cuando el estado de la condición ClusterResourcePlacementScheduled es false.

  2. ClusterResourcePlacementRolloutStarted: indica que se ha iniciado el proceso de lanzamiento.

    Si es false, consulte Solución de problemas cuando el estado de la condición ClusterResourcePlacementRolloutStarted es false.

  3. ClusterResourcePlacementOverridden: indica que el recurso se ha invalidado.

    Si es false, consulte Solución de problemas cuando el estado de la condición ClusterResourcePlacementOverridden es false.

  4. ClusterResourcePlacementWorkSynchronized: indica que se sincronizaron los objetos de trabajo.

    Si es false, consulte Solución de problemas cuando el estado de la condición ClusterResourcePlacementWorkSynchronized es false.

  5. ClusterResourcePlacementApplied: indica que se aplicó el recurso.

    Si es false, consulte Solución de problemas cuando el estado de la condición ClusterResourcePlacementApplied es false.

  6. ClusterResourcePlacementAvailable: indica que el recurso está disponible.

    Si es false, consulte Solución de problemas cuando el estado de la condición ClusterResourcePlacementAvailable es false.

Preguntas más frecuentes

¿Cómo puedo depurar si algunos clústeres no están seleccionados según lo previsto?

Compruebe el estado de ClusterSchedulingPolicySnapshot para determinar qué clústeres se seleccionaron y el motivo de su selección.

¿Cómo puedo depurar si un clúster seleccionado no tiene los recursos esperados o si ClusterResourcePlacement no recoge los cambios más recientes?

  1. Compruebe si la ClusterResourcePlacementRolloutStarted condición del ClusterResourcePlacement estado está establecida en true o false.
  2. Compruebe si la ClusterResourcePlacementApplied condición está establecida en desconocido, false o true.
  3. Compruebe la placementStatuses sección en el ClusterResourcePlacement estado del clúster determinado. La FailedPlacements sección debe proporcionar motivos para cualquier error de aplicación de recursos.

¿Cómo puedo encontrar y comprobar la versión más reciente de ClusterSchedulingPolicySnapshot para una implementación clusterResourcePlacement?

Para buscar la versión más reciente ClusterSchedulingPolicySnapshot de la implementación de la ClusterResourcePlacement API, ejecute el siguiente comando:

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

Nota:

En este comando, reemplace por {CRPName} el ClusterResourcePlacement nombre.

A continuación, compare con ClusterSchedulingPolicySnapshot la ClusterResourcePlacement directiva para asegurarse de que coinciden, excluyendo el numberOfClusters campo de la especificación "ClusterResourcePlacement".

Si el tipo de selección de ubicación es PickN, compruebe si el número de clústeres solicitados en la ClusterResourcePlacement directiva coincide con el valor de la number-of-clusters etiqueta.

¿Cómo puedo encontrar el recurso ClusterResourceBinding más reciente?

El siguiente comando enumera todas las ClusterResourceBindings instancias asociadas a ClusterResourcePlacement:

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

Nota:

En este comando, reemplace por {CRPName} el ClusterResourcePlacement nombre.

Ejemplo

  1. Ejecute el siguiente comando para ver el estado de la ClusterResourcePlacement implementación. En este caso, el ClusterResourcePlacement nombre es test-crp.

    kubectl describe clusterresourceplacement test-crp
    
  2. Este es un ejemplo de salida. En la placementStatuses sección del test-crp estado, observe que tiene recursos distribuidos a dos clústeres miembro y, por lo tanto, tiene dos ClusterResourceBindings instancias:

    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 obtener el ClusterResourceBindings valor, ejecute el siguiente 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
    

    La salida enumera todas las ClusterResourceBindings instancias asociadas a test-crp. El nombre del ClusterResourceBinding recurso usa el siguiente formato:

    {CRPName}-{clusterName}-{suffix}

¿Cómo puedo encontrar el recurso ClusterResourceSnapshot más reciente?

Para buscar el recurso ClusterResourceSnapshot más reciente, ejecute el siguiente comando:

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

Nota:

En este comando, reemplace por {CRPName} el ClusterResourcePlacement nombre.

¿Cómo puedo encontrar el recurso de trabajo correcto asociado a ClusterResourcePlacement?

Para buscar el recurso de trabajo correcto, siga estos pasos:

  1. Identifique el espacio de nombres del clúster miembro y el ClusterResourcePlacement nombre. El formato del espacio de nombres es fleet-member-{clusterName}.

  2. Para obtener el recurso de trabajo, ejecute el siguiente comando:

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

    Nota:

    En este comando, reemplace {clusterName} y {CRPName} por los nombres que identificó en el primer paso.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.