Megosztás a következőn keresztül:


Többfürt 4. rétegbeli terheléselosztás beállítása az Azure Kubernetes Fleet Manager-tagfürtök között (előzetes verzió)

A több fürtön üzembe helyezett alkalmazások esetében a rendszergazdák gyakran a fürtök között szeretnék átirányítani a bejövő forgalmat.

Ezt a dokumentumot követve beállíthatja a 4. rétegbeli terheléselosztást az ilyen többfürtes alkalmazásokhoz.

Fontos

Az Azure Kubernetes Fleet Manager előzetes verziójú funkciói önkiszolgáló, opt-in alapon érhetők el. Az előzetes verziókat "ahogy van" és "rendelkezésre állóként" biztosítjuk, és a szolgáltatási szerződésekből és a korlátozott jótállásból kizárjuk őket. Az Azure Kubernetes Fleet Manager előzetes verzióit részben az ügyfélszolgálat fedezi a legjobb munkamennyiség alapján. Ezért ezek a funkciók nem éles használatra vannak szánva.

Előfeltételek

Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.

Számítási feladat üzembe helyezése a Fleet-erőforrás tagfürtjeiben

Feljegyzés

  • Az útmutató lépései csak bemutató célú mintaalkalmazásokra vonatkoznak. Ezt a számítási feladatot bármelyik meglévő üzembe helyezési és szolgáltatásobjektumra lecserélheti.

  • Ezek a lépések üzembe helyezik a mintaterhelést a Fleet-fürtből a tagfürtökre a Kubernetes konfigurációpropagálásával. Azt is megteheti, hogy ezeket a Kubernetes-konfigurációkat külön-külön, egyenként helyezi üzembe az egyes tagfürtökön.

  1. Névtér létrehozása a flottafürtön:

    KUBECONFIG=fleet kubectl create namespace kuard-demo
    

    A kimenet a következő példához hasonlóan néz ki:

    namespace/kuard-demo created
    
  2. Alkalmazza az üzembe helyezési, service-, ServiceExport-objektumokat:

    KUBECONFIG=fleet kubectl apply -f https://raw.githubusercontent.com/Azure/AKS/master/examples/fleet/kuard/kuard-export-service.yaml
    

    A ServiceExport fenti fájl specifikációja lehetővé teszi egy szolgáltatás exportálását tagfürtökből a Fleet-erőforrásba. A sikeres exportálás után a szolgáltatás és annak összes végpontja szinkronizálva lesz a flottafürttel, majd többfürtes terheléselosztás beállítására használható ezen végpontok között. A kimenet az alábbi példához hasonlóan néz ki:

    deployment.apps/kuard created
    service/kuard created
    serviceexport.networking.fleet.azure.com/kuard created
    
  3. Hozza létre a következőt ClusterResourcePlacement egy nevű crp-2.yamlfájlban. Figyelje meg, hogy fürtöket választunk ki a eastus régióban:

    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
    
  4. Alkalmazza a következőt ClusterResourcePlacement:

    KUBECONFIG=fleet kubectl apply -f crp-2.yaml
    

    Ha a kimenet sikeres, a kimenet az alábbi példához hasonlóan néz ki:

    clusterresourceplacement.placement.kubernetes-fleet.io/kuard-demo created
    
  5. Ellenőrizze a következő állapotot ClusterResourcePlacement:

    KUBECONFIG=fleet kubectl get clusterresourceplacements
    

    Ha a kimenet sikeres, a kimenet az alábbi példához hasonlóan néz ki:

    NAME            GEN   SCHEDULED   SCHEDULEDGEN   APPLIED   APPLIEDGEN   AGE
    kuard-demo      1     True        1              True      1            20s
    

MultiClusterService létrehozása több tagfürt szolgáltatásvégpontjai közötti terheléselosztáshoz

  1. Ellenőrizze, hogy a szolgáltatás sikeresen exportálva van-e a régióban lévő tagfürtökhöz eastus :

    KUBECONFIG=aks-member-1 kubectl get serviceexport kuard --namespace kuard-demo
    

    A kimenet a következő példához hasonlóan néz ki:

    NAME    IS-VALID   IS-CONFLICTED   AGE
    kuard   True       False           25s
    
    KUBECONFIG=aks-member-2 kubectl get serviceexport kuard --namespace kuard-demo
    

    A kimenet a következő példához hasonlóan néz ki:

    NAME    IS-VALID   IS-CONFLICTED   AGE
    kuard   True       False           55s
    

    Látnia kell, hogy a szolgáltatás érvényes az exportálásra (IS-VALID mező) trueés nem ütközik más exportálásokkal (IS-CONFLICT is false).

    Feljegyzés

    A ServiceExport propagálása eltarthat egy-két percig.

  2. Hozzon létre MultiClusterService egy tagot az alábbi fürtök szolgáltatásvégpontjai közötti terheléselosztáshoz:

    KUBECONFIG=aks-member-1 kubectl apply -f https://raw.githubusercontent.com/Azure/AKS/master/examples/fleet/kuard/kuard-mcs.yaml
    

    Feljegyzés

    Ha nyilvános helyett belső IP-címen szeretné elérhetővé tenni a szolgáltatást, adja hozzá a jegyzetet a MultiClusterService szolgáltatáshoz:

    apiVersion: networking.fleet.azure.com/v1alpha1
    kind: MultiClusterService
    metadata:
      name: kuard
      namespace: kuard-demo
      annotations:
         service.beta.kubernetes.io/azure-load-balancer-internal: "true"
      ...
    

    A kimenet a következő példához hasonlóan néz ki:

    multiclusterservice.networking.fleet.azure.com/kuard created
    
  3. Az alábbi parancs futtatásával ellenőrizze, hogy a MultiClusterService érvényes-e:

    KUBECONFIG=aks-member-1 kubectl get multiclusterservice kuard --namespace kuard-demo
    

    A kimenetnek a következőképpen kell kinéznie:

    NAME    SERVICE-IMPORT   EXTERNAL-IP     IS-VALID   AGE
    kuard   kuard            <a.b.c.d>       True       40s
    

    A IS-VALID mezőnek a kimenetben kell lennie true . Tekintse meg a külső terheléselosztó IP-címét (EXTERNAL-IP) a kimenetben. Az importálás teljes feldolgozása és az IP-cím elérhetővé válása eltarthat egy ideig.

  4. Futtassa többször a következő parancsot a külső terheléselosztó IP-címével:

    curl <a.b.c.d>:8080 | grep addrs 
    

    Figyelje meg, hogy a kérést kiszolgáló podok IP-címei változnak, és ezek a podok tagfürtökből aks-member-1 és aks-member-2 a eastus régióból származnak. A pod IP-címeinek ellenőrzéséhez futtassa a következő parancsokat a régióból származó eastus fürtökön:

    KUBECONFIG=aks-member-1 kubectl get pods -n kuard-demo -o wide
    
    KUBECONFIG=aks-member-2 kubectl get pods -n kuard-demo -o wide