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.
- Bu hedef kümelerin Fleet kaynağına üye kümeler olarak eklenmesi gerekir.
- Bu hedef kümelerin Azure CNI (Kapsayıcı Ağ Arabirimi) ağı kullanıyor 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.
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
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
adlı
crp-2.yaml
bir dosyada aşağıdakileriClusterResourcePlacement
oluşturun. Bölgedeki kümelerieastus
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
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
durumunu
ClusterResourcePlacement
denetleyin: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
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 )true
ve diğer dışarı aktarmalarla (IS-CONFLICT
isfalse
) çakışması olmadığını görmeniz gerekir.Not
ServiceExport'un yayılması bir veya iki dakika sürebilir.
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
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.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
veaks-member-2
bölgedeneastus
olduğuna dikkat edin. Bölgedeki kümelerde aşağıdaki komutları çalıştırarak pod IP'lerinieastus
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
Azure Kubernetes Service