Verteilen von Ressourcen aus einem Azure Kubernetes Fleet Manager-Hubcluster an Mitgliedscluster
Dieser Artikel beschreibt, wie Sie Ressourcen aus einem Azure Kubernetes Fleet Manager-Hubcluster (Kubernetes Fleet) an Mitgliedscluster verteilen.
Voraussetzungen
- Sollten Sie über kein Azure-Abonnement verfügen, können Sie zunächst ein kostenloses Azure-Konto erstellen.
- Lesen Sie die konzeptionelle Übersicht über die Ressourcenverteilung, um die in diesem Artikel verwendeten Konzepte und Terminologie zu verstehen.
- Sie benötigen eine Kubernetes Fleet-Ressource mit einem Hubcluster und Mitgliedsclustern. Wenn Sie noch keine haben, lesen Sie bitte Erstellen einer Azure Kubernetes Fleet Manager-Ressource und Beitritt zu Mitgliedsclustern mithilfe der Azure CLI.
- Member-Cluster müssen entsprechend im Hub-Cluster beschriftet werden, um den gewünschten Auswahlkriterien zu entsprechen. Beispielbezeichnungen umfassen Region, Umgebung, Team, Verfügbarkeitszonen, Knotenverfügbarkeit oder andere gewünschte Elemente.
- Sie benötigen Zugriff auf die Kubernetes-API des Hubclusters. Wenn Sie keinen Zugriff haben, lesen Sie Zugriff auf die Kubernetes-API für einen Azure Kubernetes Fleet Manager-Hubcluster.
Verwenden der ClusterResourcePlacement-API zum Verteilen von Ressourcen an Mitgliedscluster
Das ClusterResourcePlacement
-API-Objekt wird im Hubcluster erstellt und wird verwendet, um Ressourcen an Membercluster zu verteilen. Es gibt die Ressourcen an, die verteilt werden sollen, und die Platzierungsrichtlinie, die beim Auswählen von Mitgliedsclustern verwendet werden soll. In diesem Beispiel wird veranschaulicht, wie ein Namespace mithilfe des ClusterResourcePlacement
-API-Objekts mit einer PickAll
-Platzierungsrichtlinie an Mitgliedscluster verteilt wird.
Weitere Informationen finden Sie unter Kubernetes-Ressourcenplatzierung von Hubclustern zu Mitgliedsclustern und der Open-Source-Kubernetes-Fleet-Dokumentation.
Erstellen Sie einen Namespace, der mithilfe des
kubectl create namespace
-Befehls in den Mitgliedsclustern platziert werden soll. Im folgenden Beispiel wird ein Namespace mit dem Namenmy-namespace
erstellt:kubectl create namespace my-namespace
Erstellen Sie ein
ClusterResourcePlacement
-API-Objekt im Hubcluster, um den Namespace an die Mitgliedscluster zu verteilen und mithilfe deskubectl apply -f
-Befehls bereitzustellen. Das folgende Beispiel erstelltClusterResourcePlacement
ein Objekt namenscrp
und verwendet denmy-namespace
-Namespace mit einerPickAll
-Platzierungsrichtlinie, um den Namespace an alle Mitgliedscluster zu verteilen:kubectl apply -f - <<EOF apiVersion: placement.kubernetes-fleet.io/v1 kind: ClusterResourcePlacement metadata: name: crp spec: resourceSelectors: - group: "" kind: Namespace version: v1 name: my-namespace policy: placementType: PickAll EOF
Überprüfen Sie den Fortschritt der Ressourcenverteilung mithilfe des
kubectl get clusterresourceplacement
-Befehls. Im folgenden Beispiel wird der Status desClusterResourcePlacement
-Objekts namenscrp
überprüft:kubectl get clusterresourceplacement crp
Ihre Ausgabe sollte etwa folgendem Beispiel entsprechen:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE crp 2 True 2 True 2 10s
Zeigen Sie die Details des
crp
-Objekts mithilfe deskubectl describe crp
-Befehls an. Im folgenden Beispiel wird dasClusterResourcePlacement
-Objekt namenscrp
beschrieben:kubectl describe clusterresourceplacement crp
Ihre Ausgabe sollte etwa folgendem Beispiel entsprechen:
Name: crp 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
Bereinigen von Ressourcen
Wenn Sie das ClusterResourcePlacement
-Objekt nicht mehr verwenden möchten, können Sie es mit dem kubectl delete
-Befehl löschen. Im folgenden Beispiel wird das ClusterResourcePlacement
-Objekt namens crp
gelöscht:
kubectl delete clusterresourceplacement crp
Zugehöriger Inhalt
Weitere Informationen zur Ressourcenverteilung finden Sie in den folgenden Artikeln:
Azure Kubernetes Service