Сбой распространения ресурсов: ClusterResourcePlacementApplied имеет значение False
В этой статье описывается, как устранять проблемы ClusterResourcePlacementApplied
при распространении ресурсов с помощью ClusterResourcePlacement
API объектов в Microsoft Azure Kubernetes Fleet Manager.
Симптомы
При использовании ClusterResourcePlacement
объекта API в Azure Kubernetes Fleet Manager для распространения ресурсов развертывание завершается сбоем. Состояние ClusterResourcePlacementApplied
отображается как False
.
Причина
Эта проблема может возникнуть из-за одной из следующих причин:
- Ресурс уже существует в кластере и не управляется контроллером парка. Чтобы устранить эту проблему, обновите файл YAML манифеста
ClusterResourcePlacement
, чтобыAllowCoOwnership
ApplyStrategy
разрешить контроллеру парка управлять ресурсом. - Другое
ClusterResourcePlacement
развертывание уже управляет ресурсом для выбранного кластера с помощью другой стратегии применения. - Развертывание
ClusterResourcePlacement
не применяет манифест из-за ошибок синтаксиса или недопустимых конфигураций ресурсов. Это также может произойти, если ресурс распространяется через объект конверта.
Действия по устранению неполадок
- Просмотрите
ClusterResourcePlacement
состояние и найдитеplacementStatuses
раздел. Проверьте значение,placementStatuses
чтобы определить, в каких кластерах заданоResourceApplied
False
условие, и запишите ихclusterName
значение. Work
Найдите объект в кластере концентратора. Используйте идентифицированныйclusterName
объект, чтобы найтиWork
объект, связанный с кластером-членом. Дополнительные сведения см. в разделе "Как найти правильный рабочий ресурс", связанный сClusterResourcePlacement
.- Проверьте состояние
Work
объекта, чтобы понять конкретные проблемы, которые препятствуют успешному приложению ресурсов.
Пример использования
В следующем примере ClusterResourcePlacement
пытается распространить пространство имен, содержащее развертывание на два кластера членов. Однако пространство имен уже существует в одном кластере-члене kind-cluster-1
, в частности.
Спецификации ClusterResourcePlacement
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
name: crp
spec:
policy:
clusterNames:
- kind-cluster-1
- kind-cluster-2
placementType: PickFixed
resourceSelectors:
- group: ""
kind: Namespace
name: test-ns
version: v1
revisionHistoryLimit: 10
strategy:
type: RollingUpdate
Состояние ClusterResourcePlacement
status:
conditions:
- lastTransitionTime: "2024-05-07T23:32:40Z"
message:couldn't find all the clusters needed as specified by the scheduling
policy
observedGeneration: 1
reason: SchedulingPolicyUnfulfilled
status: "False"
type: ClusterResourcePlacementScheduled
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: All 2 cluster(s) start rolling out the latest resource
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: ClusterResourcePlacementRolloutStarted
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: ClusterResourcePlacementOverridden
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: Works(s) are succcesfully created or updated in the 2 target clusters'
namespaces
observedGeneration: 1
reason: WorkSynchronized
status: "True"
type: ClusterResourcePlacementWorkSynchronized
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: Failed to apply resources to 1 clusters, please check the `failedPlacements`
status
observedGeneration: 1
reason: ApplyFailed
status: "False"
type: ClusterResourcePlacementApplied
observedResourceIndex: "0"
placementStatuses:
- clusterName: kind-cluster-2
conditions:
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: 'Successfully scheduled resources for placement in kind-cluster-2 (affinity
score: 0, topology spread score: 0): picked by scheduling policy'
observedGeneration: 1
reason: Scheduled
status: "True"
type: Scheduled
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: Detected the new changes on the resources and started the rollout process
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: RolloutStarted
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: Overridden
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: All of the works are synchronized to the latest
observedGeneration: 1
reason: AllWorkSynced
status: "True"
type: WorkSynchronized
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: All corresponding work objects are applied
observedGeneration: 1
reason: AllWorkHaveBeenApplied
status: "True"
type: Applied
- lastTransitionTime: "2024-05-07T23:32:49Z"
message: The availability of work object crp-4-work isn't trackable
observedGeneration: 1
reason: WorkNotTrackable
status: "True"
type: Available
- clusterName: kind-cluster-1
conditions:
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: 'Successfully scheduled resources for placement in kind-cluster-1 (affinity
score: 0, topology spread score: 0): picked by scheduling policy'
observedGeneration: 1
reason: Scheduled
status: "True"
type: Scheduled
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: Detected the new changes on the resources and started the rollout process
observedGeneration: 1
reason: RolloutStarted
status: "True"
type: RolloutStarted
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: No override rules are configured for the selected resources
observedGeneration: 1
reason: NoOverrideSpecified
status: "True"
type: Overridden
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: All of the works are synchronized to the latest
observedGeneration: 1
reason: AllWorkSynced
status: "True"
type: WorkSynchronized
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: Work object crp-4-work isn't applied
observedGeneration: 1
reason: NotAllWorkHaveBeenApplied
status: "False"
type: Applied
failedPlacements:
- condition:
lastTransitionTime: "2024-05-07T23:32:40Z"
message: 'Failed to apply manifest: failed to process the request due to a
client error: resource exists and isn't managed by the fleet controller
and co-ownernship is disallowed'
reason: ManifestsAlreadyOwnedByOthers
status: "False"
type: Applied
kind: Namespace
name: test-ns
version: v1
selectedResources:
- kind: Namespace
name: test-ns
version: v1
- group: apps
kind: Deployment
name: test-nginx
namespace: test-ns
version: v1
failedPlacements
В разделе для kind-cluster-1
полей объясняется, message
почему ресурс не был применен к кластеру-члену. В предыдущем conditions
разделе Applied
условие помечается kind-cluster-1
как false
и показывает причину NotAllWorkHaveBeenApplied
. Это означает, что Work
объект, предназначенный для кластера-члена kind-cluster-1
, не был применен. Дополнительные сведения см. в разделе "Как найти правильный рабочий ресурс", связанный с ClusterResourcePlacement
.
Состояние работы типа-cluster-1
status:
conditions:
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: 'Apply manifest {Ordinal:0 Group: Version:v1 Kind:Namespace Resource:namespaces
Namespace: Name:test-ns} failed'
observedGeneration: 1
reason: WorkAppliedFailed
status: "False"
type: Applied
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: ""
observedGeneration: 1
reason: WorkAppliedFailed
status: Unknown
type: Available
manifestConditions:
- conditions:
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: 'Failed to apply manifest: failed to process the request due to a client
error: resource exists and isn't managed by the fleet controller and co-ownernship
is disallowed'
reason: ManifestsAlreadyOwnedByOthers
status: "False"
type: Applied
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: Manifest isn't applied yet
reason: ManifestApplyFailed
status: Unknown
type: Available
identifier:
kind: Namespace
name: test-ns
ordinal: 0
resource: namespaces
version: v1
- conditions:
- lastTransitionTime: "2024-05-07T23:32:40Z"
message: Manifest is already up to date
observedGeneration: 1
reason: ManifestAlreadyUpToDate
status: "True"
type: Applied
- lastTransitionTime: "2024-05-07T23:32:51Z"
message: Manifest is trackable and available now
observedGeneration: 1
reason: ManifestAvailable
status: "True"
type: Available
identifier:
group: apps
kind: Deployment
name: test-nginx
namespace: test-ns
ordinal: 1
resource: deployments
version: v1
Work
Проверьте состояние, особенно в manifestConditions
разделе. Видно, что пространство имен не удалось применить, но развертывание в пространстве имен распространилось из концентратора в кластер-член.
Решение
В этой ситуации потенциальное решение — задать AllowCoOwnership
значение true
в политике ApplyStrategy. Однако важно отметить, что это решение должно приниматься пользователем, так как ресурсы не могут быть общими.
Кроме того, вы можете просмотреть журналы для контроллера применения рабочей работы, чтобы получить дополнительные сведения о том, почему ресурсы недоступны.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.