Falha na propagação de recursos: ClusterResourcePlacementApplied é False
Este artigo discute como solucionar ClusterResourcePlacementApplied
problemas ao propagar recursos usando a API de ClusterResourcePlacement
objeto no Microsoft Azure Kubernetes Fleet Manager.
Sintomas
Quando você usa o objeto de ClusterResourcePlacement
API no Gerenciador de Frota de Kubernetes do Azure para propagar recursos, a implantação falha. O ClusterResourcePlacementApplied
status é exibido como False
.
Motivo
Esse problema pode ocorrer devido a um dos seguintes motivos:
- O recurso já existe no cluster e não é gerenciado pelo controlador de frota. Para resolver esse problema, atualize o arquivo YAML de manifesto
ClusterResourcePlacement
a ser usadoAllowCoOwnership
paraApplyStrategy
permitir que o controlador de frota gerencie o recurso. - Outra
ClusterResourcePlacement
implantação já está gerenciando o recurso para o cluster selecionado usando uma estratégia de aplicação diferente. - A
ClusterResourcePlacement
implantação não aplica o manifesto devido a erros de sintaxe ou configurações de recursos inválidas. Isso também pode ocorrer se um recurso for propagado por meio de um objeto de envelope.
Etapas para solucionar problemas
- Visualize o
ClusterResourcePlacement
status e localize aplacementStatuses
seção. Verifique oplacementStatuses
valor para identificar quais clusters têm aResourceApplied
condição definida comoFalse
e anote seuclusterName
valor. - Localize o
Work
objeto no cluster de hub. Use o identifiedclusterName
para localizar oWork
objeto associado ao cluster de membros. Para obter mais informações, consulte Como localizar o recurso de trabalho correto associado aoClusterResourcePlacement
. - Verifique o
Work
status do objeto para entender os problemas específicos que estão impedindo a aplicação bem-sucedida do recurso.
Estudo de caso
No exemplo a seguir, ClusterResourcePlacement
está tentando propagar um namespace que contém uma implantação para dois clusters membros. No entanto, o namespace já existe em um cluster membro, especificamente kind-cluster-1
.
Especificações do 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
Status de 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
Na seção de kind-cluster-1
, os message
campos explicam por que o recurso não foi aplicado no cluster de membros. Na seção anterior conditions
, a Applied
condição para kind-cluster-1
é sinalizada como false
e mostra o NotAllWorkHaveBeenApplied
motivo. Isso indica que o Work
objeto destinado ao cluster kind-cluster-1
de membros não foi aplicado. Para obter mais informações, consulte Como localizar o recurso de trabalho correto associado ao ClusterResourcePlacement
.
Status de trabalho de kind-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
Verifique o Work
status, principalmente a manifestConditions
seção. Você pode ver que o namespace não pôde ser aplicado, mas a implantação dentro do namespace foi propagada do hub para o cluster membro.
Resolução
Nessa situação, uma solução potencial é definir o AllowCoOwnership
to true
na política ApplyStrategy. No entanto, é importante observar que essa decisão deve ser tomada pelo usuário, pois os recursos podem não ser compartilhados.
Além disso, você pode examinar os logs do Aplicar Controlador de Trabalho para obter mais informações sobre o motivo pelo qual os recursos não estão disponíveis.
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.