Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Azure Kubernetes Fleet Manager DNS-belastningsutjämning kan öka tillgängligheten och sprida belastningen över en arbetsbelastning som distribueras över flera medlemskluster. Eftersom den här funktionen levereras via DNS kan den användas för att tillhandahålla skikt 4- och 7-belastningsutjämning efter behov.
Följ stegen i det här dokumentet för att konfigurera DNS-baserad belastningsutjämning för program med flera kluster som finns i din flotta.
Viktigt!
Förhandsversionsfunktionerna i Azure Kubernetes Fleet Manager är tillgängliga via självbetjäning och opt-in. Förhandsversioner tillhandahålls "i befintligt skick" och "i mån av tillgång," och de är undantagna från servicenivåavtal och begränsad garanti. Förhandsversioner av Azure Kubernetes Fleet Manager omfattas delvis av kundsupport på bästa sätt. Dessa funktioner är därmed inte avsedda för produktionsanvändning.
Våra förhandsversioner av dataplanets nätverk släpps via vårt networking.fleet.azure.com/v1beta1 API. Om du inte ser förhandsgranskningsobjekt kontrollerar du att du begär API:et networking.fleet.azure.com/v1beta1 när du interagerar med Fleet Manager-hubbklustret.
Förutsättningar
Om du inte har något Azure-konto skapar du ett kostnadsfritt konto innan du börjar.
Läs den konceptuella översikten över den här funktionen, som innehåller en förklaring av
TrafficManagerProfileochTrafficManagerBackendobjekt som refereras i det här dokumentet.En Kubernetes Fleet Manager med ett hubbkluster och hanterad identitet. Om du inte har någon kan du läsa Skapa en Azure Kubernetes Fleet Manager och ansluta till medlemskluster med hjälp av Azure CLI.
Två medlemskluster
aks-member-1ochaks-member-2till vilka du distribuerar samma arbetsbelastning med hjälp av Fleet Manager-klusterresursplacering (CRP).Användaren som slutför konfigurationen har behörighet att utföra Rolltilldelningar i Azure och få åtkomst till Kubernetes-API:et för Fleet Manager-hubbklustret. Mer information finns i Åtkomst till Kubernetes API för mer information.
En befintlig Azure-resursgrupp som är värd för den etablerade Azure Traffic Manager-resursen.
Ange följande miljövariabler:
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}Hämta autentiseringsuppgifterna för att komma åt Kubernetes-API:et för Fleet Manager-hubbklustret:
az fleet get-credentials \ --resource-group ${GROUP} \ --name ${FLEET}
Konfigurera Fleet Manager-behörigheter
Under förhandsversionen måste du utföra extra steg för att göra det möjligt för Fleet Manager att skapa och hantera Azure Traffic Manager-resurser och hämta offentliga IP-adresser för tjänster som exponeras i medlemskluster.
För att kunna slutföra det här steget måste du skapa din Fleet Manager med hanterad identitet aktiverad. Användaren måste ha behörigheter för Rolltilldelning i Azure RBAC.
Hämta identitetsinformationen för din Fleet Manager-resurs.
az fleet show \ --resource-group ${GROUP} \ --name ${FLEET} \ --query identityDina utdata bör se ut ungefär som exempelutdata:
{ "principalId": "<FLEET-PRINCIPAL-ID>", "tenantId": "<ENTRA-ID-TENANT>", "type": "SystemAssigned", "userAssignedIdentities": null }Tilldela
Azure Kubernetes Fleet Manager Hub Agent-rollen till Fleet Manager-hubbklusteridentiteten, med begränsat omfång till den befintliga resursgruppen där Traffic Manager-resursen har skapats.az role assignment create \ --assignee "<FLEET-PRINCIPAL-ID>" \ --role "de2b316d-7a2c-4143-b4cd-c148f6a355a1" \ --scope ${TRAFFIC_MANAGER_RG_ID}Fleet Manager-hubbklusteridentiteten behöver också ha rollen i den resursgrupp som innehåller tjänstens offentliga IP-adresser som ska exponeras. Detta är nödvändigt eftersom Fleet Manager måste kunna läsa de offentliga IP-adresserna när de läggs till i en
Azure Kubernetes Fleet Manager Hub Agentvia enTrafficMangerBackend.az role assignment create \ --assignee "<FLEET-PRINCIPAL-ID>" \ --role "de2b316d-7a2c-4143-b4cd-c148f6a355a1" \ --scope "/subscriptions/mySubscriptions/resourceGroups/MyPIPResourceGroup"
Distribuera en arbetsbelastning över medlemskluster i Fleet-resursen
Anmärkning
Stegen i den här guiden refererar endast till ett exempelprogram i demonstrationssyfte. Du kan ersätta den här arbetsbelastningen med något av dina egna befintliga distributions- och tjänstobjekt.
De här stegen distribuerar exempelarbetsbelastningen från Fleet Manager-hubbklustret till medlemskluster med hjälp av Fleet Managers klusterresursplacering (CRP). Du kan också välja att distribuera dessa Kubernetes-konfigurationer till varje medlemskluster separat, en i taget.
Skapa ett namnområde i Fleet Manager-hubbklustret.
kubectl create namespace kuard-demoUtdata ser ut ungefär så här:
namespace/kuard-demo createdMellanlagra objekten Deployment, Service, ServiceExport till Fleet Manager-hubbklustret genom att spara följande i en fil med namnet
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"Ställa upp objekten på Fleet Manager-hubbklustret:
kubectl apply -f kuard-export-service.yamlMed
ServiceExportspecifikationen i exemplet kan du exportera en tjänst från medlemskluster till Fleet Manager-hubbklustret. Vi vill dela upp trafiken jämnt mellan de två klustren så att vi anger viktanteckningenServiceExporttill 50. När den har exporterats synkroniseras tjänsten och alla dess slutpunkter till Fleet Manager-hubbklustret och kan sedan användas för att konfigurera DNS-belastningsutjämning över dessa slutpunkter. Utdata ser ut ungefär som i följande exempel:deployment.apps/kuard created service/kuard-svc created serviceexport.networking.fleet.azure.com/kuard-export createdVarje tjänst behöver en unik DNS-etikett så att den kan exponeras via Azure Traffic Manager. Använd en Fleet Manager-klusterresursplacering
ResourceOverrideför att ändra tjänstdefinitionen per medlemskluster för att skapa ett unikt namn baserat på Azure-regionen och klusternamnet. Du måste skapa en åsidosättning per klusterväljare (i vårt exempel per Azure-region).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"}Anmärkning
"${MEMBER-CLUSTER-NAME}" är en reserverad variabel för placering av resurser som ersätts med namnet på medlemsklustret när det körs.
kubectl apply -f ro-kuard-demo-eastus.yamlSkapa följande Fleet Manager klusterresursplacering (CRP) i en fil med namnet
crp-dns-demo.yaml. Observera att vi väljer högst två kluster ieastusregionen: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: eastusTillämpa CRP:
kubectl apply -f crp-dns-demo.yamlOm det lyckas ser utdata ut ungefär så här:
clusterresourceplacement.placement.kubernetes-fleet.io/crp-dns-demo created
Konfigurera DNS-belastningsutjämning med Azure Traffic Manager
TrafficManagerProfileDefiniera för att definiera de parametrar som ska användas av Traffic Manager och spara dem i filenkuard-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: 80Tillämpa konfigurationen:
kubectl apply -f kuard-atm-demo.yamlDefiniera en motsvarande
TrafficManagerBackendsom används för att gruppera exporteradeServiceinlägg från medlemskluster.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: 100Tillämpa konfigurationen:
kubectl apply -f kuard-atm-demo-backend.yamlKontrollera att tjänsten är tillgänglig via Azure Traffic Manager genom att köra följande kommando:
nslookup kuard-atm-demo.trafficmanager.netUtdata bör se ut ungefär som följande exempel:
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.164Använd en webbläsare för att besöka URL:en och se hur Kuard svarar. Prova att rensa DNS och försök igen för att se om begäran hanteras av en annan tjänstinstans från ett annat kluster.
Azure Kubernetes Service