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.
Równoważenie obciążenia DNS usługi Azure Kubernetes Fleet Manager może pomóc w zwiększeniu dostępności i rozproszeniu obciążenia między różne klastry członkowskie. Ponieważ ta funkcja jest dostarczana za pośrednictwem systemu DNS, może służyć do zapewnienia równoważenia obciążenia warstwy 4 i 7 zgodnie z potrzebami.
Wykonaj kroki opisane w tym dokumencie, aby skonfigurować równoważenie obciążenia oparte na systemie DNS dla aplikacji wieloklasowych hostowanych w twojej flocie.
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.
Nasze wersje zapoznawcze dotyczące sieci płaszczyzny danych są udostępniane za pośrednictwem naszego networking.fleet.azure.com/v1beta1 interfejsu API. Jeśli nie widzisz obiektów podglądowych, sprawdź, czy żądasz API networking.fleet.azure.com/v1beta1 podczas interakcji z klastrem centrum zarządzania Fleet Manager.
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
TrafficManagerProfileiTrafficManagerBackend, do których odwołuje się ten dokument.Rozwiązanie Kubernetes Fleet Manager z klastrem centrum i tożsamością zarządzaną. Jeśli go nie masz, zapoznaj się z Utwórz Azure Kubernetes Fleet Manager i dołącz do klastrów członkowskich, używając interfejsu wiersza polecenia platformy Azure.
Dwa klastry
aks-member-1iaks-member-2, na które wdrażasz to samo obciążenie przy użyciu mechanizmu rozmieszczania zasobów klastra (CRP) w Fleet Managerze.Użytkownik wykonujący konfigurację ma uprawnienia do wykonywania przypisań ról platformy Azure i uzyskiwania dostępu do interfejsu API Kubernetes klastra centralnego Fleet Manager. Aby uzyskać więcej informacji, zobacz Access the Kubernetes API (Uzyskiwanie dostępu do interfejsu API platformy Kubernetes ), aby uzyskać więcej informacji.
Istniejąca grupa zasobów platformy Azure, która hostuje aprowizowany zasób usługi Azure Traffic Manager.
Ustaw następujące zmienne środowiskowe:
export SUBSCRIPTION_ID=<subscription> export GROUP=<resource-group> export FLEET=<fleet-name> export MEMBER_CLUSTER_1=aks-member-1 export MEMBER_CLUSTER_2=aks-member-2 export TRAFFIC_MANAGER_GROUP=rg-flt-tm-demo export TRAFFIC_MANAGER_RG_ID="/subscriptions/${SUBSCRIPTION_ID}/resourceGroups/${TRAFFIC_MANAGER_GROUP}Uzyskaj poświadczenia, aby uzyskać dostęp do interfejsu API Kubernetes klastra centralnego usługi Fleet Manager.
az fleet get-credentials \ --resource-group ${GROUP} \ --name ${FLEET}
Konfigurowanie uprawnień programu Fleet Manager
W wersji zapoznawczej należy wykonać dodatkowe kroki, aby umożliwić usłudze Fleet Manager tworzenie zasobów usługi Azure Traffic Manager i zarządzanie nimi oraz uzyskiwanie publicznych adresów IP usług uwidocznionych w klastrach członkowskich.
Aby wykonać ten krok, musisz utworzyć menedżera floty z włączoną tożsamością zarządzaną. Użytkownik musi mieć uprawnienia do przypisywania ról RBAC platformy Azure.
Uzyskaj informacje o tożsamości zasobu Fleet Manager.
az fleet show \ --resource-group ${GROUP} \ --name ${FLEET} \ --query identityDane wyjściowe powinny wyglądać podobnie do przykładowych danych wyjściowych:
{ "principalId": "<FLEET-PRINCIPAL-ID>", "tenantId": "<ENTRA-ID-TENANT>", "type": "SystemAssigned", "userAssignedIdentities": null }Azure Kubernetes Fleet Manager Hub AgentPrzypisz rolę do tożsamości klastra centrum Fleet Manager, ograniczając zakres do istniejącej grupy zasobów, w której jest tworzony zasób usługi Traffic Manager.az role assignment create \ --assignee "<FLEET-PRINCIPAL-ID>" \ --role "de2b316d-7a2c-4143-b4cd-c148f6a355a1" \ --scope ${TRAFFIC_MANAGER_RG_ID}Tożsamość klastra w centrum zarządzania flotą również potrzebuje roli w grupie zasobów zawierającej publiczne adresy IP usługi, które mają być ujawnione, ponieważ usługa Fleet Manager musi odczytywać publiczne adresy IP po dodaniu ich do
Azure Kubernetes Fleet Manager Hub Agentza pośrednictwemTrafficMangerBackend.az role assignment create \ --assignee "<FLEET-PRINCIPAL-ID>" \ --role "de2b316d-7a2c-4143-b4cd-c148f6a355a1" \ --scope "/subscriptions/mySubscriptions/resourceGroups/MyPIPResourceGroup"
Rozmieść obciążenie pośród klastrów członkowskich floty
Uwaga / Notatka
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 pozwalają na wdrożenie przykładowego obciążenia z klastra centrum Fleet Manager do klastrów członkowskich przy użyciu umieszczania zasobów klastra z systemu Fleet Manager (CRP). Alternatywnie możesz wdrożyć te konfiguracje platformy Kubernetes w każdym klastrze członkowskim oddzielnie, pojedynczo.
Utwórz przestrzeń nazw w centralnym klastrze Fleet Manager.
kubectl create namespace kuard-demoDane wyjściowe wyglądają podobnie do następujących:
namespace/kuard-demo createdPrzenieś obiekty Deployment, Service, ServiceExport do głównego klastra Fleet Manager, zapisując następujące dane w pliku o nazwie
kuard-export-service.yaml:apiVersion: apps/v1 kind: Deployment metadata: name: kuard namespace: kuard-demo spec: replicas: 2 selector: matchLabels: app: kuard template: metadata: labels: app: kuard spec: containers: - name: kuard image: gcr.io/kuar-demo/kuard-amd64:blue resources: requests: cpu: 100m memory: 128Mi limits: cpu: 250m memory: 256Mi --- apiVersion: v1 kind: Service metadata: name: kuard-svc namespace: kuard-demo labels: app: kuard spec: selector: app: kuard ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer --- apiVersion: networking.fleet.azure.com/v1alpha1 kind: ServiceExport metadata: name: kuard-export namespace: kuard-demo annotations: networking.fleet.azure.com/weight: "50"Umieść obiekty w centralnym hub-klastrze Fleet Manager.
kubectl apply -f kuard-export-service.yamlSpecyfikacja
ServiceExportw przykładzie umożliwia eksportowanie usługi z klastrów członkowskich do klastra centrum Fleet Manager. Chcemy równomiernie podzielić ruch między dwa klastry, dlatego ustawiliśmy adnotacjęServiceExportwagi na 50. Po pomyślnym wyeksportowaniu usługa i wszystkie jej punkty końcowe są synchronizowane z klastrem centrum Fleet Manager, a następnie mogą służyć do konfigurowania równoważenia obciążenia DNS w tych punktach końcowych. Dane wyjściowe wyglądają podobnie do następującego przykładu:deployment.apps/kuard created service/kuard-svc created serviceexport.networking.fleet.azure.com/kuard-export createdKażda usługa wymaga unikatowej etykiety DNS, aby można ją było uwidocznić za pośrednictwem usługi Azure Traffic Manager. Umieszczanie zasobów klastra Fleet Manager
ResourceOverridepozwala zmodyfikować definicje usług dla każdego klastra członkowskiego, aby stworzyć unikatową nazwę na podstawie regionu Azure i nazwy klastra. Musisz utworzyć nadpisanie dla selektora klastra (w naszym przykładzie na region Azure).apiVersion: placement.kubernetes-fleet.io/v1alpha1 kind: ResourceOverride metadata: name: ro-kuard-demo-eastus namespace: kuard-demo spec: placement: name: crp-kuard-demo resourceSelectors: - group: "" kind: Service version: v1 name: kuard-svc policy: overrideRules: - clusterSelector: clusterSelectorTerms: - labelSelector: matchLabels: fleet.azure.com/location: eastus jsonPatchOverrides: - op: add path: /metadata/annotations value: {"service.beta.kubernetes.io/azure-dns-label-name":"fleet-${MEMBER-CLUSTER-NAME}-eastus"}Uwaga / Notatka
"${MEMBER-CLUSTER-NAME}" to zarezerwowana zmienna zastępująca rozmieszczenie zasobów, która jest zastępowana nazwą klastra członkowskiego w czasie wykonywania.
kubectl apply -f ro-kuard-demo-eastus.yamlUtwórz następujący umiejscowienie zasobu klastra (CRP) w oprogramowaniu Fleet Manager w pliku o nazwie
crp-dns-demo.yaml. Zwróć uwagę, że wybieramy maksymalnie dwa klastry weastusregionie:apiVersion: placement.kubernetes-fleet.io/v1 kind: ClusterResourcePlacement metadata: name: crp-dns-demo spec: resourceSelectors: - group: "" version: v1 kind: Namespace name: kuard-demo policy: placementType: PickN numberOfClusters: 2 affinity: clusterAffinity: requiredDuringSchedulingIgnoredDuringExecution: clusterSelectorTerms: - labelSelector: matchLabels: fleet.azure.com/location: eastusZastosuj zasady CRP:
kubectl apply -f crp-dns-demo.yamlW przypadku powodzenia dane wyjściowe wyglądają podobnie do następujących:
clusterresourceplacement.placement.kubernetes-fleet.io/crp-dns-demo created
Konfigurowanie równoważenia obciążenia DNS za pomocą usługi Azure Traffic Manager
Zdefiniuj element
TrafficManagerProfile, aby zdefiniować parametry, które mają być używane przez usługę Traffic Manager, i zapisz je w plikukuard-atm-demo.yaml.apiVersion: networking.fleet.azure.com/v1beta1 kind: TrafficManagerProfile metadata: name: kuard-atm-demo namespace: kuard-demo spec: resourceGroup: "rg-flt-tm-demo" monitorConfig: port: 80Zastosuj konfigurację:
kubectl apply -f kuard-atm-demo.yamlZdefiniuj odpowiedni element
TrafficManagerBackendużywany do grupowania wyeksportowanychServicewpisów z klastrów członkowskich.apiVersion: networking.fleet.azure.com/v1beta1 kind: TrafficManagerBackend metadata: name: kuard-atm-demo-backend namespace: kuard-demo spec: profile: name: "kuard-atm-demo" backend: name: "kuard-svc" weight: 100Zastosuj konfigurację:
kubectl apply -f kuard-atm-demo-backend.yamlSprawdź, czy usługa jest dostępna za pośrednictwem usługi Azure Traffic Manager, uruchamiając następujące polecenie:
nslookup kuard-atm-demo.trafficmanager.netDane wyjściowe powinny wyglądać mniej więcej tak jak w tym przykładzie:
Server: 10.X.X.254 Address: 10.X.X.254#53 Non-authoritative answer: Name: kuard-atm-demo.trafficmanger.net Address: 123.X.X.16 Name: kuard-atm-demo.trafficmanger.net Address: 74.X.X.78 Name: kuard-atm-demo.trafficmanger.net Address: 173.X.X.164Użyj przeglądarki internetowej, aby przejść pod adres URL i zobaczyć, jak reaguje Kuard. Spróbuj opróżnić usługę DNS i ponowić próbę, aby sprawdzić, czy żądanie jest obsługiwane przez inne wystąpienie usługi z innego klastra.