Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Voor toepassingen die in meerdere clusters zijn geïmplementeerd, willen beheerders vaak binnenkomend verkeer naar deze clusters routeren.
U kunt dit document volgen om laag 4-taakverdeling in te stellen voor dergelijke toepassingen met meerdere clusters.
Belangrijk
Preview-functies van Azure Kubernetes Fleet Manager zijn beschikbaar op basis van selfservice, opt-in. Previews worden geleverd 'zoals het is' en 'voor zover beschikbaar' en zijn uitgesloten van de serviceovereenkomsten en beperkte garantie. Previews van Azure Kubernetes Fleet Manager worden gedeeltelijk gedekt door klantondersteuning op basis van best effort. Zodoende zijn deze functies niet bedoeld voor productiegebruik.
Vereiste voorwaarden
Als u geen Azure-account hebt, maak dan een gratis account aan voordat u begint.
Lees het conceptuele overzicht van deze functie, met een uitleg van
ServiceExport
enMultiClusterService
objecten waarnaar in dit document wordt verwezen.U dient te beschikken over een Fleet-resource met een hubcluster en lidclusters. Als u deze resource niet hebt, volg Quickstart: Een Fleet-resource maken en lidclusters koppelen.
De AKS-doelclusters (Azure Kubernetes Service) waarop de workloads worden geïmplementeerd, moeten aanwezig zijn in hetzelfde virtuele netwerk of in gekoppelde virtuele netwerken.
- Deze doelclusters moeten worden toegevoegd als lidclusters aan de Fleet-resource.
- Deze doelclusters moeten gebruikmaken van Azure CNI-netwerken (Container Networking Interface).
U moet toegang krijgen tot de Kubernetes-API van het hubcluster door de stappen in de Kubernetes-API van het Access Fleet-hubcluster te volgen.
Stel de volgende omgevingsvariabelen in en haal de kubeconfigs op voor de vloot en alle lidclusters:
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
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Aan de slag met Azure Cloud Shell voor meer informatie.
Als je de voorkeur geeft aan het lokaal uitvoeren van CLI-referentiecommando's, installeer dan de Azure CLI. Als je op Windows of macOS werkt, overweeg dan om Azure CLI in een Docker-container te draaien. Voor meer informatie, zie Hoe u de Azure CLI in een Docker-container kunt uitvoeren.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met de opdracht az login. Om het authenticatieproces te voltooien, volgt u de stappen die op uw terminal worden weergegeven. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Wanneer u daarom wordt gevraagd, installeer de Azure CLI-extensie bij het eerste gebruik. Zie Extensies gebruiken en beheren met de Azure CLIvoor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en de afhankelijke bibliotheken te vinden. Voer az upgrade uit om naar de nieuwste versie te upgraden.
Een workload implementeren in lidclusters van de Fleet-resource
Opmerking
De stappen in deze handleiding verwijzen alleen naar een voorbeeldtoepassing voor demonstratiedoeleinden. U kunt deze workload vervangen door een van uw eigen bestaande implementatie- en serviceobjecten.
Met deze stappen implementeert u de voorbeeldworkload van het Fleet-cluster naar lidclusters met behulp van kubernetes-configuratiedoorgifte. U kunt er ook voor kiezen om deze Kubernetes-configuraties afzonderlijk te implementeren in elk lidcluster, één voor één.
Maak een naamruimte in het vlootcluster:
KUBECONFIG=fleet kubectl create namespace kuard-demo
Uitvoer ziet er ongeveer uit als in het volgende voorbeeld:
namespace/kuard-demo created
Pas toe op de objecten Deployment, Service, ServiceExport:
KUBECONFIG=fleet kubectl apply -f https://raw.githubusercontent.com/Azure/AKS/master/examples/fleet/kuard/kuard-export-service.yaml
Met de
ServiceExport
specificatie in het bovenstaande bestand kunt u een service exporteren van lidclusters naar de Fleet-resource. Zodra het exporteren is voltooid, worden de service en alle eindpunten gesynchroniseerd met het vlootcluster en kunnen ze vervolgens worden gebruikt om taakverdeling voor meerdere clusters in te stellen voor deze eindpunten. De uitvoer ziet er ongeveer als volgt uit:deployment.apps/kuard created service/kuard created serviceexport.networking.fleet.azure.com/kuard created
Maak het volgende
ClusterResourcePlacement
in een bestand met de naamcrp-2.yaml
. U ziet dat we clusters in deeastus
regio selecteren: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
Pas het
ClusterResourcePlacement
volgende toe:KUBECONFIG=fleet kubectl apply -f crp-2.yaml
Als dit lukt, ziet de uitvoer er ongeveer als volgt uit:
clusterresourceplacement.placement.kubernetes-fleet.io/kuard-demo created
Controleer de status van het
ClusterResourcePlacement
.KUBECONFIG=fleet kubectl get clusterresourceplacements
Als dit lukt, ziet de uitvoer er ongeveer als volgt uit:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE kuard-demo 1 True 1 True 1 20s
MultiClusterService maken om de taakverdeling te verdelen over de service-eindpunten in meerdere lidclusters
Controleer of de service is geëxporteerd voor de lidclusters in
eastus
de regio:KUBECONFIG=aks-member-1 kubectl get serviceexport kuard --namespace kuard-demo
Uitvoer ziet er ongeveer uit als in het volgende voorbeeld:
NAME IS-VALID IS-CONFLICTED AGE kuard True False 25s
KUBECONFIG=aks-member-2 kubectl get serviceexport kuard --namespace kuard-demo
De uitvoer ziet er ongeveer zo uit als het volgende voorbeeld:
NAME IS-VALID IS-CONFLICTED AGE kuard True False 55s
U ziet dat de service geldig is voor export (
IS-VALID
veld istrue
) en geen conflicten heeft met andere exports (IS-CONFLICT
isfalse
).Opmerking
Het kan een minuut of twee duren voordat de ServiceExport is doorgegeven.
Maak
MultiClusterService
op één lid om het laden te verdelen over de service-eindpunten in deze clusters.KUBECONFIG=aks-member-1 kubectl apply -f https://raw.githubusercontent.com/Azure/AKS/master/examples/fleet/kuard/kuard-mcs.yaml
Opmerking
Als u de service beschikbaar wilt maken via het interne IP-adres in plaats van een openbare, voegt u de aantekening toe aan de 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" ...
Uitvoer ziet er ongeveer zo uit als het volgende voorbeeld:
multiclusterservice.networking.fleet.azure.com/kuard created
Controleer of de MultiClusterService geldig is door de volgende opdracht uit te voeren:
KUBECONFIG=aks-member-1 kubectl get multiclusterservice kuard --namespace kuard-demo
De uitvoer moet er als in het volgende voorbeeld uitzien:
NAME SERVICE-IMPORT EXTERNAL-IP IS-VALID AGE kuard kuard <a.b.c.d> True 40s
Het
IS-VALID
veld moet in de uitvoer staantrue
. Bekijk het IP-adres van de externe load balancer (EXTERNAL-IP
) in de uitvoer. Het kan even duren voordat het importeren volledig wordt verwerkt en het IP-adres beschikbaar is.Voer de volgende opdracht meerdere keren uit met behulp van het IP-adres van de externe load balancer:
curl <a.b.c.d>:8080 | grep addrs
U ziet dat de IP-adressen van de pods die de aanvraag verwerken, worden gewijzigd en dat deze pods afkomstig zijn van lidclusters
aks-member-1
enaks-member-2
van deeastus
regio. U kunt de IP-adressen van pods controleren door de volgende opdrachten uit te voeren op de clusters vanuiteastus
de regio: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