Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W przypadku aplikacji wdrożonych w wielu klastrach administratorzy często chcą kierować ruch przychodzący do nich między klastrami.
Możesz postępować zgodnie z tym dokumentem, aby skonfigurować równoważenie obciążenia warstwy 4 dla takich aplikacji wieloklastrowych.
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 tej funkcji, które zawiera wyjaśnienie obiektów
ServiceExportiMultiClusterService, do których odwołuje się ten dokument.Musisz mieć zasób Fleet z klastrem głównym oraz klastrami członkowskimi. Jeśli nie masz tego zasobu, postępuj zgodnie z przewodnikiem Szybki start: tworzenie zasobu floty i dołączanie do klastrów członkowskich.
Docelowe klastry usługi Azure Kubernetes Service (AKS), w których wdrażane obciążenia muszą być obecne w tej samej sieci wirtualnej lub w równorzędnych sieciach wirtualnych.
- Te docelowe klastry muszą zostać dodane jako klastry członkowskie do zasobu floty.
- Te klastry docelowe powinny używać sieci azure CNI (Container Networking Interface).
Aby uzyskać dostęp do interfejsu API Kubernetes klastra koncentratora, wykonaj kroki opisane w temacie Access Fleet hub cluster Kubernetes API.
Ustaw następujące zmienne środowiskowe i uzyskaj konfiguracje kubeconfig dla floty i wszystkich klastrów członkowskich:
export GROUP=<resource-group> export FLEET=<fleet-name> export MEMBER_CLUSTER_1=aks-member-1 export MEMBER_CLUSTER_2=aks-member-2 az fleet get-credentials --resource-group ${GROUP} --name ${FLEET} --file fleet az aks get-credentials --resource-group ${GROUP} --name ${MEMBER_CLUSTER_1} --file aks-member-1 az aks get-credentials --resource-group ${GROUP} --name ${MEMBER_CLUSTER_2} --file aks-member-2
Użyj powłoki Bash w środowisku Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Rozpoczynanie pracy z usługą Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj interfejs wiersza polecenia platformy Azure. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie interfejsu wiersza polecenia platformy Azure w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić interfejs wiersza polecenia platformy Azure w kontenerze platformy Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do interfejsu wiersza polecenia platformy Azure za pomocą polecenia az login. Aby ukończyć proces uwierzytelniania, wykonaj kroki wyświetlane w terminalu. Aby uzyskać inne opcje logowania, zobacz Uwierzytelnianie na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
Po wyświetleniu monitu zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Używanie rozszerzeń i zarządzanie nimi za pomocą interfejsu wiersza polecenia platformy Azure.
Uruchom polecenie az version, aby znaleźć zainstalowane wersje i biblioteki zależne. Aby uaktualnić do najnowszej wersji, uruchom polecenie az upgrade.
Rozmieść obciążenie pośród klastrów członkowskich floty
Uwaga
Kroki opisane w tym przewodniku z instrukcjami dotyczą tylko przykładowej aplikacji do celów demonstracyjnych. Można zastąpić to obciążenie dowolnymi z własnych istniejących obiektów wdrożenia i usługi.
Te kroki umożliwiają wdrożenie przykładowego obciążenia z klastra Fleet do klastrów członkowskich przy użyciu propagacji konfiguracji platformy Kubernetes. Alternatywnie możesz wdrożyć te konfiguracje platformy Kubernetes w każdym klastrze członkowskim oddzielnie, pojedynczo.
Utwórz przestrzeń nazw w klastrze floty:
KUBECONFIG=fleet kubectl create namespace kuard-demoDane wyjściowe wyglądają podobnie do następującego przykładu:
namespace/kuard-demo createdZastosuj obiekty Deployment, Service, ServiceExport:
KUBECONFIG=fleet kubectl apply -f https://raw.githubusercontent.com/Azure/AKS/master/examples/fleet/kuard/kuard-export-service.yamlSpecyfikacja
ServiceExportw powyższym pliku umożliwia eksportowanie usługi z klastrów członkowskich do zasobu Fleet. Po pomyślnym wyeksportowaniu usługa i wszystkie jej punkty końcowe są synchronizowane z klastrem floty, a następnie mogą służyć do konfigurowania równoważenia obciążenia wielu klastrów w tych punktach końcowych. Dane wyjściowe wyglądają podobnie do następującego przykładu:deployment.apps/kuard created service/kuard created serviceexport.networking.fleet.azure.com/kuard createdUtwórz następujący kod
ClusterResourcePlacementw pliku o nazwiecrp-2.yaml. Zwróć uwagę, że wybieramy klastry weastusregionie:apiVersion: placement.kubernetes-fleet.io/v1 kind: ClusterResourcePlacement metadata: name: kuard-demo spec: resourceSelectors: - group: "" version: v1 kind: Namespace name: kuard-demo policy: affinity: clusterAffinity: requiredDuringSchedulingIgnoredDuringExecution: clusterSelectorTerms: - labelSelector: matchLabels: fleet.azure.com/location: eastusZastosuj element
ClusterResourcePlacement:KUBECONFIG=fleet kubectl apply -f crp-2.yamlW przypadku powodzenia dane wyjściowe wyglądają podobnie do następującego przykładu:
clusterresourceplacement.placement.kubernetes-fleet.io/kuard-demo createdSprawdź stan elementu
ClusterResourcePlacement:KUBECONFIG=fleet kubectl get clusterresourceplacementsW przypadku powodzenia dane wyjściowe wyglądają podobnie do następującego przykładu:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE kuard-demo 1 True 1 True 1 20s
Tworzenie usługi MultiClusterService w celu równoważenia obciążenia między punktami końcowymi usługi w wielu klastrach członkowskich
Sprawdź, czy usługa została pomyślnie wyeksportowana dla klastrów członkowskich w
eastusregionie:KUBECONFIG=aks-member-1 kubectl get serviceexport kuard --namespace kuard-demoDane wyjściowe wyglądają podobnie do następującego przykładu:
NAME IS-VALID IS-CONFLICTED AGE kuard True False 25sKUBECONFIG=aks-member-2 kubectl get serviceexport kuard --namespace kuard-demoDane wyjściowe wyglądają podobnie do następującego przykładu:
NAME IS-VALID IS-CONFLICTED AGE kuard True False 55sPowinieneś zobaczyć, że usługa jest odpowiednia do eksportu (
IS-VALIDpole jesttrue) i nie ma konfliktów z innymi eksportami (IS-CONFLICTjestfalse).Uwaga
Propagacja elementu ServiceExport może potrwać minutę lub dwie.
Utwórz
MultiClusterServicena jednym elemencie członkowskim, aby równoważyć obciążenie między punktami końcowymi usługi w tych klastrach:KUBECONFIG=aks-member-1 kubectl apply -f https://raw.githubusercontent.com/Azure/AKS/master/examples/fleet/kuard/kuard-mcs.yamlUwaga
Aby uwidocznić usługę za pośrednictwem wewnętrznego adresu IP zamiast publicznego, dodaj adnotację do funkcji MultiClusterService:
apiVersion: networking.fleet.azure.com/v1alpha1 kind: MultiClusterService metadata: name: kuard namespace: kuard-demo annotations: networking.fleet.azure.com/azure-load-balancer-internal: "true" ...Dane wyjściowe wyglądają podobnie do następującego przykładu:
multiclusterservice.networking.fleet.azure.com/kuard createdSprawdź, czy funkcja MultiClusterService jest prawidłowa, uruchamiając następujące polecenie:
KUBECONFIG=aks-member-1 kubectl get multiclusterservice kuard --namespace kuard-demoDane wyjściowe powinny wyglądać mniej więcej tak jak w tym przykładzie:
NAME SERVICE-IMPORT EXTERNAL-IP IS-VALID AGE kuard kuard <a.b.c.d> True 40sPole
IS-VALIDpowinno byćtruew danych wyjściowych. Sprawdź zewnętrzny adres IP modułu równoważenia obciążenia (EXTERNAL-IP) w danych wyjściowych. Zanim import zostanie w pełni przetworzony, może upłynąć trochę czasu, a adres IP stanie się dostępny.Uruchom następujące polecenie wiele razy przy użyciu zewnętrznego adresu IP modułu równoważenia obciążenia:
curl <a.b.c.d>:8080 | grep addrsZwróć uwagę, że adresy IP zasobników obsługujących żądanie zmieniają się i że te zasobniki pochodzą z klastrów
aks-member-1członkowskich iaks-member-2zeastusregionu. Adresy IP zasobników możesz zweryfikować, uruchamiając następujące polecenia w klastrach z regionueastus:KUBECONFIG=aks-member-1 kubectl get pods -n kuard-demo -o wideKUBECONFIG=aks-member-2 kubectl get pods -n kuard-demo -o wide