Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: ✔️ Fleet Manager z klastrem hubowym
Rozmieszczanie zasobów w usłudze Azure Kubernetes Fleet Manager umożliwia rozmieszczanie i synchronizowanie zasobów o zakresie klastra — w tym przestrzeni nazw i ich zasobów podrzędnych — w wielu klastrach floty. Ta funkcja upraszcza wdrożenia wieloklastrowe, zapewniając spójną konfigurację zasobów w całej infrastrukturze, zmniejszając ręczne obciążenie i umożliwiając zarządzanie złożonymi obciążeniami na dużą skalę przy użyciu jednego źródła prawdy. W tym artykule opisano, jak używać ClusterResourcePlacement do rozprowadzania przestrzeni nazw i jej obciążeń do klastrów członkowskich.
Aby dystrybuować poszczególne zasoby wewnątrz przestrzeni nazw, zapoznaj się z dokumentacją dotyczącą umieszczania zasobów w zakresie przestrzeni nazw.
Kroki opisane w tym artykule można wykonać przy użyciu portalu Azure lub Azure CLI.
Note
Możesz używać funkcji rozmieszczania zasobów w usłudze Fleet Manager z usługą AKS i klastrami Kubernetes z włączoną usługą Azure Arc.
Zanim rozpoczniesz
- 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 , 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.
Dystrybuowanie przestrzeni nazw i jej zasobów do klastrów członkowskich
Skorzystaj z prostego scenariusza użycia Deployment i Service do wdrażania we wszystkich klastrach we flocie. Utwórz przestrzeń nazw w klastrze centralnym usługi Fleet Manager, dodaj do niej obciążenia, a następnie użyj obiektu ClusterResourcePlacement, aby rozprowadzić przestrzeń nazw i całą jej zawartość do wszystkich klastrów członkowskich za pomocą zasad rozmieszczania PickAll.
Ustaw następujące zmienne środowiskowe dla ID subskrypcji, grupy zasobów oraz zasobu Kubernetes Fleet:
export SUBSCRIPTION_ID=<subscription-id> export GROUP=<resource-group-name> export FLEET=<fleet-name>Ustaw domyślną subskrypcję Azure przy użyciu polecenia [
az account set][az-account-set]:az account set \ --subscription ${SUBSCRIPTION_ID}Pobierz plik kubeconfig klastra centralnego Kubernetes Fleet za pomocą polecenia [
az fleet get-credentials][az-fleet-get-credentials]:az fleet get-credentials \ --resource-group ${GROUP} \ --name ${FLEET}Dane wyjściowe powinny wyglądać podobnie do poniższych.
Merged "hub" as current context in /home/fleet/.kube/configNote
Jeśli wystąpi błąd typu
InvalidHubOperationz komunikatem wskazującym, że flota jest bez koncentratora, dodaj klaster koncentratora. Aby uzyskać więcej informacji, zobacz uaktualnienie typu klastra centralnego.Utwórz przestrzeń nazw w klastrze centralnym.
kubectl create namespace test-appZapisz następujący kod YAML jako
test-workload.yaml.apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: test-app spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: mcr.microsoft.com/azurelinux/base/nginx:1.28@sha256:3352a36cbcab4708883a3e77b64f64159e11e1aab358c010e1c4e465dbfb4f57 ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx-service namespace: test-app spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancerWdróż obciążenie testowe do klastra centralnego Fleet Manager przy użyciu
kubectl.kubectl apply -f test-workload.yamlZapisz następujący kod YAML jako
crp-distribute-workload.yaml.apiVersion: placement.kubernetes-fleet.io/v1 kind: ClusterResourcePlacement metadata: name: distribute-test-app spec: resourceSelectors: - group: "" kind: Namespace version: v1 name: test-app policy: placementType: PickAllZastosuj manifest rozmieszczenia do klastra centralnego Fleet Manager.
kubectl apply -f crp-distribute-workload.yamlNote
Wdrożenie zasobu rozpoczyna się natychmiast po zastosowaniu manifestu. Jest używana niejawna
RollingUpdatestrategia. Aby dowiedzieć się, jak uzyskać dodatkową kontrolę nad wdrażaniem, zobacz temat definiowanie strategii wdrażania dotyczącej rozmieszczania zasobów.Sprawdź postęp umieszczania zasobów.
kubectl get clusterresourceplacement distribute-test-app
Dane wyjściowe powinny wyglądać mniej więcej tak jak w tym przykładzie:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE
distribute-test-app 2 True 2 True 2 10s
- Wyświetl szczegóły umiejscowienia.
kubectl describe clusterresourceplacement distribute-test-app
Dane wyjściowe powinny wyglądać mniej więcej tak jak w tym przykładzie:
Name: distribute-test-app
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: test-app
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
W portalu Azure przejdź do usługi Fleet Manager.
W menu usługi, w sekcji Zasoby floty, wybierz opcję Przestrzenie> nazw+ Utwórz.
Note
Jeśli nie widzisz Fleet Resources, Twój Fleet Manager nie jest skojarzony z klastrem huba. Aby uzyskać więcej informacji o tym, jak go dodać, zobacz Typ klastra centrum uaktualniania.
W menu wybierz pozycję Przestrzeń nazw, wprowadź nazwę, a następnie wybierz pozycję Utwórz.
Po kilku chwilach strona zostanie odświeżona, a przestrzeń nazw zostanie wyświetlona na liście przestrzeni nazw w klastrze centrum Fleet Manager. Teraz można hostować wszystkie zasoby, które mają być dystrybuowane między klastrami członkowskimi.
W górnej części listy przestrzeni nazw wybierz pozycję + Utwórz>zastosuj kod YAML i użyj poniższych przykładów.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: test-app spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: mcr.microsoft.com/azurelinux/base/nginx:1.28@sha256:3352a36cbcab4708883a3e77b64f64159e11e1aab358c010e1c4e465dbfb4f57 ports: - containerPort: 80apiVersion: v1 kind: Service metadata: name: nginx-service namespace: test-app spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancerSkopiuj i wklej przykłady i zastosuj je pojedynczo, jak pokazano na poniższej ilustracji.
Przestrzeń nazw i jej obciążenia są teraz gotowe do dystrybucji do klastrów członkowskich. Wdrożenie i usługa nie są zaplanowane w klastrze centrum Fleet Manager.
W menu usługi w obszarze Zasoby floty wybierz pozycję Umieszczanie> zasobów+ Utwórz.
Na karcie Podstawowe skonfiguruj następujące opcje:
W sekcji Szczegóły miejsca docelowego wprowadź nazwę miejsca docelowego.
W obszarze Szczegóły zasobu pozostaw pole Zakres jako zakres klastra i wprowadź typ wersji grupy (GVK) i nazwę zasobu do dystrybucji. W tym przykładzie użyj następujących wartości.
group: "" kind: Namespace version: v1 name: test-appW Wybór klastra członkowskiego w polu Typ rozmieszczenia wybierz Wszystkie klastry.
W polu Wdrożenie pozostaw wybraną strategię aktualizacji stopniowej .
Wybierz przycisk Dalej , aby przejrzeć wynikowy
ClusterResourcePlacementmanifest. Manifest można zmodyfikować w razie potrzeby, zweryfikować przy użyciu opcji Weryfikuj (przebieg próbny) lub wybrać pozycję Przejrzyj i utwórz , aby przejść do ostatecznego potwierdzenia.Wybierz pozycję Utwórz , aby natychmiast rozpocząć dystrybucję przestrzeni nazw.
Note
Wdrażanie zasobu rozpoczyna się natychmiast po zastosowaniu rozmieszczenia zasobu za pomocą wybranej strategii
RollingUpdate. Aby dowiedzieć się, jak uzyskać dodatkową kontrolę nad wdrażaniem, zobacz definiowanie strategii wdrażania na potrzeby rozmieszczania zasobów.Strona zostanie odświeżona, a na liście Umieszczanie zasobów zostanie wyświetlona nowo utworzona lokalizacja. Przedstawia liczbę wybranych klastrów oraz informację, czy harmonogramator floty może spełnić politykę rozmieszczania.
Wyświetl stan wdrażania umiejscowienia, wybierając na liście nazwę umiejscowienia. Wybierz poszczególne klastry, aby wyświetlić wdrożenie zasobów w tym klastrze.
W wybranych klastrach Kubernetes znajduje się przestrzeń nazw, wdrożenie i usługa wdrożona i operacyjna.
Usuń umiejscowienie, aby usunąć zasoby
Usunięcie umieszczania zasobów w klastrze centrum Fleet Manager powoduje usunięcie rozproszonych zasobów z wybranych klastrów członkowskich.
kubectl delete clusterresourceplacement distribute-test-app
W menu usługi w obszarze Zasoby floty wybierz pozycję Umieszczanie zasobów.
Na liście rozmieszczeń zasobów wybierz rozmieszczenie, a następnie wybierz opcję Usuń.
W obszarze Usuń sprawdź, czy wybrano prawidłowe rozmieszczenie. Gdy wszystko będzie gotowe, wybierz pozycję Potwierdź usunięcie>.
Strona odświeży się, a umiejscowienie nie będzie już widoczne na liście. Zasoby są usuwane z klastrów członkowskich.
Treści powiązane
Aby dowiedzieć się więcej na temat umieszczania zasobów, zobacz następujące zasoby:
- Wdrażanie zasobów o zakresie przestrzeni nazw w wielu klastrach
- Zrozumienie wyników statusu rozmieszczenia zasobów.
- Inteligentne umieszczanie zasobów platformy Kubernetes między klastrami na podstawie właściwości klastrów członkowskich.
- Zarządzanie eksmisją i zakłóceniami rozmieszczenia zasobów w klastrze.
- Definiowanie strategii wdrażania dla przydziału zasobów klastra.
- Często zadawane pytania dotyczące umieszczania zasobów klastra.
- Dokumentacja rozwiązania KubeFleet ClusterResourcePlacement typu open source.