Kullanılabilirlik alanlarını kullanan bir Azure Kubernetes Service (AKS) kümesi oluşturma

Bu makalede AKS kümesi oluşturma ve düğüm bileşenlerini kullanılabilirlik alanları arasında dağıtma işlemleri gösterilmektedir.

Başlamadan önce

  • Azure CLI sürüm 2.0.76 veya üzerinin yüklü ve yapılandırılmış olması gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.
  • AKS'de kullanılabilirlik alanlarını kullanmanın avantajlarını ve sınırlamalarını anlamak için AKS'deki kullanılabilirlik alanlarına genel bakışı okuyun.

Azure Resource Manager şablonları ve kullanılabilirlik alanları

Azure Resource Manager şablonu kullanarak kullanılabilirlik alanlarıyla AKS kümesi oluştururken aşağıdaki ayrıntıları göz önünde bulundurun:

  • Örneğin, bir şablonda null değeri açıkça tanımlarsanız, "availabilityZones": nullşablon özelliğine yok gibi davranır. Bu, kümenizin kullanılabilirlik alanında dağıtım yapmadığı anlamına gelir.
  • Özelliği şablona "availabilityZones": eklemezseniz kümeniz bir kullanılabilirlik alanına dağıtım yapmaz.
  • Aks kümesini Azure Resource Manager şablonlarıyla güncelleştirdiğinizde davranış farklı olduğundan, mevcut kümedeki kullanılabilirlik alanlarının ayarlarını güncelleştiremezsiniz. Şablonunuzda kullanılabilirlik alanları için açıkça null bir değer ayarlar ve kümenizi güncelleştirirseniz , kullanılabilirlik alanları için kümenizi güncelleştirmez. Ancak, gibi "availabilityZones": []söz dizimi ile kullanılabilirlik alanları özelliğini atlarsanız, dağıtım mevcut AKS kümenizde kullanılabilirlik alanlarını devre dışı bırakmaya çalışır ve başarısız olur.

Kullanılabilirlik alanları arasında AKS kümesi oluşturma

komutunu kullanarak az aks create bir küme oluşturduğunuzda parametresi aracı --zones düğümlerinin dağıtılacağı kullanılabilirlik alanlarını belirtir. Yönetilen denetim düzlemi bileşenlerinin dağıtılacağı kullanılabilirlik alanları bu parametre tarafından denetlenmiyor . Bunlar, küme dağıtımı sırasında bölgedeki tüm kullanılabilirlik alanlarına (varsa) otomatik olarak yayılır.

Aşağıdaki örnek komutlar, toplam üç düğüme sahip bir kaynak grubu ve AKS kümesinin nasıl oluşturulacağını gösterir. Bölge 1'de bir aracı düğümü, biri 2'de ve biri 3'te.

  1. komutunu kullanarak az group create bir kaynak grubu oluşturun.

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  2. parametresiyle --zones komutunu kullanarak az aks create bir AKS kümesi oluşturun.

    az aks create \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --generate-ssh-keys \
        --vm-set-type VirtualMachineScaleSets \
        --load-balancer-sku standard \
        --node-count 3 \
        --zones 1 2 3
    

    AKS kümesinin oluşturulması birkaç dakika sürer.

    Yeni düğümün hangi bölgeye ait olması gerektiğine karar verirken, belirtilen AKS düğüm havuzu temel alınan Azure Sanal Makine Ölçek Kümeleri tarafından sunulan en iyi efor bölgesi dengelemesini kullanır. Her bölge aynı sayıda VM'ye veya ölçek kümesi için diğer tüm bölgelerde +- bir VM'ye sahip olduğunda AKS düğüm havuzu "dengelidir".

Bölgeler arasında düğüm dağıtımlarını doğrulama

Küme hazır olduğunda, ölçek kümesindeki aracı düğümlerinin hangi kullanılabilirlik alanında olduğunu listeleyin.

  1. komutunu kullanarak az aks get-credentials AKS kümesi kimlik bilgilerini alın:

    az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
    
  2. komutunu kullanarak kubectl describe kümedeki düğümleri listeleyin ve değeri filtreleyin topology.kubernetes.io/zone .

    kubectl describe nodes | grep -e "Name:" -e "topology.kubernetes.io/zone"
    

    Aşağıdaki örnek çıktı, belirtilen bölge ve kullanılabilirlik alanları arasında dağıtılan üç düğümü gösterir; örneğin , ilk kullanılabilirlik alanı için eastus2-1 ve ikinci kullanılabilirlik alanı için eastus2-2 :

    Name:       aks-nodepool1-28993262-vmss000000
                topology.kubernetes.io/zone=eastus2-1
    Name:       aks-nodepool1-28993262-vmss000001
                topology.kubernetes.io/zone=eastus2-2
    Name:       aks-nodepool1-28993262-vmss000002
                topology.kubernetes.io/zone=eastus2-3
    

