Condividi tramite


Usare il posizionamento delle risorse cluster di Azure Kubernetes Fleet Manager per distribuire i carichi di lavoro in più cluster

Questo articolo descrive come usare il posizionamento delle risorse cluster di Azure Kubernetes Fleet Manager per distribuire carichi di lavoro tra cluster in una flotta.

Prerequisiti

Usare ClusterResourcePlacement per inserire le risorse nei cluster membri

L'oggetto ClusterResourcePlacement viene creato nel cluster hub e viene usato per propagare le risorse ai cluster membri. Specifica le risorse da propagare e i criteri di posizionamento da usare quando si selezionano cluster membri. In questo esempio viene illustrato come propagare uno spazio dei nomi ai cluster membri usando l'oggetto ClusterResourcePlacement con un PickAll criterio di posizionamento.

Per altre informazioni, vedere Posizionamento delle risorse usando il posizionamento delle risorse cluster di Azure Kubernetes Fleet Manager e la documentazione di KubeFleet open source.

  1. Creare uno spazio dei nomi da inserire nei cluster membri:
kubectl create namespace my-namespace
  1. Creare un ClusterResourcePlacement oggetto e applicarlo al cluster hub di Fleet Manager. Nell'esempio seguente, un ClusterResourcePlacement denominato distribute-my-namespace viene utilizzato per distribuire un namespace my-namespace a tutti i cluster membri, utilizzando la PickAll policy di posizionamento:
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

Applicarlo al cluster hub di Fleet Manager eseguendo kubectl apply -f distribute-my-namespace.yaml, usando il nome del file creato al posto di distribute-my-namespace.yaml.

  1. Controllare lo stato di avanzamento della propagazione delle risorse:
kubectl get clusterresourceplacement distribute-my-namespace

L'output dovrebbe essere simile all'esempio seguente:

NAME                       GEN   SCHEDULED   SCHEDULEDGEN   APPLIED   APPLIEDGEN   AGE
distribute-my-namespace    2     True        2              True      2            10s
  1. Visualizzare i dettagli dell'oggetto di posizionamento:
kubectl describe clusterresourceplacement distribute-my-namespace

L'output dovrebbe essere simile all'esempio seguente:

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

Pulire le risorse

Se non si vuole più usare l'oggetto ClusterResourcePlacement, è possibile eliminarlo usando il comando kubectl delete. Nell'esempio seguente viene eliminato l'oggetto ClusterResourcePlacement denominato distribute-my-namespace:

kubectl delete clusterresourceplacement distribute-my-namespace

Per altre informazioni sulla propagazione delle risorse, vedere le risorse seguenti: