Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vyrovnávání zatížení DNS pro Azure Kubernetes Fleet Manager může pomoct zvýšit dostupnost a rozložit zatížení mezi úlohy nasazené v několika členských clusterech. Vzhledem k tomu, že se tato funkce doručuje přes DNS, je možné ji použít k zajištění vyrovnávání zatížení vrstvy 4 a 7 podle potřeby.
Postupujte podle kroků v tomto dokumentu a nastavte vyrovnávání zatížení založeného na DNS pro aplikace s více clustery hostovanými ve vašem vozovém parku.
Důležité
Funkce Azure Kubernetes Fleet Manageru ve verzi Preview jsou dostupné na samoobslužné bázi s výslovným souhlasem. Ukázky jsou poskytovány "jak jsou" a "podle aktuální dostupnosti" a jsou vyloučené ze smluv o úrovni služeb a omezené záruky. Verze Preview Azure Kubernetes Fleet Manageru jsou částečně pokryty zákaznickou podporou s vynaložením maximálního úsilí. Proto tyto funkce nejsou určené pro produkční použití.
Předběžné verze síťových funkcí datové roviny jsou vydávány prostřednictvím našeho networking.fleet.azure.com/v1beta1 rozhraní API. Pokud nevidíte náhledové objekty, zkontrolujte, že při interakci s klastrem centrály Fleet Manager požadujete rozhraní networking.fleet.azure.com/v1beta1 API.
Požadavky
Pokud nemáte účet Azure, vytvořte si bezplatný účet před tím, než začnete.
Přečtěte si koncepční přehled této funkce, který vysvětluje
TrafficManagerProfileaTrafficManagerBackendodkazované objekty v tomto dokumentu.Správce Kubernetes flotily s centrálním clusterem a spravovanou identitou. Pokud ho nemáte, přečtěte si téma Vytvoření Správce flotily Azure Kubernetes a připojení k členským clusterům pomocí Azure CLI.
Dva členské clustery
aks-member-1aaks-member-2, do nichž nasadíte stejnou úlohu za použití funkce umístění prostředků clusterů (CRP) Fleet Manageru.Uživatel, který konfiguraci dokončí, má oprávnění k provádění přiřazení rolí Azure a přístupu k rozhraní Kubernetes API clusteru Centra Fleet Manageru. Další informace najdete v tématu Přístup k rozhraní KUBERNEtes API , kde najdete další podrobnosti.
Existující skupina prostředků Azure, která hostuje zřízený prostředek Azure Traffic Manageru.
Nastavte následující proměnné prostředí:
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}Získejte přihlašovací údaje pro přístup k rozhraní Kubernetes API clusteru Centra Fleet Manageru:
az fleet get-credentials \ --resource-group ${GROUP} \ --name ${FLEET}
Konfigurace oprávnění Správce flotily
Během období Preview je potřeba provést další kroky, které umožní Správci flotily vytvářet a spravovat prostředky Azure Traffic Manageru a získávat veřejné IP adresy služeb vystavených na členských clusterech.
Abyste mohli tento krok dokončit, musíte vytvořit Správce flotily s povolenou spravovanou identitou. Uživatel musí mít oprávnění k přiřazení role Azure RBAC.
Získejte identifikační údaje o vašem prostředku pro správu flotily.
az fleet show \ --resource-group ${GROUP} \ --name ${FLEET} \ --query identityVýstup by měl vypadat podobně jako v příkladu výstupu:
{ "principalId": "<FLEET-PRINCIPAL-ID>", "tenantId": "<ENTRA-ID-TENANT>", "type": "SystemAssigned", "userAssignedIdentities": null }Přiřaďte roli
Azure Kubernetes Fleet Manager Hub Agentidentitě clusteru centra Fleet Manager a omezte rozsah na existující skupinu prostředků, kde je prostředek Traffic Manageru vytvořen.az role assignment create \ --assignee "<FLEET-PRINCIPAL-ID>" \ --role "de2b316d-7a2c-4143-b4cd-c148f6a355a1" \ --scope ${TRAFFIC_MANAGER_RG_ID}Identita clusteru Centra Fleet Manageru také potřebuje
Azure Kubernetes Fleet Manager Hub Agentroli ve skupině prostředků, která obsahuje veřejné IP adresy služby určené ke zveřejnění, protože Fleet Manager potřebuje číst veřejné IP adresy, když jsou přidány doTrafficMangerBackendprostřednictvímServiceExport.az role assignment create \ --assignee "<FLEET-PRINCIPAL-ID>" \ --role "de2b316d-7a2c-4143-b4cd-c148f6a355a1" \ --scope "/subscriptions/mySubscriptions/resourceGroups/MyPIPResourceGroup"
Nasazení úlohy napříč členskými clustery prostředku Fleet
Poznámka:
Kroky v tomto návodu odkazují pouze na ukázkovou aplikaci pro demonstrační účely. Tuto pracovní zátěž můžete nahradit libovolnými vlastními existujícími objekty nasazení a služby.
Tyto kroky nasadí ukázkovou úlohu z clusteru centra Fleet Manager do členských clusterů pomocí umístění prostředků clusteru Fleet Manageru (CRP). Alternativně se můžete rozhodnout nasadit tyto konfigurace Kubernetes do jednotlivých členských clusterů zvlášť po jednom.
Vytvořte namespace v clusteru hubu Fleet Manager.
kubectl create namespace kuard-demoVýstup vypadá nějak takto:
namespace/kuard-demo createdPřipravte objekty Deployment, Service, ServiceExport do clusteru centra Fleet Manager uložením následujícího příkazu do souboru s názvem
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"Uspořádejte objekty na clusteru hubu Fleet Manageru:
kubectl apply -f kuard-export-service.yamlSpecifikace
ServiceExportv ukázce umožňuje exportovat službu z členských clusterů do clusteru centra Fleet Manager. Chceme rozdělit provoz rovnoměrně mezi oba clustery, tak abychom nastavili váhovou anotaciServiceExportna 50. Po úspěšném exportu se služba a všechny její koncové body synchronizují do clusteru centra Fleet Manager a pak se dají použít k nastavení vyrovnávání zatížení DNS napříč těmito koncovými body. Výstup vypadá podobně jako v následujícím příkladu:deployment.apps/kuard created service/kuard-svc created serviceexport.networking.fleet.azure.com/kuard-export createdKaždá služba potřebuje jedinečný popisek DNS, aby ho bylo možné zpřístupnit prostřednictvím Azure Traffic Manageru. Pomocí umístění
ResourceOverrideprostředků clusteru Fleet Manager můžete upravit definici služby pro jednotlivé členské clustery a vytvořit jedinečný název založený na oblasti Azure a názvu clusteru. Potřebujete vytvořit přepis pro výběr clusteru, v našem příkladu, podle oblasti 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"}Poznámka:
"${MEMBER-CLUSTER-NAME} je přepsání umístění prostředku pomocí rezervované proměnné, která je nahrazena názvem člena clusteru během spouštění."
kubectl apply -f ro-kuard-demo-eastus.yamlVytvořte následující umístění prostředků clusteru Fleet Manager (CRP) v souboru s názvem
crp-dns-demo.yaml. Všimněte si, že v oblasti vybíráme maximálně dva clusteryeastus: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: eastusPoužijte CRP:
kubectl apply -f crp-dns-demo.yamlPokud bude úspěšný, výstup bude vypadat nějak takto:
clusterresourceplacement.placement.kubernetes-fleet.io/crp-dns-demo created
Konfigurace vyrovnávání zatížení DNS pomocí Azure Traffic Manageru
TrafficManagerProfileDefinujte parametry, které má Traffic Manager používat, a uložte ho do souborukuard-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: 80Použijte konfiguraci:
kubectl apply -f kuard-atm-demo.yamlDefinujte odpovídající prvek
TrafficManagerBackend, který slouží k seskupení exportovaných položekServicez členských klastrů.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: 100Použijte konfiguraci:
kubectl apply -f kuard-atm-demo-backend.yamlSpuštěním následujícího příkazu ověřte, že je služba dostupná přes Azure Traffic Manager:
nslookup kuard-atm-demo.trafficmanager.netVýstup by měl vypadat zhruba jako v tomto příkladu:
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.164Pomocí webového prohlížeče navštivte adresu URL a podívejte se, jak Kuard reaguje. Zkuste vyprázdnit DNS a zkusit znovu zjistit, jestli požadavek obsluhuje jiná instance služby z jiného clusteru.
Azure Kubernetes Service