Aracı havuzuna daha fazla düğüm eklediğinizde, Azure platformu temel alınan VM'leri otomatik olarak belirtilen kullanılabilirlik alanlarına dağıtır.

Kubernetes 1.17.0 ve sonraki sürümleriyle AKS, etiketini ve kullanım failure-domain.beta.kubernetes.io/zonedışı olan öğesini kullanırtopology.kubernetes.io/zone. Aşağıdaki komutu kullanarak önceki örnekte komutu çalıştırarak kubectl describe nodes aynı sonucu alabilirsiniz:

kubectl get nodes -o custom-columns=NAME:'{.metadata.name}',REGION:'{.metadata.labels.topology\.kubernetes\.io/region}',ZONE:'{metadata.labels.topology\.kubernetes\.io/zone}'

Aşağıdaki örnek, daha ayrıntılı ayrıntılar içeren çıktıya benzer:

NAME                                REGION   ZONE
aks-nodepool1-34917322-vmss000000   eastus   eastus-1
aks-nodepool1-34917322-vmss000001   eastus   eastus-2
aks-nodepool1-34917322-vmss000002   eastus   eastus-3

Bölgeler arasında pod dağıtımlarını doğrulama

İyi Bilinen Etiketler, Ek Açıklamalar ve Renk Tonları'nda belirtildiği gibi Kubernetes, bir çoğaltma denetleyicisindeki veya hizmetindeki podları kullanılabilir farklı bölgeler arasında otomatik olarak dağıtmak için etiketi kullanırtopology.kubernetes.io/zone. Bu örnekte, etiketi test eder ve pod'un doğru yayıldığını doğrulamak için kümenizi 3 düğümden 5 düğüme ölçeklendirirsiniz.

  1. komutunu kullanarak az aks scale AKS kümenizi 3 düğümden 5 düğüme 5ölçeklendirin--node-count.

    az aks scale \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --node-count 5
    
  2. Ölçeklendirme işlemi tamamlandığında, aşağıdaki kubectl describe komutu kullanarak bölgeler arasında pod dağıtımını doğrulayın:

    kubectl describe nodes | grep -e "Name:" -e "topology.kubernetes.io/zone"
    

    Aşağıdaki örnek çıktıda, belirtilen bölge ve kullanılabilirlik alanları arasında dağıtılan ilk kullanılabilirlik alanı için eastus2-1 ve ikinci kullanılabilirlik alanı için eastus2-2 gibi beş düğüm gösterilmektedir:

    Name:       aks-nodepool1-28993262-vmss000000
                topology.kubernetes.io/zone=eastus2-1
    Name:       aks-nodepool1-28993262-vmss000001
                topology.kubernetes.io/zone=eastus2-2
    Name:       aks-nodepool1-28993262-vmss000002
                topology.kubernetes.io/zone=eastus2-3
    Name:       aks-nodepool1-28993262-vmss000003
                topology.kubernetes.io/zone=eastus2-1
    Name:       aks-nodepool1-28993262-vmss000004
                topology.kubernetes.io/zone=eastus2-2
    
  3. Aşağıdaki kubectl create deployment ve kubectl scale komutlarını kullanarak üç çoğaltma ile bir NGINX uygulaması dağıtın:

    kubectl create deployment nginx --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
    kubectl scale deployment nginx --replicas=3
    
  4. Aşağıdaki kubectl describe komutu kullanarak bölgeler arasında pod dağıtımını doğrulayın:

    kubectl describe pod | grep -e "^Name:" -e "^Node:"
    

    Aşağıdaki örnek çıktıda, belirtilen bölge ve kullanılabilirlik alanları arasında dağıtılan üç pod gösterilmektedir; örneğin , ilk kullanılabilirlik alanı için eastus2-1 ve ikinci kullanılabilirlik alanı için eastus2-2 :

    Name:         nginx-6db489d4b7-ktdwg
    Node:         aks-nodepool1-28993262-vmss000000/10.240.0.4
    Name:         nginx-6db489d4b7-v7zvj
    Node:         aks-nodepool1-28993262-vmss000002/10.240.0.6
    Name:         nginx-6db489d4b7-xz6wj
    Node:         aks-nodepool1-28993262-vmss000004/10.240.0.8
    

    Önceki çıkıştan görebileceğiniz gibi, ilk pod kullanılabilirlik alanında eastus2-1bulunan düğüm 0 üzerinde çalışıyor. İkinci pod, 2. düğümde çalışıyor ve buna karşılık gelen eastus2-3ve üçüncü pod ise düğüm 4'te.eastus2-2 Ek yapılandırma olmadan Kubernetes, podları üç kullanılabilirlik alanına da doğru şekilde yayar.

Sonraki adımlar

Bu makalede, kullanılabilirlik alanlarını kullanarak AKS kümesinin nasıl oluşturulacağı açıklanmıştır. Yüksek oranda kullanılabilir kümeler hakkında daha fazla bilgi için bkz . AKS'de iş sürekliliği ve olağanüstü durum kurtarma için en iyi yöntemler.