Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird beschrieben, wie Sie Azure Kubernetes Fleet Manager ResourcePlacement verwenden, um Namespace-umfassende Ressourcen in Clustern innerhalb einer Flotte bereitzustellen.
Von Bedeutung
Azure Kubernetes Fleet Manager Preview-Features sind auf Self-Service-, Opt-In-Basis verfügbar. Vorschauversionen werden „im Istzustand“ und „wie verfügbar“ bereitgestellt und sind von den Service Level Agreements und der eingeschränkten Garantie ausgeschlossen. Azure Kubernetes Fleet Manager Previews werden teilweise vom Kundensupport auf Best-Effort-Basis abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen.
Voraussetzungen
- Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.
- Lesen Sie die konzeptionelle Übersicht über die Ressourcenplatzierung im Namespacebereich , um die in diesem Artikel verwendeten Konzepte und Terminologie zu verstehen.
- Sie benötigen einen Flottenmanager 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.
- 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.
Das Einrichten eines Namespaces über die Mitgliedscluster hinweg
Bevor Sie die Namespace-bezogenen Ressourcen mit ResourcePlacement bereitstellen können, muss der Zielnamespace in den Memberclustern vorhanden sein. In diesem Beispiel wird gezeigt, wie Sie einen Namespace auf dem Hubcluster erstellen und ihn mithilfe von ClusterResourcePlacement auf die Mitgliedscluster verteilen.
Hinweis
Im folgenden Beispiel wird die placement.kubernetes-fleet.io/v1beta1 API-Version verwendet. Das selectionScope: NamespaceOnly Feld ist ein Vorschaufeature, das in v1beta1 verfügbar ist und in der stabilen v1-API nicht verfügbar ist.
Erstellen Sie einen Namespace im Hubcluster:
kubectl create namespace my-appErstellen Sie ein
ClusterResourcePlacementObjekt, um den Namespace an alle Membercluster zu verteilen. Speichern Sie das folgende YAML in einer Datei mit dem Namennamespace-crp.yaml:apiVersion: placement.kubernetes-fleet.io/v1beta1 kind: ClusterResourcePlacement metadata: name: my-app-namespace spec: resourceSelectors: - group: "" kind: Namespace name: my-app version: v1 selectionScope: NamespaceOnly policy: placementType: PickAllWenden Sie
ClusterResourcePlacementauf den Hubcluster an:kubectl apply -f namespace-crp.yamlÜberprüfen Sie, ob der Namespace erfolgreich weitergegeben wurde:
kubectl get clusterresourceplacement my-app-namespaceIhre Ausgabe sollte etwa folgendem Beispiel entsprechen:
NAME GEN SCHEDULED SCHEDULED-GEN AVAILABLE AVAILABLE-GEN AGE my-app-namespace 1 True 1 True 1 15s
Verwenden von ResourcePlacement zum Platzieren von Namespace-bezogenen Ressourcen
Das ResourcePlacement Objekt wird innerhalb eines Namespaces im Hub-Cluster erstellt und verwendet, um bestimmte Namespace-beschränkte Ressourcen an Membercluster zu verteilen. In diesem Beispiel wird veranschaulicht, wie ConfigMaps mithilfe des ResourcePlacement Objekts mit einer PickFixed Platzierungsrichtlinie an bestimmte Membercluster weitergegeben wird.
Weitere Informationen finden Sie unter Namespace-bezogene Ressourcenplatzierung mit dem Azure Kubernetes Fleet Manager ResourcePlacement.
Erstellen Sie ConfigMaps im Namespace im Hub-Cluster. Diese ConfigMaps werden an die ausgewählten Mitglieder-Cluster weitergeleitet.
kubectl create configmap app-config \ --from-literal=environment=production \ --from-literal=log-level=info \ -n my-app kubectl create configmap feature-flags \ --from-literal=new-ui=enabled \ --from-literal=api-v2=disabled \ -n my-appErstellen Sie ein
ResourcePlacementObjekt, um die ConfigMaps zu verteilen. Speichern Sie das folgende YAML in einer Datei mit dem Namenapp-configs-rp.yaml:apiVersion: placement.kubernetes-fleet.io/v1beta1 kind: ResourcePlacement metadata: name: app-configs namespace: my-app spec: resourceSelectors: - group: "" kind: ConfigMap version: v1 name: app-config - group: "" kind: ConfigMap version: v1 name: feature-flags policy: placementType: PickFixed clusterNames: - membercluster1 - membercluster2Hinweis
Ersetzen Sie
membercluster1undmembercluster2durch die tatsächlichen Namen Ihrer Cluster. Sie können verfügbare Membercluster mithilfe vonkubectl get memberclusters.Wenden Sie
ResourcePlacementauf den Hub-Cluster an:kubectl apply -f app-configs-rp.yamlÜberprüfen Sie den Fortschritt der Ressourcenverteilung:
kubectl get resourceplacement app-configs -n my-appIhre Ausgabe sollte etwa folgendem Beispiel entsprechen:
NAME GEN SCHEDULED SCHEDULED-GEN AVAILABLE AVAILABLE-GEN AGE app-configs 1 True 1 True 1 20sZeigen Sie die Details des Platzierungsobjekts an:
kubectl describe resourceplacement app-configs -n my-appIhre Ausgabe sollte etwa folgendem Beispiel entsprechen:
Name: app-configs Namespace: my-app Labels: <none> Annotations: <none> API Version: placement.kubernetes-fleet.io/v1beta1 Kind: ResourcePlacement Metadata: Creation Timestamp: 2025-11-13T22:08:12Z Finalizers: kubernetes-fleet.io/crp-cleanup kubernetes-fleet.io/scheduler-cleanup Generation: 1 Resource Version: 12345 UID: cec941f1-e48a-4045-b5dd-188bfc1a830f Spec: Policy: Cluster Names: membercluster1 membercluster2 Placement Type: PickFixed Resource Selectors: Group: Kind: ConfigMap Name: app-config Version: v1 Group: Kind: ConfigMap Name: feature-flags Version: v1 Revision History Limit: 10 Strategy: Type: RollingUpdate Status: Conditions: Last Transition Time: 2025-11-13T22:08:12Z Message: found all cluster needed as specified by the scheduling policy, found 2 cluster(s) Observed Generation: 1 Reason: SchedulingPolicyFulfilled Status: True Type: ResourcePlacementScheduled Last Transition Time: 2025-11-13T22:08:12Z Message: All 2 cluster(s) start rolling out the latest resource Observed Generation: 1 Reason: RolloutStarted Status: True Type: ResourcePlacementRolloutStarted Last Transition Time: 2025-11-13T22:08:13Z Message: No override rules are configured for the selected resources Observed Generation: 1 Reason: NoOverrideSpecified Status: True Type: ResourcePlacementOverridden Last Transition Time: 2025-11-13T22:08:13Z Message: Works(s) are succcesfully created or updated in 2 target cluster(s)' namespaces Observed Generation: 1 Reason: WorkSynchronized Status: True Type: ResourcePlacementWorkSynchronized Last Transition Time: 2025-11-13T22:08:13Z Message: The selected resources are successfully applied to 2 cluster(s) Observed Generation: 1 Reason: ApplySucceeded Status: True Type: ResourcePlacementApplied Last Transition Time: 2025-11-13T22:08:13Z Message: The selected resources in 2 cluster(s) are available now Observed Generation: 1 Reason: ResourceAvailable Status: True Type: ResourcePlacementAvailable Observed Resource Index: 0 Placement Statuses: Cluster Name: membercluster1 Conditions: Last Transition Time: 2025-11-13T22:08:12Z Message: Successfully scheduled resources for placement in "membercluster1": picked by scheduling policy Observed Generation: 1 Reason: Scheduled Status: True Type: Scheduled Last Transition Time: 2025-11-13T22:08:12Z Message: Detected the new changes on the resources and started the rollout process Observed Generation: 1 Reason: RolloutStarted Status: True Type: RolloutStarted Last Transition Time: 2025-11-13T22:08:13Z Message: No override rules are configured for the selected resources Observed Generation: 1 Reason: NoOverrideSpecified Status: True Type: Overridden Last Transition Time: 2025-11-13T22:08:13Z Message: All of the works are synchronized to the latest Observed Generation: 1 Reason: AllWorkSynced Status: True Type: WorkSynchronized Last Transition Time: 2025-11-13T22:08:13Z Message: All corresponding work objects are applied Observed Generation: 1 Reason: AllWorkHaveBeenApplied Status: True Type: Applied Last Transition Time: 2025-11-13T22:08:13Z Message: All corresponding work objects are available Observed Generation: 1 Reason: AllWorkAreAvailable Status: True Type: Available Observed Resource Index: 0 Cluster Name: membercluster2 Conditions: Last Transition Time: 2025-11-13T22:08:12Z Message: Successfully scheduled resources for placement in "membercluster2": picked by scheduling policy Observed Generation: 1 Reason: Scheduled Status: True Type: Scheduled Last Transition Time: 2025-11-13T22:08:12Z Message: Detected the new changes on the resources and started the rollout process Observed Generation: 1 Reason: RolloutStarted Status: True Type: RolloutStarted Last Transition Time: 2025-11-13T22:08:13Z Message: No override rules are configured for the selected resources Observed Generation: 1 Reason: NoOverrideSpecified Status: True Type: Overridden Last Transition Time: 2025-11-13T22:08:13Z Message: All of the works are synchronized to the latest Observed Generation: 1 Reason: AllWorkSynced Status: True Type: WorkSynchronized Last Transition Time: 2025-11-13T22:08:13Z Message: All corresponding work objects are applied Observed Generation: 1 Reason: AllWorkHaveBeenApplied Status: True Type: Applied Last Transition Time: 2025-11-13T22:08:13Z Message: All corresponding work objects are available Observed Generation: 1 Reason: AllWorkAreAvailable Status: True Type: Available Observed Resource Index: 0 Selected Resources: Kind: ConfigMap Name: app-config Namespace: my-app Version: v1 Kind: ConfigMap Name: feature-flags Namespace: my-app Version: v1 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal PlacementRolloutStarted 37s placement-controller Started rolling out the latest resources Normal PlacementOverriddenSucceeded 36s placement-controller Placement has been successfully overridden Normal PlacementWorkSynchronized 36s placement-controller Work(s) have been created or updated successfully for the selected cluster(s) Normal PlacementApplied 36s placement-controller Resources have been applied to the selected cluster(s) Normal PlacementAvailable 36s placement-controller Resources are available on the selected cluster(s) Normal PlacementRolloutCompleted 36s placement-controller Placement has finished the rollout process and reached the desired status
Überprüfen von Ressourcen in Mitglieder-Clustern
Sie können überprüfen, ob die ConfigMaps erfolgreich an die Membercluster weitergegeben wurden.
Rufen Sie die Zugangsdaten für einen Ihrer Mitglieds-Cluster ab:
az aks get-credentials --resource-group <resource-group> --name membercluster1Überprüfen Sie, ob der Namespace vorhanden ist:
kubectl get namespace my-appStellen Sie sicher, dass die ConfigMaps im Namespace vorhanden sind:
kubectl get configmap -n my-appIhre Ausgabe sollte beide ConfigMaps anzeigen:
NAME DATA AGE app-config 2 2m feature-flags 2 2mAnzeigen des Inhalts einer ConfigMap:
kubectl describe configmap app-config -n my-app
Bereinigen von Ressourcen
Wenn Sie die ResourcePlacement Objekte nicht mehr verwenden möchten, können Sie sie mit dem kubectl delete Befehl löschen:
kubectl delete resourceplacement app-configs -n my-app
Um auch den Namespace ClusterResourcePlacement zu entfernen:
kubectl delete clusterresourceplacement my-app-namespace
So entfernen Sie den Namespace und alle darin enthaltenen Ressourcen aus dem Hubcluster:
kubectl delete namespace my-app
Verwandte Inhalte
Weitere Informationen zur Ressourcenplatzierung, die an Namespaces gebunden ist, finden Sie in den nachfolgenden Ressourcen.
- Verwenden von ResourcePlacement zum Bereitstellen von namespacebezogenen Ressourcen
- Verwenden von ClusterResourcePlacement zum Bereitstellen von clusterbezogenen Ressourcen
- Verständnis der Ausgabe des Ressourcenplatzierungsstatus
- Verwenden von Außerkraftsetzungen zum Anpassen von Ressourcen im Namespacebereich
- Definieren einer Rolloutstrategie für die Ressourcenplatzierung
- Häufig gestellte Fragen zur Platzierung von Clusterressourcen