Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u Azure Kubernetes Fleet Manager ResourcePlacement gebruikt om resources met naamruimtebereik te implementeren in clusters in een vloot.
Belangrijk
Preview-functies van Azure Kubernetes Fleet Manager zijn beschikbaar op basis van selfservice, opt-in. Previews worden geleverd 'zoals het is' en 'voor zover beschikbaar' en zijn uitgesloten van de serviceovereenkomsten en beperkte garantie. Previews van Azure Kubernetes Fleet Manager worden gedeeltelijk gedekt door klantondersteuning op basis van best effort. Zodoende zijn deze functies niet bedoeld voor productiegebruik.
Vereiste voorwaarden
- Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.
- Lees het conceptuele overzicht van resourceplaatsing binnen het naamruimtebereik om inzicht te hebben in de concepten en terminologie die in dit artikel worden gebruikt.
- U hebt een Fleet Manager nodig met een hubcluster en lidclusters. Als u nog geen resource hebt, raadpleegt u Een Azure Kubernetes Fleet Manager-resource maken en lidclusters koppelen met behulp van de Azure CLI.
- U hebt toegang nodig tot de Kubernetes-API van het hubcluster. Als u geen toegang hebt, raadpleegt u De Kubernetes-API voor een Azure Kubernetes Fleet Manager-hubcluster.
De naamruimte tussen lidclusters tot stand brengen
Voordat u ResourcePlacement kunt gebruiken om naamruimte-georiënteerde resources te implementeren, moet de doelnaamruimte bestaan op de lidclusters. In dit voorbeeld ziet u hoe u een naamruimte in het hubcluster maakt en deze doorgeeft aan lidclusters met behulp van ClusterResourcePlacement.
Opmerking
In het volgende voorbeeld wordt de placement.kubernetes-fleet.io/v1beta1 API-versie gebruikt. Het selectionScope: NamespaceOnly veld is een preview-functie die beschikbaar is in v1beta1 en is niet beschikbaar in de stabiele v1-API.
Maak een naamruimte in het hubcluster:
kubectl create namespace my-appMaak een
ClusterResourcePlacementobject om de naamruimte door te geven aan alle lidclusters. Sla de volgende YAML op in een bestand met de naamnamespace-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: PickAllPas het volgende
ClusterResourcePlacementtoe op het hubcluster:kubectl apply -f namespace-crp.yamlControleer of de naamruimte succesvol is doorgegeven.
kubectl get clusterresourceplacement my-app-namespaceUw uitvoer moet er ongeveer uitzien als de uitvoer in het volgende voorbeeld:
NAME GEN SCHEDULED SCHEDULED-GEN AVAILABLE AVAILABLE-GEN AGE my-app-namespace 1 True 1 True 1 15s
ResourcePlacement gebruiken om resources met naamruimtebereik te plaatsen
Het ResourcePlacement object wordt gemaakt in een naamruimte op het hubcluster en wordt gebruikt om specifieke resources met naamruimtebereik door te geven aan lidclusters. In dit voorbeeld ziet u hoe u ConfigMaps doorgeeft aan specifieke lidclusters met behulp van het ResourcePlacement object met een PickFixed plaatsingsbeleid.
Zie voor meer informatie de plaatsing van resources binnen het naamruimtebereik met behulp van Azure Kubernetes Fleet Manager ResourcePlacement.
Maak ConfigMaps in de naamruimte op het hubcluster. Deze ConfigMaps worden doorgegeven aan de geselecteerde lidclusters:
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-appMaak een
ResourcePlacementobject om de ConfigMaps door te geven. Sla de volgende YAML op in een bestand met de naamapp-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 - membercluster2Opmerking
Vervang
membercluster1enmembercluster2door de werkelijke namen van uw lidclusters. U kunt beschikbare lidclusters weergeven met behulp vankubectl get memberclusters.Pas het volgende
ResourcePlacementtoe op het hubcluster:kubectl apply -f app-configs-rp.yamlControleer de voortgang van de resourcedoorgifte:
kubectl get resourceplacement app-configs -n my-appUw uitvoer moet er ongeveer uitzien als de uitvoer in het volgende voorbeeld:
NAME GEN SCHEDULED SCHEDULED-GEN AVAILABLE AVAILABLE-GEN AGE app-configs 1 True 1 True 1 20sBekijk de details van het plaatsingsobject:
kubectl describe resourceplacement app-configs -n my-appUw uitvoer moet er ongeveer uitzien als de uitvoer in het volgende voorbeeld:
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
Resources op ledenclusters verifiëren
U kunt controleren of de ConfigMaps zijn doorgegeven aan de lidclusters.
Haal de referenties voor een van uw lidclusters op:
az aks get-credentials --resource-group <resource-group> --name membercluster1Controleer of de naamruimte bestaat:
kubectl get namespace my-appControleer of de ConfigMaps aanwezig zijn in de naamruimte:
kubectl get configmap -n my-appIn de uitvoer moeten beide ConfigMaps worden weergegeven:
NAME DATA AGE app-config 2 2m feature-flags 2 2mDe inhoud van een ConfigMap weergeven:
kubectl describe configmap app-config -n my-app
De hulpbronnen opschonen
Als u de ResourcePlacement objecten niet meer wilt gebruiken, kunt u ze verwijderen met behulp van de kubectl delete opdracht:
kubectl delete resourceplacement app-configs -n my-app
Als u ook de naamruimte ClusterResourcePlacementwilt verwijderen:
kubectl delete clusterresourceplacement my-app-namespace
De naamruimte en alle resources erin verwijderen uit het hubcluster:
kubectl delete namespace my-app
Verwante inhoud
Zie de volgende informatiebronnen voor meer informatie over de plaatsing van bronnen met de reikwijdte van een naamruimte:
- ResourcePlacement gebruiken om resources met naamruimtebereik te implementeren
- ClusterResourcePlacement gebruiken om cluster-brede resources te implementeren
- Inzicht in de statusuitvoer van de resourceplaatsing
- Onderdrukkingen gebruiken om resources met naamruimtebereik aan te passen
- Een implementatiestrategie definiëren voor resourceplaatsing
- Veelgestelde vragen over plaatsing van clusterresources