Partager via


Utiliser le placement des ressources de cluster Azure Kubernetes Fleet Manager pour déployer des charges de travail sur plusieurs clusters

Cet article explique comment utiliser le placement des ressources de cluster Azure Kubernetes Fleet Manager pour déployer des charges de travail sur des clusters dans une flotte.

Prérequis

Utiliser ClusterResourcePlacement pour placer des ressources sur des clusters membres

L’objet ClusterResourcePlacement est créé sur le cluster hub et est utilisé pour propager des ressources aux clusters membres. Il spécifie les ressources à propager et la stratégie de placement à utiliser lorsque vous sélectionnez des clusters membres. Cet exemple montre comment propager un espace de noms aux clusters membres à l’aide de l’objet ClusterResourcePlacement avec une PickAll stratégie de placement.

Pour plus d’informations, consultez le placement des ressources à l’aide du placement des ressources de cluster Azure Kubernetes Fleet Manager et de la documentation KubeFleet open source.

  1. Créez un espace de noms à placer sur les clusters membres :
kubectl create namespace my-namespace
  1. Créez un ClusterResourcePlacement objet et appliquez-le au cluster Hub Fleet Manager. Dans l'exemple suivant, un ClusterResourcePlacement appelé distribute-my-namespace est utilisé pour déployer un espace de noms my-namespace sur tous les clusters membres à l'aide de la stratégie de placement PickAll.
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
  name: distribute-my-namespace
spec:
  resourceSelectors:
    - group: ""
      kind: Namespace
      version: v1          
      name: my-namespace
  policy:
    placementType: PickAll

Appliquez-le au cluster hub Fleet Manager en émettant kubectl apply -f distribute-my-namespace.yaml, en utilisant le nom du fichier que vous avez créé à la place de distribute-my-namespace.yaml.

  1. Vérifiez la progression de la propagation des ressources :
kubectl get clusterresourceplacement distribute-my-namespace

Vous devez obtenir un résultat semblable à l’exemple qui suit :

NAME                       GEN   SCHEDULED   SCHEDULEDGEN   APPLIED   APPLIEDGEN   AGE
distribute-my-namespace    2     True        2              True      2            10s
  1. Affichez les détails de l’objet de placement :
kubectl describe clusterresourceplacement distribute-my-namespace

Vous devez obtenir un résultat semblable à l’exemple qui suit :

Name:         distribute-my-namespace
Namespace:    
Labels:       <none>
Annotations:  <none>
API Version:  placement.kubernetes-fleet.io/v1
Kind:         ClusterResourcePlacement
Metadata:
  Creation Timestamp:  2024-04-01T18:55:31Z
  Finalizers:
    kubernetes-fleet.io/crp-cleanup
    kubernetes-fleet.io/scheduler-cleanup
  Generation:        2
  Resource Version:  6949
  UID:               815b1d81-61ae-4fb1-a2b1-06794be3f986
Spec:
  Policy:
    Placement Type:  PickAll
  Resource Selectors:
    Group:                 
    Kind:                  Namespace
    Name:                  my-namespace
    Version:               v1
  Revision History Limit:  10
  Strategy:
    Type:  RollingUpdate
Status:
  Conditions:
    Last Transition Time:   2024-04-01T18:55:31Z
    Message:                found all the clusters needed as specified by the scheduling policy
    Observed Generation:    2
    Reason:                 SchedulingPolicyFulfilled
    Status:                 True
    Type:                   ClusterResourcePlacementScheduled
    Last Transition Time:   2024-04-01T18:55:36Z
    Message:                All 3 cluster(s) are synchronized to the latest resources on the hub cluster
    Observed Generation:    2
    Reason:                 SynchronizeSucceeded
    Status:                 True
    Type:                   ClusterResourcePlacementSynchronized
    Last Transition Time:   2024-04-01T18:55:36Z
    Message:                Successfully applied resources to 3 member clusters
    Observed Generation:    2
    Reason:                 ApplySucceeded
    Status:                 True
    Type:                   ClusterResourcePlacementApplied
  Observed Resource Index:  0
  Placement Statuses:
    Cluster Name:  membercluster1
    Conditions:
      Last Transition Time:  2024-04-01T18:55:31Z
      Message:               Successfully scheduled resources for placement in membercluster1 (affinity score: 0, topology spread score: 0): picked by scheduling policy
      Observed Generation:   2
      Reason:                ScheduleSucceeded
      Status:                True
      Type:                  ResourceScheduled
      Last Transition Time:  2024-04-01T18:55:36Z
      Message:               Successfully Synchronized work(s) for placement
      Observed Generation:   2
      Reason:                WorkSynchronizeSucceeded
      Status:                True
      Type:                  WorkSynchronized
      Last Transition Time:  2024-04-01T18:55:36Z
      Message:               Successfully applied resources
      Observed Generation:   2
      Reason:                ApplySucceeded
      Status:                True
      Type:                  ResourceApplied
    Cluster Name:            membercluster2
    Conditions:
      Last Transition Time:  2024-04-01T18:55:31Z
      Message:               Successfully scheduled resources for placement in membercluster2 (affinity score: 0, topology spread score: 0): picked by scheduling policy
      Observed Generation:   2
      Reason:                ScheduleSucceeded
      Status:                True
      Type:                  ResourceScheduled
      Last Transition Time:  2024-04-01T18:55:36Z
      Message:               Successfully Synchronized work(s) for placement
      Observed Generation:   2
      Reason:                WorkSynchronizeSucceeded
      Status:                True
      Type:                  WorkSynchronized
      Last Transition Time:  2024-04-01T18:55:36Z
      Message:               Successfully applied resources
      Observed Generation:   2
      Reason:                ApplySucceeded
      Status:                True
      Type:                  ResourceApplied
    Cluster Name:            membercluster3
    Conditions:
      Last Transition Time:  2024-04-01T18:55:31Z
      Message:               Successfully scheduled resources for placement in membercluster3 (affinity score: 0, topology spread score: 0): picked by scheduling policy
      Observed Generation:   2
      Reason:                ScheduleSucceeded
      Status:                True
      Type:                  ResourceScheduled
      Last Transition Time:  2024-04-01T18:55:36Z
      Message:               Successfully Synchronized work(s) for placement
      Observed Generation:   2
      Reason:                WorkSynchronizeSucceeded
      Status:                True
      Type:                  WorkSynchronized
      Last Transition Time:  2024-04-01T18:55:36Z
      Message:               Successfully applied resources
      Observed Generation:   2
      Reason:                ApplySucceeded
      Status:                True
      Type:                  ResourceApplied
  Selected Resources:
    Kind:     Namespace
    Name:     my-namespace
    Version:  v1
Events:
  Type    Reason                     Age   From                                   Message
  ----    ------                     ----  ----                                   -------
  Normal  PlacementScheduleSuccess   108s  cluster-resource-placement-controller  Successfully scheduled the placement
  Normal  PlacementSyncSuccess       103s  cluster-resource-placement-controller  Successfully synchronized the placement
  Normal  PlacementRolloutCompleted  103s  cluster-resource-placement-controller  Resources have been applied to the selected clusters

Nettoyer les ressources

Si vous ne souhaitez plus utiliser l’objet ClusterResourcePlacement, vous pouvez le supprimer à l’aide de la commande kubectl delete. L'exemple suivant supprime l'objet ClusterResourcePlacement nommé distribute-my-namespace :

kubectl delete clusterresourceplacement distribute-my-namespace

Pour en savoir plus sur la propagation des ressources, consultez les ressources suivantes :