Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : ✔️ Fleet Manager avec cluster hub
Lorsque vous travaillez avec Azure Kubernetes Fleet Manager, il est essentiel de comprendre l’état de vos ClusterResourcePlacement ressources pour surveiller la progression du déploiement et résoudre les problèmes.
Lorsque vous travaillez avec Azure Kubernetes Fleet Manager, il est essentiel de comprendre l’état de vos ResourcePlacement ressources pour surveiller la progression du déploiement et résoudre les problèmes.
Prerequisites
- Vous disposez d’un Gestionnaire de flotte avec un cluster hub et un ou plusieurs clusters membres. Si vous n'en avez pas, consultez Créer une ressource Kubernetes Fleet Manager Azure et joindre des clusters membres.
- Vous avez accès au cluster Hub Fleet Manager. Pour plus d’informations, consultez Accédez à l’API Kubernetes pour un cluster hub du Gestionnaire de flotte Kubernetes Azure.
- Vous avez déployé au moins un
ClusterResourcePlacementpour distribuer vos ressources. Si ce n’est pas le cas, consultez Utiliser le placement des ressources de cluster pour déployer des charges de travail sur plusieurs clusters.
- Vous avez déployé au moins un objet d’API ResourcePlacement pour placer vos ressources dans la flotte. Si ce n’est pas le cas, consultez Utiliser le placement des ressources de cluster pour déployer des charges de travail sur plusieurs clusters.
Vue d’ensemble de la structure d’état de placement
L’objet ClusterResourcePlacement contient non seulement la spécification descriptive sur le placement, mais également l’état de l’opération de placement.
L’objet ResourcePlacement contient non seulement la spécification descriptive sur le placement, mais également l’état de l’opération de placement.
La section État fournit des informations détaillées sur les points suivants :
- État de placement global exprimé par les conditions
- Ressources sélectionnées par l’emplacement
- État de placement par cluster exprimé par conditions
- les emplacements de
Failed,driftedetdiffeddans chaque grappe
Pour afficher l’état d’un placement, utilisez la commande suivante :
kubectl describe clusterresourceplacement <placement-name>
kubectl describe resourceplacement <placement-name> -n <namespace-name>
Pour obtenir la sortie YAML brute, utilisez la commande suivante :
kubectl get clusterresourceplacement <placement-name> -o yaml
kubectl get resourceplacement <placement-name> -n <namespace-name> -o yaml
Champs d’état de niveau supérieur
La section d’état contient les champs de niveau supérieur suivants :
- selectedResources : liste des ressources sélectionnées par le placement
- conditions : tableau des conditions de placement globales
- observedResourceIndex : index de l'instantané de ressource actuel
- placementStatuses : informations d’état de placement par cluster
Les sections suivantes examinent chaque champ en détail.
Ressources sélectionnées
Le selectedResources champ répertorie toutes les ressources sélectionnées par le placement. Utilisez ce champ pour vérifier si les ressources attendues sont incluses dans le placement. Voici un exemple :
selectedResources:
- kind: Namespace
name: test
version: v1
- kind: ConfigMap
name: test-config
namespace: test
version: v1
envelope:
name: example-envelope
namespace: test
type: ResourceEnvelope
- kind: Deployment
name: web-app
namespace: test
group: apps
version: v1
- kind: Service
name: web-service
namespace: test
version: v1
- kind: Secret
name: app-secrets
namespace: test
version: v1
selectedResources:
- kind: ConfigMap
name: test-config
version: v1
envelope:
name: example-envelope
namespace: test
type: ResourceEnvelope
- kind: Deployment
name: web-app
group: apps
version: v1
- kind: Service
name: web-service
version: v1
- kind: Secret
name: app-secrets
version: v1
Chaque entrée de ressource inclut les éléments suivants :
- groupe : groupe d’API (vide pour les ressources principales)
-
version : version de l’API (par exemple,
v1,v1beta1) - type : Type de ressource
- nom : nom de la ressource
- espace de noms : Espace de noms (pour les ressources associées à un espace de noms)
-
enveloppe : si une ressource est encapsulée dans une enveloppe, les métadonnées de l’enveloppe sont également fournies, ce qui inclut :
- nom : nom de l’enveloppe
- espace de noms : espace de noms de l’enveloppe
-
type : type de l’enveloppe (par exemple,
ResourceEnvelope)
Conditions de positionnement
Le tableau conditions fournit des informations d'état générales sur l'ensemble du placement. Chaque condition suit la définition commune Kubernetes, qui a les champs standard suivants :
- type : type de condition (décrit dans les sections suivantes).
-
état :
True,FalseouUnknown. - raison : Code de raison courte pour la condition.
- message : description lisible par l’homme.
- lastTransitionTime : lorsque la condition a changé pour la dernière fois.
- observedGeneration : génération du placement au moment où la condition a été définie.
Types de conditions ClusterResourcePlacement
Les types de condition suivants sont disponibles pour ClusterResourcePlacement :
ClusterResourcePlacementScheduled
Types de conditions de ResourcePlacement
Les types de conditions suivants sont disponibles pour ResourcePlacement :
ResourcePlacementScheduled
Indique si le placement est correctement planifié pour les clusters cibles.
- True : tous les clusters requis sont sélectionnés en fonction de la stratégie de placement.
- False : Échec de la planification (par exemple, clusters insuffisants disponibles).
- Inconnu : la décision de planification est en attente.
conditions:
- type: ClusterResourcePlacementScheduled
status: "True"
reason: SchedulingPolicyFulfilled
message: "found all the clusters needed as specified by the scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementScheduled
status: "True"
reason: SchedulingPolicyFulfilled
message: "found all the clusters needed as specified by the scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
ClusterResourcePlacementRolloutStarted
ResourcePlacementRolloutStarted
Indique si le déploiement est démarré sur les clusters sélectionnés.
- True : Les ressources ont commencé à être déployées sur des clusters planifiés.
- False : Le déploiement n’est pas encore démarré.
- Inconnu : la décision de lancement est en attente.
conditions:
- type: ClusterResourcePlacementRolloutStarted
status: "True"
reason: RolloutStarted
message: "All 3 cluster(s) start rolling out the latest resource"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementRolloutStarted
status: "True"
reason: RolloutStarted
message: "All 3 cluster(s) start rolling out the latest resource"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
ClusterResourcePlacementOverridden
ResourcePlacementOverridden
Indique si les remplacements de ressources sont correctement appliqués.
- True : toutes les substitutions applicables sont traitées.
- False : certains remplacements n'ont pas pu s'appliquer.
- Unknown : le traitement du remplacement est en attente.
conditions:
- type: ClusterResourcePlacementOverridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementOverridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
ClusterResourcePlacementWorkSynchronized
TravailDePlacementDesRessourcesSynchronisé
Indique si le processus crée des objets de travail dans les espaces de noms par cluster du hub.
- True : tous les objets de travail sont synchronisés.
- False : la synchronisation de travail échoue ou est incomplète.
- Inconnu : la synchronisation de travail est en attente.
conditions:
- type: ClusterResourcePlacementWorkSynchronized
status: "True"
reason: SynchronizeSucceeded
message: "All 2 cluster(s) are synchronized to the latest resources on the hub cluster"
lastTransitionTime: "2023-11-10T08:23:43Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementWorkSynchronized
status: "True"
reason: SynchronizeSucceeded
message: "All 2 cluster(s) are synchronized to the latest resources on the hub cluster"
lastTransitionTime: "2023-11-10T08:23:43Z"
observedGeneration: 5
ClusterResourcePlacementApplied
ResourcePlacementApplied
Indique si toutes les ressources sont correctement appliquées aux clusters membres.
- True : toutes les ressources appliquées avec succès à tous les clusters cibles.
-
False : Certaines ressources n’ont pas pu s’appliquer (vérification
failedPlacements). - Inconnu : l’opération Appliquer est en attente.
conditions:
- type: ClusterResourcePlacementApplied
status: "True"
reason: ApplySucceeded
message: "The selected resources are successfully applied to 3 clusters"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementApplied
status: "True"
reason: ApplySucceeded
message: "The selected resources are successfully applied to 3 clusters"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
ClusterResourcePlacementAvailable
ResourcePlacementAvailable
Indique si les ressources placées sont toutes disponibles et prêtes sur les clusters membres.
- True : toutes les ressources sont disponibles sur tous les clusters cibles.
- False : certaines ressources ne sont pas encore disponibles.
- Inconnu : la vérification de la disponibilité est en attente.
conditions:
- type: ClusterResourcePlacementAvailable
status: "True"
reason: ResourceAvailable
message: "The selected resources in 3 clusters are available now"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementAvailable
status: "True"
reason: ResourceAvailable
message: "The selected resources in 3 clusters are available now"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
ClusterResourcePlacementDiffReported
ResourcePlacementDiffReported
Indique si les différences de configuration sont signalées (lors de l’utilisation de la stratégie ReportDiff).
- True : Le rapport de différences complet est disponible.
- False : la génération du rapport de différences a échoué ou est incomplète.
- Inconnu : le rapport de différences est en attente.
conditions:
- type: ClusterResourcePlacementDiffReported
status: "True"
reason: DiffReportComplete
message: "Configuration differences are reported for all target clusters"
lastTransitionTime: "2023-11-10T08:16:45Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementDiffReported
status: "True"
reason: DiffReportComplete
message: "Configuration differences are reported for all target clusters"
lastTransitionTime: "2023-11-10T08:16:45Z"
observedGeneration: 5
Captures instantanées de ressources
Le champ observedResourceIndex indique quelle capture instantanée des ressources est en cours de déploiement.
observedResourceIndex: "1"
Fleet Manager crée des captures instantanées de ressources différemment en fonction de la stratégie de déploiement :
Pour RollingUpdate la stratégie (par défaut) : Fleet Manager crée automatiquement des instantanés de ressources lorsque :
- Les sélecteurs de ressources changent
- Vous modifiez les ressources sélectionnées
Pour la stratégie External : Fleet Manager ne crée pas automatiquement d'instantanés de ressources. Au lieu de cela, il les crée lorsque vous exécutez une exécution de mise à jour intermédiaire et omettez le resourceSnapshotIndex champ. Cette condition signifie que lorsque vous créez pour la première fois un placement avec une stratégie de déploiement External, aucun instantané des ressources n’existe tant que vous n’avez pas exécuté la première exécution de mise à jour par étapes.
Note
Si un placement utilisait auparavant la stratégie RollingUpdate et que vous la remplacez par External, les instantanés de ressources existants restent disponibles. Vous pouvez référencer ces instantanés existants lors de la création d’exécutions de mises à jour intermédiaires.
Chaque instantané a un index unique. Vous pouvez afficher des instantanés à l’aide des éléments suivants :
kubectl get clusterresourcesnapshot --selector=kubernetes-fleet.io/resource-index=1
kubectl get resourcesnapshot -n <namespace-name> --selector=kubernetes-fleet.io/resource-index=1
État du placement par cluster
Le placementStatuses tableau contient un état détaillé pour chaque cluster où les ressources sont placées ou tentées d’être placées :
placementStatuses:
- clusterName: aks-member-1
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-member-1"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected the new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
- clusterName: aks-member-2
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-member-2"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply some manifests"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
failedPlacements:
- kind: Deployment
name: web-app
namespace: test
version: apps/v1
condition:
type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply manifest: insufficient resources"
lastTransitionTime: "2023-11-10T08:16:15Z"
Types de conditions par cluster
L’état de chaque cluster inclut des conditions qui suivent le cycle de vie du déploiement :
ResourceScheduled
Indique si le cluster est sélectionné avec succès pour le placement.
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-member-1 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
DéploiementCommencé
Indique si le déploiement a démarré sur ce cluster spécifique.
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
Remplacé.
Indique si des substitutions de ressources sont appliquées à ce cluster.
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
WorkSynchronized
Indique si des objets de travail sont créés pour ce cluster.
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
Mis en œuvre
Indique si toutes les ressources sont correctement appliquées à ce cluster.
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
Disponible
Indique si toutes les ressources sont disponibles et prêtes sur ce cluster.
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
DiffReported
Indique si les différences de configuration sont signalées pour ce cluster.
- type: DiffReported
status: "True"
reason: DiffReportComplete
message: "Configuration differences are reported for this cluster"
lastTransitionTime: "2023-11-10T08:16:45Z"
observedGeneration: 5
Placements ayant échoué
Lorsque les ressources ne s’appliquent pas à un cluster, le système enregistre les détails du failedPlacements tableau :
failedPlacements:
- kind: Deployment
name: my-app
namespace: default
version: apps/v1
condition:
type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply manifest: namespaces 'app' not found"
lastTransitionTime: "2023-12-06T00:09:53Z"
envelope:
name: example
namespace: app
type: ResourceEnvelope
- kind: Service
name: my-service
namespace: default
version: v1
condition:
type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply manifest: Service 'my-service' is forbidden: User 'system:serviceaccount:fleet-system:fleet-agent' cannot create resource 'services' in API group '' in the namespace 'default'"
lastTransitionTime: "2023-12-06T00:10:15Z"
- kind: ConfigMap
name: app-config
namespace: production
version: v1
condition:
type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply manifest: configmaps 'app-config' already exists"
lastTransitionTime: "2023-12-06T00:10:30Z"
Chaque placement ayant échoué inclut les éléments suivants :
- Identification des ressources : groupe, version, type, nom, espace de noms
- condition : condition d’échec spécifique
- enveloppe : informations sur l’enveloppe, le cas échéant
Placements dérivés
Fleet Manager signale toujours les ressources qui dérivent de leur état souhaité :
driftedPlacements:
- kind: Namespace
name: web
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDriftedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 12
observedDrifts:
- path: "/metadata/labels/owner"
valueInHub: "simon"
valueInMember: "chen"
- path: "/metadata/annotations/purpose"
valueInHub: "production"
valueInMember: "testing"
- kind: Deployment
name: web-app
namespace: web
group: apps
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDriftedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 8
observedDrifts:
- path: "/spec/replicas"
valueInHub: "3"
valueInMember: "5"
- path: "/spec/template/spec/containers/0/image"
valueInHub: "nginx:1.20"
valueInMember: "nginx:1.21"
- kind: ConfigMap
name: app-config
namespace: web
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDriftedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 5
observedDrifts:
- path: "/data/environment"
valueInHub: "production"
valueInMember: "staging"
Chaque placement dérivé comprend les éléments suivants :
- Identification des ressources : groupe, version, type, nom, espace de noms
- observationTime : quand la dérive a été observée pour la dernière fois
- firstDriftedObservedTime : quand la dérive a été détectée pour la première fois
- targetClusterObservedGeneration : génération de la ressource sur le cluster membre
- observedDrifts : Liste détaillée des différences de configuration
Placements comparés
Lorsque vous utilisez la stratégie ReportDiff apply, Fleet Manager signale des différences de configuration.
diffedPlacements:
- kind: Service
name: my-service
namespace: default
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDiffedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 8
observedDiffs:
- path: "/spec/ports/0/nodePort"
valueInHub: ""
valueInMember: "30080"
- path: "/spec/clusterIP"
valueInHub: ""
valueInMember: "10.96.100.200"
- kind: Deployment
name: web-app
namespace: default
group: apps
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDiffedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 12
observedDiffs:
- path: "/status/replicas"
valueInHub: ""
valueInMember: "3"
- path: "/status/readyReplicas"
valueInHub: ""
valueInMember: "3"
- path: "/metadata/generation"
valueInHub: "1"
valueInMember: "2"
Les placements différenciés ont une structure similaire aux placements déviés, mais sont utilisés pour différents scénarios.
- Placements dérivés : utilisez quand vous appliquez des ressources, puis modifiez-les.
- Placements différenciés : à utiliser avec la stratégie ReportDiff ou lorsque les conditions de prise en charge ne sont pas remplies.
Surveillance de la progression du positionnement
Pour surveiller efficacement la progression du placement, vérifiez ces indicateurs clés :
-
Ressource placée : Vérifiez que
ClusterResourcePlacementWorkSynchronizedest True -
Intégrité globale : examiner la condition
ClusterResourcePlacementApplied - État par cluster : passer en revue les conditions de chaque cluster cible
-
Insertions en échec : vérifiez s’il existe des entrées dans les tableaux
failedPlacements
-
Ressource placée: Vérifiez que
ResourcePlacementWorkSynchronizedest défini sur True -
État général : consultez l’
ResourcePlacementAppliedétat - État par cluster : passer en revue les conditions de chaque cluster cible
-
Placements échoués : vérifiez s’il existe des entrées dans les tableaux
failedPlacements
Exemple d’état complet
Voici un exemple complet montrant l’état complet d’un ClusterResourcePlacement :
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: web-app-placement
generation: 5
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: web-app
version: v1
- group: apps
kind: Deployment
name: web-server
namespace: web-app
version: v1
- group: ""
kind: Service
name: web-service
namespace: web-app
version: v1
policy:
placementType: PickN
numberOfClusters: 2
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- matchLabels:
region: us-west
status:
conditions:
- type: ClusterResourcePlacementScheduled
status: "True"
reason: SchedulingPolicyFulfilled
message: "found all the clusters needed as specified by the scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: ClusterResourcePlacementRolloutStarted
status: "True"
reason: RolloutStarted
message: "All 2 cluster(s) start rolling out the latest resource"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: ClusterResourcePlacementOverridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: ClusterResourcePlacementWorkSynchronized
status: "True"
reason: SynchronizeSucceeded
message: "All 2 cluster(s) are synchronized to the latest resources on the hub cluster"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: ClusterResourcePlacementApplied
status: "True"
reason: ApplySucceeded
message: "The selected resources are successfully applied to 2 clusters"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: ClusterResourcePlacementAvailable
status: "True"
reason: ResourceAvailable
message: "The selected resources in 2 cluster are available now"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
observedResourceIndex: "1"
selectedResources:
- group: ""
kind: Namespace
name: web-app
version: v1
- group: apps
kind: Deployment
name: web-server
namespace: web-app
version: v1
- group: ""
kind: Service
name: web-service
namespace: web-app
version: v1
placementStatuses:
- clusterName: aks-west-1
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-west-1 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected the new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
- clusterName: aks-west-2
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-west-2 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
Voici un exemple complet montrant l’état complet d’un ResourcePlacement :
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ResourcePlacement
metadata:
name: web-app-placement
namespace: web-app
generation: 5
spec:
resourceSelectors:
- group: apps
kind: Deployment
name: web-server
version: v1
- group: ""
kind: Service
name: web-service
version: v1
policy:
placementType: PickN
numberOfClusters: 2
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- matchLabels:
region: us-west
status:
conditions:
- type: ResourcePlacementScheduled
status: "True"
reason: SchedulingPolicyFulfilled
message: "found all the clusters needed as specified by the scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: ResourcePlacementRolloutStarted
status: "True"
reason: RolloutStarted
message: "All 2 cluster(s) start rolling out the latest resource"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: ResourcePlacementOverridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: ResourcePlacementWorkSynchronized
status: "True"
reason: SynchronizeSucceeded
message: "All 2 cluster(s) are synchronized to the latest resources on the hub cluster"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: ResourcePlacementApplied
status: "True"
reason: ApplySucceeded
message: "The selected resources are successfully applied to 2 clusters"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: ResourcePlacementAvailable
status: "True"
reason: ResourceAvailable
message: "The selected resources in 2 cluster are available now"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
observedResourceIndex: "1"
selectedResources:
- group: apps
kind: Deployment
name: web-server
version: v1
- group: ""
kind: Service
name: web-service
version: v1
placementStatuses:
- clusterName: aks-west-1
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-west-1 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected the new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
- clusterName: aks-west-2
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-west-2 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
Cet exemple montre :
- Planification réussie : le placement a trouvé deux clusters qui correspondent à la stratégie de placement.
- Déploiement réussi : toutes les ressources sont déployées sur les deux clusters cibles.
- Aucune substitution : aucune substitution de ressource n’est configurée ou nécessaire.
- Travail synchronisé : les objets de travail sont créés et synchronisés.
- Ressources appliquées : toutes les ressources sont correctement appliquées.
- Ressources disponibles : toutes les ressources sont en cours d’exécution et disponibles.
- État propre : aucun échec, dérive ou différence de placement.
Contenu connexe
Pour en savoir plus sur le placement des ressources, consultez les articles suivants :