Aracılığıyla paylaş


Azure Kubernetes Fleet Manager üye kümeleri arasında çok kümeli katman 4 yük dengelemesi ayarlama (önizleme)

Birden çok kümeye dağıtılan uygulamalar için yöneticiler genellikle gelen trafiği bunlara kümeler arasında yönlendirmek ister.

Bu tür çok kümeli uygulamalar için katman 4 yük dengelemeyi ayarlamak için bu belgeyi izleyebilirsiniz.

Önemli

Azure Kubernetes Fleet Manager önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "kullanılabilir" olarak sağlanır ve hizmet düzeyi sözleşmelerinin ve sınırlı garantinin dışında tutulur. Azure Kubernetes Fleet Manager önizlemeleri, müşteri desteği kapsamındadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır.

Önkoşullar

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

  • Bu belgede başvurulan ve MultiClusterService nesnelerinin açıklamasını sağlayan bu özelliğinServiceExport kavramsal genel bakışını okuyun.

  • Merkez kümesi ve üye kümeleri olan bir Fleet kaynağınız olmalıdır. Bu kaynağa sahip değilseniz Hızlı Başlangıç: Filo kaynağı oluşturma ve üye kümelere katılma adımlarını izleyin.

  • İş yüklerinin dağıtıldığı hedef Azure Kubernetes Service (AKS) kümelerinin aynı sanal ağda veya eşlenmiş sanal ağlarda mevcut olması gerekir.

  • Access Fleet hub kümesi Kubernetes API'sindeki adımları izleyerek hub kümesinin Kubernetes API'sine erişim kazanmanız gerekir.

  • Aşağıdaki ortam değişkenlerini ayarlayın ve filo ve tüm üye kümeler için kubeconfigs'i alın:

    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
    
  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

Fleet kaynağının üye kümeleri arasında iş yükü dağıtma

Not

  • Bu nasıl yapılır kılavuzundaki adımlar yalnızca tanıtım amacıyla örnek bir uygulamaya başvurur. Bu iş yükünü kendi mevcut Dağıtım ve Hizmet nesnelerinizle değiştirebilirsiniz.

  • Bu adımlar, Örnek iş yükünü Kubernetes yapılandırma yayma kullanarak Fleet kümesinden üye kümelere dağıtır. Alternatif olarak, bu Kubernetes yapılandırmalarını her üye kümeye birer birer dağıtmayı seçebilirsiniz.

  1. Filo kümesinde bir ad alanı oluşturun:

    KUBECONFIG=fleet kubectl create namespace kuard-demo
    

    Çıktı aşağıdaki örneğe benzer:

    namespace/kuard-demo created
    
  2. Dağıtım, Hizmet, ServiceExport nesnelerini uygulama:

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

    ServiceExport Yukarıdaki dosyadaki belirtim, bir hizmeti üye kümelerden Fleet kaynağına dışarı aktarmanıza olanak tanır. Başarıyla dışarı aktarıldıktan sonra hizmet ve tüm uç noktaları filo kümesiyle eşitlenir ve bu uç noktalar arasında çok kümeli yük dengelemeyi ayarlamak için kullanılabilir. Çıktı aşağıdaki örneğe benzer:

    deployment.apps/kuard created
    service/kuard created
    serviceexport.networking.fleet.azure.com/kuard created
    
  3. adlı crp-2.yamlbir dosyada aşağıdakileri ClusterResourcePlacement oluşturun. Bölgedeki kümeleri eastus seçtiğimizi fark edin:

    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. uygulamasını uygulayın ClusterResourcePlacement:

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

    Başarılı olursa çıkış aşağıdaki örneğe benzer:

    clusterresourceplacement.placement.kubernetes-fleet.io/kuard-demo created
    
  5. durumunu ClusterResourcePlacementdenetleyin:

    KUBECONFIG=fleet kubectl get clusterresourceplacements
    

    Başarılı olursa çıkış aşağıdaki örneğe benzer:

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

Birden çok üye kümesindeki hizmet uç noktaları arasında yük dengelemesi yapmak için MultiClusterService oluşturma

  1. Bölgedeki üye kümeler eastus için hizmetin başarıyla dışarı aktarılıp aktarılmadığını denetleyin:

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

    Çıktı aşağıdaki örneğe benzer:

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

    Çıktı aşağıdaki örneğe benzer:

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

    Hizmetin dışarı aktarma için geçerli olduğunu (IS-VALID alan ) trueve diğer dışarı aktarmalarla (IS-CONFLICT is false) çakışması olmadığını görmeniz gerekir.

    Not

    ServiceExport'un yayılması bir veya iki dakika sürebilir.

  2. Bu kümelerdeki hizmet uç noktaları arasında yük dengelemesi yapmak için bir üyede oluşturun MultiClusterService :

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

    Not

    Hizmeti genel IP yerine iç IP üzerinden kullanıma açmak için ek açıklamayı MultiClusterService'e ekleyin:

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

    Çıktı aşağıdaki örneğe benzer:

    multiclusterservice.networking.fleet.azure.com/kuard created
    
  3. Aşağıdaki komutu çalıştırarak MultiClusterService'in geçerli olduğunu doğrulayın:

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

    Çıkış aşağıdaki örneğe benzer görünmelidir:

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

    Alanın IS-VALID çıktıda olması true gerekir. Çıktıdaki dış yük dengeleyici IP adresini (EXTERNAL-IP) gözden geçirin. İçeri aktarma işleminin tam olarak işlenmesi ve IP adresinin kullanılabilir duruma gelmesi biraz zaman alabilir.

  4. Dış yük dengeleyici IP adresini kullanarak aşağıdaki komutu birden çok kez çalıştırın:

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

    İsteği sunan podların IP'lerinin değiştiğine ve bu podların üye kümelerden aks-member-1 ve aks-member-2 bölgeden eastus olduğuna dikkat edin. Bölgedeki kümelerde aşağıdaki komutları çalıştırarak pod IP'lerini eastus doğrulayabilirsiniz:

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