Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak pomocí Azure Kubernetes Fleet Manageru ResourcePlacement nasadit prostředky s oborem názvů napříč clustery ve flotile.
Důležité
Funkce Azure Kubernetes Fleet Manageru ve verzi Preview jsou dostupné na samoobslužné bázi s výslovným souhlasem. Ukázky jsou poskytovány "jak jsou" a "podle aktuální dostupnosti" a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Verze Preview Azure Kubernetes Fleet Manageru jsou částečně pokryty zákaznickou podporou s vynaložením maximálního úsilí. Proto tyto funkce nejsou určené pro produkční použití.
Požadavky
- Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.
- Přečtěte si koncepční přehled umístění prostředků zaměřené na obor názvů abyste pochopili koncepty a terminologii používanou v tomto článku.
- Potřebujete Fleet Manager s hub clusterem a členskými clustery. Pokud ho nemáte, přečtěte si téma Vytvoření prostředku Azure Kubernetes Fleet Manageru a připojení k členským clusterům pomocí Azure CLI.
- Potřebujete přístup k rozhraní Kubernetes API clusteru centra. Pokud nemáte přístup, přečtěte si téma Přístup k rozhraní API Kubernetes pro cluster centra Azure Kubernetes Fleet Manager.
Vytvořte obor názvů napříč členskými clustery
Než budete moci použít ResourcePlacement k nasazení prostředků s rozsahem jmenných prostorů, musí cílový jmenný prostor existovat v členských clusterech. Tento příklad ukazuje, jak vytvořit namespace v ústředním clusteru a rozšířit ho do členských clusterů pomocí ClusterResourcePlacement.
Poznámka:
Následující příklad používá placement.kubernetes-fleet.io/v1beta1 verzi rozhraní API. Toto selectionScope: NamespaceOnly pole je náhledová funkce dostupná ve verzi v1beta1 a není k dispozici ve stabilní verzi API v1.
Vytvořte obor názvů v uzlovém clusteru.
kubectl create namespace my-appVytvořte objekt
ClusterResourcePlacement, který rozšíří obor názvů do všech členských clusterů. Uložte následující YAML do souboru s názvemnamespace-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: PickAllPoužijte
ClusterResourcePlacementna hubový cluster:kubectl apply -f namespace-crp.yamlOvěřte, že se obor názvů úspěšně rozšířil:
kubectl get clusterresourceplacement my-app-namespaceVýstup by měl vypadat podobně jako v následujícím příkladu:
NAME GEN SCHEDULED SCHEDULED-GEN AVAILABLE AVAILABLE-GEN AGE my-app-namespace 1 True 1 True 1 15s
Použití ResourcePlacementu k umístění prostředků s oborem názvů
Objekt ResourcePlacement je vytvořen v rámci oboru názvů v hlavním klastru a slouží k distribuci specifických prostředků vymezených oborem názvů do členských klastrů. Tento příklad ukazuje, jak rozšířit objekty ConfigMap do konkrétních členských clusterů pomocí objektu ResourcePlacementPickFixed se zásadami umístění.
Další informace najdete v tématu Umístění prostředků s oborem názvů s využitím ResourcePlacement Azure Kubernetes Fleet Manageru.
Vytvořte ConfigMaps v oboru názvů v hub clusteru. Tyto objekty ConfigMap se rozšíří do vybraných členských clusterů:
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-appVytvořte
ResourcePlacementobjekt pro šíření objektů ConfigMaps. Uložte následující YAML do souboru s názvemapp-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 - membercluster2Poznámka:
Nahraďte
membercluster1amembercluster2skutečnými názvy vašich členských clusterů. K výpisu dostupných členských clusterů můžete použítkubectl get memberclusters.Použijte
ResourcePlacementna hub cluster.kubectl apply -f app-configs-rp.yamlZkontrolujte průběh distribuce zdrojů.
kubectl get resourceplacement app-configs -n my-appVýstup by měl vypadat podobně jako v následujícím příkladu:
NAME GEN SCHEDULED SCHEDULED-GEN AVAILABLE AVAILABLE-GEN AGE app-configs 1 True 1 True 1 20sZobrazení podrobností o objektu umístění:
kubectl describe resourceplacement app-configs -n my-appVýstup by měl vypadat podobně jako v následujícím příkladu:
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
Ověřit prostředky na členských clusterech
Můžete ověřit, že se objekty ConfigMap úspěšně rozšířily do členských clusterů.
Získejte přihlašovací údaje pro jeden z vašich členských clusterů:
az aks get-credentials --resource-group <resource-group> --name membercluster1Ověřte, že prostor jmen existuje:
kubectl get namespace my-appOvěřte, zda ConfigMaps existují v jmenném prostoru.
kubectl get configmap -n my-appVýstup by měl zobrazovat obě objekty ConfigMap:
NAME DATA AGE app-config 2 2m feature-flags 2 2mZobrazení obsahu objektu ConfigMap:
kubectl describe configmap app-config -n my-app
Vyčistěte zdroje
Pokud už objekty nechcete používat ResourcePlacement , můžete je odstranit pomocí kubectl delete příkazu:
kubectl delete resourceplacement app-configs -n my-app
Odebrání oboru názvů ClusterResourcePlacement:
kubectl delete clusterresourceplacement my-app-namespace
Chcete-li odstranit obor názvů a všechny prostředky v něm ze sjednoceného clusteru:
kubectl delete namespace my-app
Související obsah
Další informace o umístění prostředků v oboru názvů najdete v následujících zdrojích informací:
- Použití ResourcePlacementu k nasazení prostředků s oborem názvů
- Použití ClusterResourcePlacement k nasazení prostředků na úrovni clusteru
- Vysvětlení výstupu stavu umístění prostředků
- Použijte přepsání k přizpůsobení prostředků s oborem názvů
- Definování strategie nasazení pro umístění prostředků
- Nejčastější dotazy k umístění prostředků clusteru
Azure Kubernetes Service