Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano, jak używać usługi Azure Kubernetes Fleet Manager ResourcePlacement do wdrażania zasobów o zakresie przestrzeni nazw w klastrach w ramach floty.
Ważne
Funkcje usługi Azure Kubernetes Fleet Manager w wersji zapoznawczej są dostępne na zasadzie samoobsługi. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi Azure Kubernetes Fleet Manager są częściowo objęte pomocą techniczną świadczoną w miarę możliwości. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego.
Wymagania wstępne
- Jeśli nie masz jeszcze konta platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
- Zapoznaj się z koncepcyjnym omówieniem umieszczania zasobów w zakresie przestrzeni nazw , aby zrozumieć pojęcia i terminologię używaną w tym artykule.
- Potrzebujesz Menadżera floty z klastrem centralnym i klastrami członkowskimi. Jeśli go nie masz, zobacz Create an Azure Kubernetes Fleet Manager resource and join member clusters by using the Azure CLI (Tworzenie zasobu usługi Azure Kubernetes Fleet Manager i dołączanie do klastrów członkowskich przy użyciu interfejsu wiersza polecenia platformy Azure).
- Potrzebujesz dostępu do interfejsu API Kubernetes klastra hub. Jeśli nie masz dostępu, zobacz Uzyskiwanie dostępu do interfejsu API Kubernetes dla klastra centrum zarządzania flotą Azure Kubernetes.
Ustal przestrzeń nazw w poprzek klastrów członkowskich
Aby móc za pomocą ResourcePlacement wdrożyć zasoby o zakresie przestrzeni nazw, docelowa przestrzeń nazw musi istnieć w klastrach członkowskich. W tym przykładzie pokazano, jak utworzyć przestrzeń nazw w klastrze centrum i propagować ją do klastrów członkowskich przy użyciu polecenia ClusterResourcePlacement.
Uwaga / Notatka
W poniższym przykładzie użyto wersji interfejsu placement.kubernetes-fleet.io/v1beta1 API. Pole selectionScope: NamespaceOnly to funkcja w wersji zapoznawczej dostępna w wersji 1beta1 i nie jest dostępna w stabilnym interfejsie API w wersji 1.
Utwórz przestrzeń nazw w klastrze głównym.
kubectl create namespace my-appClusterResourcePlacementUtwórz obiekt, aby propagować przestrzeń nazw do wszystkich klastrów członkowskich. Zapisz następujący kod YAML w pliku o nazwienamespace-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: PickAllZastosuj
ClusterResourcePlacementdo klastera centrów:kubectl apply -f namespace-crp.yamlSprawdź, czy przestrzeń nazw została pomyślnie rozpropagowana:
kubectl get clusterresourceplacement my-app-namespaceDane wyjściowe powinny wyglądać mniej więcej tak jak w tym przykładzie:
NAME GEN SCHEDULED SCHEDULED-GEN AVAILABLE AVAILABLE-GEN AGE my-app-namespace 1 True 1 True 1 15s
Użyj ResourcePlacement do umieszczania zasobów o zakresie przestrzeni nazw
Obiekt ResourcePlacement jest tworzony w przestrzeni nazw w klastrze centrum i służy do propagowania określonych zasobów o zakresie przestrzeni nazw do klastrów członkowskich. W tym przykładzie przedstawiono, jak propagować ConfigMaps do określonych klastrów członkowskich, używając obiektu ResourcePlacement z polityką rozmieszczania PickFixed.
Aby uzyskać więcej informacji, zobacz umieszczanie zasobów w obrębie przestrzeni nazw przy użyciu usługi Azure Kubernetes Fleet Manager ResourcePlacement.
Utwórz ConfigMaps w przestrzeni nazw w centralnym klastrze. Te ConfigMaps będą propagowane do wybranych klastrów członkowskich:
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-appUtwórz obiekt
ResourcePlacement, aby propagować ConfigMaps. Zapisz następujący kod YAML w pliku o nazwieapp-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 - membercluster2Uwaga / Notatka
Zastąp
membercluster1imembercluster2rzeczywistymi nazwami klastrów członkowskich. Dostępne klastry członkowskie można wyświetlić przy użyciu poleceniakubectl get memberclusters.Zastosuj
ResourcePlacementdo klastra koncentracyjnego.kubectl apply -f app-configs-rp.yamlSprawdź postęp propagacji zasobu:
kubectl get resourceplacement app-configs -n my-appDane wyjściowe powinny wyglądać mniej więcej tak jak w tym przykładzie:
NAME GEN SCHEDULED SCHEDULED-GEN AVAILABLE AVAILABLE-GEN AGE app-configs 1 True 1 True 1 20sWyświetl szczegóły obiektu umieszczania:
kubectl describe resourceplacement app-configs -n my-appDane wyjściowe powinny wyglądać mniej więcej tak jak w tym przykładzie:
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
Weryfikowanie zasobów w klastrach członkowskich
Możesz sprawdzić, czy ConfigMapy zostały pomyślnie propagowane do klastrów członkowskich.
Pobierz poświadczenia dla jednego z klastrów członkowskich:
az aks get-credentials --resource-group <resource-group> --name membercluster1Sprawdź, czy przestrzeń nazw istnieje:
kubectl get namespace my-appSprawdź, czy ConfigMaps istnieją w przestrzeni nazw:
kubectl get configmap -n my-appDane wyjściowe powinny zawierać oba obiekty ConfigMap:
NAME DATA AGE app-config 2 2m feature-flags 2 2mWyświetl zawartość obiektu ConfigMap:
kubectl describe configmap app-config -n my-app
Uprzątnij zasoby
Jeśli nie chcesz już używać ResourcePlacement obiektów, możesz je usunąć za pomocą kubectl delete polecenia :
kubectl delete resourceplacement app-configs -n my-app
Aby również usunąć przestrzeń nazw ClusterResourcePlacement:
kubectl delete clusterresourceplacement my-app-namespace
Aby usunąć przestrzeń nazw i wszystkie zasoby w niej z klastra centralnego:
kubectl delete namespace my-app
Treści powiązane
Aby dowiedzieć się więcej o umieszczaniu zasobów w przestrzeni nazw, zobacz poniższe zasoby:
- Wdrażanie zasobów o zakresie przestrzeni nazw przy użyciu usługi ResourcePlacement
- Wdrażanie zasobów o zakresie klastra przy użyciu elementu ClusterResourcePlacement
- Zrozumienie wyniku stanu umieszczania zasobów
- Używanie przesłonięć do dostosowywania zasobów o zakresie przestrzeni nazw
- Definiowanie strategii wdrożenia dla rozmieszczenia zasobów
- Często zadawane pytania dotyczące umieszczania zasobów klastra