Anteckning
Å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.
För program som distribueras över flera kluster vill administratörer ofta dirigera inkommande trafik till dem mellan kluster.
Du kan följa det här dokumentet för att konfigurera lager 4-belastningsutjämning för sådana program med flera kluster.
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.
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
ServiceExport
ochMultiClusterService
objekt som refereras i det här dokumentet.Du måste ha en fleet-resurs med ett hubbkluster och medlemskluster. Om du inte har den här resursen följer du Snabbstart: Skapa en fleet-resurs och anslut medlemskluster.
Målkluster för Azure Kubernetes Service (AKS) som arbetsbelastningarna distribueras på måste finnas i antingen samma virtuella nätverk eller i peerkopplade virtuella nätverk.
- Dessa målkluster måste läggas till som medlemskluster i Fleet-resursen.
- Dessa målkluster bör använda Azure CNI-nätverk (Container Networking Interface).
Du måste få åtkomst till Kubernetes-API:et för hubbklustret genom att följa stegen i Kubernetes-API:et för Access Fleet Hub-klustret.
Ange följande miljövariabler och hämta kubeconfigs för flottan och alla medlemskluster:
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
Använd Bash-miljön i Azure Cloud Shell. Mer information finns i Kom igång med Azure Cloud Shell.
Om du föredrar att köra CLI-referenskommandon lokalt installerar du Azure CLI. Om du kör på Windows eller macOS, överväg att köra Azure CLI i en Docker-container. För mer information, se Hur man kör Azure CLI i en Docker-container.
Om du använder en lokal installation loggar du in på Azure CLI med hjälp av kommandot az login. För att slutföra autentiseringsprocessen, följ stegen som visas i din terminal. Andra inloggningsalternativ finns i Autentisera till Azure med Azure CLI.
När du blir uppmanad, installera Azure CLI-tillägget vid första användning. Mer information om tillägg finns i Använda och hantera tillägg med Azure CLI.
Kör az version för att ta reda på versionen och de beroende bibliotek som är installerade. Om du vill uppgradera till den senaste versionen kör du az upgrade.
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-klustret till medlemskluster med kubernetes-konfigurationsspridning. Du kan också välja att distribuera dessa Kubernetes-konfigurationer till varje medlemskluster separat, en i taget.
Skapa ett namnområde i vagnparksklustret:
KUBECONFIG=fleet kubectl create namespace kuard-demo
Utdata ser ut ungefär som i följande exempel:
namespace/kuard-demo created
Använd objekten Deployment, Service, ServiceExport:
KUBECONFIG=fleet kubectl apply -f https://raw.githubusercontent.com/Azure/AKS/master/examples/fleet/kuard/kuard-export-service.yaml
Med
ServiceExport
specifikationen i filen ovan kan du exportera en tjänst från medlemskluster till Fleet-resursen. När den har exporterats synkroniseras tjänsten och alla dess slutpunkter till vagnparksklustret och kan sedan användas för att konfigurera belastningsutjämning för flera kluster mellan dessa slutpunkter. Utdata ser ut ungefär som i följande exempel:deployment.apps/kuard created service/kuard created serviceexport.networking.fleet.azure.com/kuard created
Skapa följande
ClusterResourcePlacement
i en fil med namnetcrp-2.yaml
. Observera att vi väljer kluster ieastus
regionen: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: eastus
Använd
ClusterResourcePlacement
:KUBECONFIG=fleet kubectl apply -f crp-2.yaml
Om det lyckas ser utdata ut ungefär som i följande exempel:
clusterresourceplacement.placement.kubernetes-fleet.io/kuard-demo created
Kontrollera statusen för
ClusterResourcePlacement
:KUBECONFIG=fleet kubectl get clusterresourceplacements
Om det lyckas ser utdata ut ungefär som i följande exempel:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE kuard-demo 1 True 1 True 1 20s
Skapa MultiClusterService för belastningsutjämning över tjänstslutpunkterna i flera medlemskluster
Kontrollera om tjänsten har exporterats för medlemskluster i
eastus
regionen:KUBECONFIG=aks-member-1 kubectl get serviceexport kuard --namespace kuard-demo
Utdata ser ut ungefär som i följande exempel:
NAME IS-VALID IS-CONFLICTED AGE kuard True False 25s
KUBECONFIG=aks-member-2 kubectl get serviceexport kuard --namespace kuard-demo
Utdata ser ut ungefär som i följande exempel:
NAME IS-VALID IS-CONFLICTED AGE kuard True False 55s
Du bör se att tjänsten är giltig för export (
IS-VALID
fältet ärtrue
) och inte har några konflikter med andra exporter (IS-CONFLICT
ärfalse
).Anmärkning
Det kan ta en minut eller två innan ServiceExport sprids.
Skapa
MultiClusterService
på en medlem för att balansera lasten över tjänstslutpunkterna i dessa kluster:KUBECONFIG=aks-member-1 kubectl apply -f https://raw.githubusercontent.com/Azure/AKS/master/examples/fleet/kuard/kuard-mcs.yaml
Anmärkning
Om du vill exponera tjänsten via den interna IP-adressen i stället för en offentlig lägger du till kommentaren i MultiClusterService:
apiVersion: networking.fleet.azure.com/v1alpha1 kind: MultiClusterService metadata: name: kuard namespace: kuard-demo annotations: service.beta.kubernetes.io/azure-load-balancer-internal: "true" ...
Utdata ser ut ungefär som i följande exempel:
multiclusterservice.networking.fleet.azure.com/kuard created
Kontrollera att MultiClusterService är giltigt genom att köra följande kommando:
KUBECONFIG=aks-member-1 kubectl get multiclusterservice kuard --namespace kuard-demo
Utdata bör se ut ungefär som följande exempel:
NAME SERVICE-IMPORT EXTERNAL-IP IS-VALID AGE kuard kuard <a.b.c.d> True 40s
Fältet
IS-VALID
bör varatrue
i utdata. Kolla in ip-adressen för den externa lastbalanseraren (EXTERNAL-IP
) i utdata. Det kan ta en stund innan importen bearbetas fullständigt och IP-adressen blir tillgänglig.Kör följande kommando flera gånger med ip-adressen för den externa lastbalanseraren:
curl <a.b.c.d>:8080 | grep addrs
Observera att IP-adresserna för poddarna som betjänar begäran ändras och att dessa poddar kommer från medlemskluster
aks-member-1
ochaks-member-2
fråneastus
regionen. Du kan verifiera podd-IP-adresserna genom att köra följande kommandon i klustren fråneastus
regionen:KUBECONFIG=aks-member-1 kubectl get pods -n kuard-demo -o wide
KUBECONFIG=aks-member-2 kubectl get pods -n kuard-demo -o wide
Azure Kubernetes Service