Поделиться через


Устранение неполадок API ClusterResourcePlacement в Azure Kubernetes Fleet Manager

Это руководство по устранению неполадок помогает устранить ClusterResourcePlacement проблемы, связанные с объектами API при использовании Диспетчера флота Azure Kubernetes. Для устранения этих ошибок в кластере концентратора требуется знание следующих объектов:

  • ClusterResourceSnapshot
  • ClusterSchedulingPolicySnapshot
  • ClusterResourceBinding
  • Work

Дополнительные сведения о каждом объекте см. в справочнике по API.

Полное прогрессирование развертывания ClusterResourcePlacement

Понимание прогрессии и состояния пользовательского ClusterResourcePlacement ресурса имеет решающее значение для диагностики и выявления сбоев. Состояние настраиваемого ClusterResourcePlacement ресурса можно просмотреть с помощью следующей команды:

kubectl describe clusterresourceplacement <name>

Дополнительные сведения см. в разделе "Использование API ClusterResourcePlacement" для распространения ресурсов в кластеры-члены.

Полный прогресс ClusterResourcePlacement выглядит следующим образом:

  1. ClusterResourcePlacementScheduled: указывает, что ресурс запланирован на размещение.

    Если значение false, см. инструкции по устранению неполадок, когда состояние условия ClusterResourcePlacementScheduled имеет значение false.

  2. ClusterResourcePlacementRolloutStarted: указывает, что процесс развертывания начался.

    Если значение false, см. сведения об устранении неполадок, когда состояние условия ClusterResourcePlacementRolloutStarted равно false.

  3. ClusterResourcePlacementOverridden: указывает, что ресурс переопределен.

    Если значение false, см. инструкции по устранению неполадок, когда состояние условия ClusterResourcePlacementOverridden имеет значение false.

  4. ClusterResourcePlacementWorkSynchronized: указывает, что рабочие объекты были синхронизированы.

    Если значение false, см. инструкции по устранению неполадок, когда состояние условия ClusterResourcePlacementWorkSynchronized имеет значение false.

  5. ClusterResourcePlacementApplied: указывает, что ресурс был применен.

    Если значение false, см. сведения об устранении неполадок, когда состояние условия ClusterResourcePlacementApplied имеет значение false.

  6. ClusterResourcePlacementAvailable: указывает, что ресурс доступен.

    Если значение false, см. инструкции по устранению неполадок, когда состояние условия ClusterResourcePlacementAvailable равно false.

Вопросы и ответы

Как выполнить отладку, если некоторые кластеры не выбраны должным образом?

Проверьте состояние ClusterSchedulingPolicySnapshot , чтобы определить, какие кластеры были выбраны, и причина их выбора.

Как выполнить отладку, если выбранный кластер не имеет ожидаемых ресурсов или если ClusterResourcePlacement не выбирает последние изменения?

  1. Проверьте, задано ли ClusterResourcePlacementRolloutStarted условие в ClusterResourcePlacement состоянии значение true или false.
  2. Проверьте, задано ли ClusterResourcePlacementApplied условие значение unknown, false или true.
  3. placementStatuses Проверьте раздел в ClusterResourcePlacement состоянии конкретного кластера. В FailedPlacements этом разделе должны быть указаны причины сбоев приложений ресурсов.

Как найти и проверить последнюю версию ClusterSchedulingPolicySnapshot для развертывания ClusterResourcePlacement?

Чтобы найти последнюю версию ClusterSchedulingPolicySnapshot ClusterResourcePlacement развертывания API, выполните следующую команду:

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

Примечание.

В этой команде замените {CRPName} имя.ClusterResourcePlacement

Затем сравните ClusterSchedulingPolicySnapshot политику, ClusterResourcePlacement чтобы убедиться, что они совпадают numberOfClusters , исключая поле из спецификации ClusterResourcePlacement.

Если тип размещения имеет PickNзначение, проверьте, соответствует ли число кластеров, запрошенных в политике ClusterResourcePlacement , значению number-of-clusters метки.

Как найти последний ресурс ClusterResourceBinding?

Следующая команда содержит список всех ClusterResourceBindings экземпляров, связанных с ClusterResourcePlacement:

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

Примечание.

В этой команде замените {CRPName} имя.ClusterResourcePlacement

Пример

  1. Выполните следующую команду, чтобы просмотреть состояние ClusterResourcePlacement развертывания. В этом случае ClusterResourcePlacement это test-crpимя.

    kubectl describe clusterresourceplacement test-crp
    
  2. Ниже приведен пример выходных данных. placementStatuses В разделе test-crp состояния обратите внимание, что он распределяет ресурсы в два кластера членов и, следовательно, имеет два 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. Чтобы получить ClusterResourceBindings значение, выполните следующую команду:

    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
    

    В выходных данных перечислены все ClusterResourceBindings экземпляры, с которыми связаны test-crp. Имя ClusterResourceBinding ресурса использует следующий формат:

    {CRPName}-{clusterName}-{suffix}

Как найти последний ресурс ClusterResourceSnapshot?

Чтобы найти последний ресурс ClusterResourceSnapshot, выполните следующую команду:

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

Примечание.

В этой команде замените {CRPName} имя.ClusterResourcePlacement

Как найти правильный рабочий ресурс, связанный с ClusterResourcePlacement?

Чтобы найти правильный рабочий ресурс, выполните следующие действия.

  1. Определите пространство имен кластера-члена и ClusterResourcePlacement имя. Формат пространства имен .fleet-member-{clusterName}

  2. Чтобы получить рабочий ресурс, выполните следующую команду:

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

    Примечание.

    В этой команде замените {clusterName} имена, {CRPName} которые вы определили на первом шаге.

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.