Dela via


Konfigurera 4-belastningsutjämning för flera kluster i Azure Kubernetes Fleet Manager-medlemskluster (förhandsversion)

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 "som är" och "som tillgängliga", och de undantas från serviceavtalen och den begränsade garantin. Förhandsversioner av Azure Kubernetes Fleet Manager omfattas delvis av kundsupport på bästa sätt. Därför är dessa funktioner inte avsedda för produktionsanvändning.

Förutsättningar

Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.

Distribuera en arbetsbelastning mellan medlemskluster i fleet-resursen

Kommentar

  • 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.

  1. 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
    
  2. 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
    
  3. Skapa följande ClusterResourcePlacement i en fil med namnet crp-2.yaml. Observera att vi väljer kluster i eastus regionen:

    apiVersion: placement.kubernetes-fleet.io/v1beta1
    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
    
  4. ClusterResourcePlacementAnvänd :

    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
    
  5. 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

  1. 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 är true) och inte har några konflikter med andra exporter (IS-CONFLICT är false).

    Kommentar

    Det kan ta en minut eller två innan ServiceExport sprids.

  2. Skapa MultiClusterService på en medlem för att belastningsutjämning ö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
    

    Kommentar

    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
    
  3. 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 ska finnas true 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.

  4. 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 och aks-member-2 från eastus regionen. Du kan verifiera podd-IP-adresserna genom att köra följande kommandon i klustren från eastus 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