Udostępnij przez


Wdrażanie obciążeń w wielu klastrach przy użyciu funkcji umieszczania zasobów klastra usługi Azure Kubernetes Fleet Manager

W tym artykule opisano, jak korzystać z funkcji umieszczania zasobów klastrów w usłudze Azure Kubernetes Fleet Manager, aby wdrażać obciążenia w klastrach we flocie.

Wymagania wstępne

Użyj ClusterResourcePlacement do umieszczania zasobów w klastrach członkowskich

Obiekt ClusterResourcePlacement jest tworzony w klastrze koncentratora i służy do propagowania zasobów do klastrów członkowskich. Określa zasoby, które mają być propagowane, oraz politykę rozmieszczania, która ma być stosowana podczas wybierania klastrów członkowskich. W tym przykładzie pokazano, jak propagować przestrzeń nazw do klastrów członkowskich, używając obiektu ClusterResourcePlacement z polityką rozmieszczania PickAll.

Aby uzyskać więcej informacji, zobacz umieszczanie zasobów przy użyciu funkcji umieszczania zasobów klastra usługi Azure Kubernetes Fleet Manager oraz dokumentację rozwiązania KubeFleet typu open source.

  1. Utwórz przestrzeń nazw, która ma zostać umieszczana w klastrach członkowskich:
kubectl create namespace my-namespace
  1. Utwórz obiekt ClusterResourcePlacement i zastosuj go do klastra centrum zarządzania flotą. W poniższym przykładzie ClusterResourcePlacement o nazwie distribute-my-namespace jest używany do wdrażania przestrzeni nazw my-namespace we wszystkich klastrach członkowskich przy użyciu polityki umieszczania 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

Zastosuj to do centrum klastra Fleet Manager, wydając kubectl apply -f distribute-my-namespace.yaml polecenie, używając nazwy utworzonego pliku zamiast distribute-my-namespace.yaml.

  1. Sprawdź postęp propagacji zasobu:
kubectl get clusterresourceplacement distribute-my-namespace

Dane wyjściowe powinny wyglądać mniej więcej tak jak w tym przykładzie:

NAME                       GEN   SCHEDULED   SCHEDULEDGEN   APPLIED   APPLIEDGEN   AGE
distribute-my-namespace    2     True        2              True      2            10s
  1. Wyświetl szczegóły obiektu umieszczania:
kubectl describe clusterresourceplacement distribute-my-namespace

Dane wyjściowe powinny wyglądać mniej więcej tak jak w tym przykładzie:

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

Uprzątnij zasoby

Jeśli nie chcesz już używać ClusterResourcePlacement obiektu, możesz go usunąć za pomocą kubectl delete polecenia . Poniższy przykład usuwa obiekt ClusterResourcePlacement o nazwie distribute-my-namespace.

kubectl delete clusterresourceplacement distribute-my-namespace

Aby dowiedzieć się więcej na temat propagacji zasobów, zobacz następujące zasoby: