Kullanılabilirlik alanlarını kullanan bir Azure Kubernetes hizmeti (AKS) kümesi oluşturmaCreate an Azure Kubernetes Service (AKS) cluster that uses availability zones

Bir Azure Kubernetes hizmeti (AKS) kümesi, temel alınan Azure altyapısının mantıksal bölümleri arasında düğümler ve depolama gibi kaynakları dağıtır.An Azure Kubernetes Service (AKS) cluster distributes resources such as nodes and storage across logical sections of underlying Azure infrastructure. Bu dağıtım modeli kullanılabilirlik alanları kullanılırken, belirli bir kullanılabilirlik bölgesindeki düğümlerin, başka bir kullanılabilirlik alanında tanımlananlardan fiziksel olarak ayrılması güvence altına alınır.This deployment model when using availability zones, ensures nodes in a given availability zone are physically separated from those defined in another availability zone. Bir küme genelinde yapılandırılmış birden çok kullanılabilirlik bölgesi ile dağıtılan AKS kümeleri, bir donanım hatasına veya planlı bakım olayına karşı koruma için daha yüksek düzeyde kullanılabilirlik sağlar.AKS clusters deployed with multiple availability zones configured across a cluster provide a higher level of availability to protect against a hardware failure or a planned maintenance event.

Birden çok bölgeye yaymak üzere bir kümede düğüm havuzlarını tanımlayarak, belirli bir düğüm havuzundaki düğümler, tek bir bölge silinse bile çalışmaya devam edebilir.By defining node pools in a cluster to span multiple zones, nodes in a given node pool are able to continue operating even if a single zone has gone down. Tek bir veri merkezinde fiziksel bir hata olsa bile uygulamalarınız, düğümlerin bir alt kümesinin hatasını kabul etmek üzere ayarlandığında uygulamalarınız kullanılabilir olmaya devam edebilir.Your applications can continue to be available even if there is a physical failure in a single datacenter if orchestrated to tolerate failure of a subset of nodes.

Bu makalede bir AKS kümesi oluşturma ve düğüm bileşenlerini kullanılabilirlik alanları arasında dağıtma gösterilmektedir.This article shows you how to create an AKS cluster and distribute the node components across availability zones.

Başlamadan önceBefore you begin

Azure CLı sürüm 2.0.76 veya sonraki bir sürümün yüklü ve yapılandırılmış olması gerekir.You need the Azure CLI version 2.0.76 or later installed and configured.  az --versionSürümü bulmak için ' i çalıştırın.Run az --version to find the version. Yüklemeniz veya yükseltmeniz gerekirse bkz. Azure CLI 'Yı yüklemek.If you need to install or upgrade, see Install Azure CLI.

Sınırlamalar ve bölge kullanılabilirliğiLimitations and region availability

AKS kümeleri Şu anda şu bölgelerde kullanılabilirlik alanları kullanılarak oluşturulabilir:AKS clusters can currently be created using availability zones in the following regions:

  • Orta ABDCentral US
  • Doğu ABD 2East US 2
  • Doğu ABDEast US
  • Orta FransaFrance Central
  • Doğu JaponyaJapan East
  • Kuzey AvrupaNorth Europe
  • Güneydoğu AsyaSoutheast Asia
  • Güney Birleşik KrallıkUK South
  • West EuropeWest Europe
  • Batı ABD 2West US 2

Kullanılabilirlik bölgelerini kullanarak bir AKS kümesi oluşturduğunuzda aşağıdaki sınırlamalar geçerlidir:The following limitations apply when you create an AKS cluster using availability zones:

  • Kullanılabilirlik bölgelerini yalnızca küme veya düğüm havuzu oluşturulduğunda tanımlayabilirsiniz.You can only define availability zones when the cluster or node pool is created.
  • Kullanılabilirlik alanı ayarları, küme oluşturulduktan sonra güncelleştirilemiyor.Availability zone settings can't be updated after the cluster is created. Kullanılabilirlik alanlarını kullanmak için mevcut, kullanılabilirlik dışı bir bölge kümesini de güncelleştiremezsiniz.You also can't update an existing, non-availability zone cluster to use availability zones.
  • Seçilen düğüm boyutu (VM SKU 'SU) seçili olan tüm kullanılabilirlik bölgelerinde kullanılabilir olmalıdır.The chosen node size (VM SKU) selected must be available across all availability zones selected.
  • Kullanılabilirlik alanları etkin olan kümeler, bölgeler arasında dağıtım için Azure Standart yük dengeleyiciler kullanılmasını gerektirir.Clusters with availability zones enabled require use of Azure Standard Load Balancers for distribution across zones. Bu yük dengeleyici türü, yalnızca küme oluşturma zamanında tanımlanabilir.This load balancer type can only be defined at cluster create time. Daha fazla bilgi ve standart yük dengeleyicinin sınırlamaları için bkz. Azure yük dengeleyici standart SKU sınırlamaları.For more information and the limitations of the standard load balancer, see Azure load balancer standard SKU limitations.

Azure diskler sınırlamalarıAzure disks limitations

Azure yönetilen diskleri kullanan birimler Şu anda bölgesel olarak yedekli kaynaklar değildir.Volumes that use Azure managed disks are currently not zone-redundant resources. Birimler bölgelere bağlanamaz ve hedef Pod 'u barındıran belirli bir düğümle aynı bölgede birlikte bulunması gerekir.Volumes cannot be attached across zones and must be co-located in the same zone as a given node hosting the target pod.

Durum bilgisi olan iş yükleri çalıştırmanız gerekiyorsa, Pod özelliklerini disklerinizdeki aynı bölgede gruplamak için pod özelliklerine göre düğüm havuzu talarını ve toleranlarını kullanın.If you must run stateful workloads, use node pool taints and tolerations in pod specs to group pod scheduling in the same zone as your disks. Alternatif olarak, bölgeler arasında zamanlandıkları üzere Pod 'ye iliştirilabilen Azure dosyaları gibi ağ tabanlı depolama alanı kullanın.Alternatively, use network-based storage such as Azure Files that can attach to pods as they're scheduled between zones.

AKS kümeleri için kullanılabilirlik bölgelerine genel bakışOverview of availability zones for AKS clusters

Kullanılabilirlik alanları, uygulamalarınızı ve verilerinizi veri merkezi hatalarından koruyan yüksek kullanılabilirliğe sahip bir tekliftir.Availability zones are a high-availability offering that protects your applications and data from datacenter failures. Bölgeler, bir Azure bölgesi içinde benzersiz fiziksel konumlardır.Zones are unique physical locations within an Azure region. Her alan bağımsız güç, soğutma ve ağ bağlantısı ile donatılmış bir veya daha fazla veri merkezinden oluşur.Each zone is made up of one or more datacenters equipped with independent power, cooling, and networking. Dayanıklılık sağlamak için, tüm bölge etkin bölgelerde en az üç ayrı bölge vardır.To ensure resiliency, there's a minimum of three separate zones in all zone enabled regions. Bölgenin içinde fiziksel olarak ayrılmış kullanılabilirlik alanları uygulamaları ve verileri veri merkezi hatalarına karşı korur.The physical separation of availability zones within a region protects applications and data from datacenter failures.

Daha fazla bilgi için bkz. Azure 'da kullanılabilirlik bölgeleri nelerdir?.For more information, see What are availability zones in Azure?.

Kullanılabilirlik alanları kullanılarak dağıtılan AKS kümeleri, düğümleri tek bir bölge içinde birden çok bölgeye dağıtabilir.AKS clusters that are deployed using availability zones can distribute nodes across multiple zones within a single region. Örneğin, Doğu ABD 2 bölgesindeki bir küme, East US 2Doğu ABD 2üç kullanılabilirlik alanında bulunan düğümleri oluşturabilir.For example, a cluster in the East US 2 region can create nodes in all three availability zones in East US 2. AKS kümesi kaynaklarının bu dağıtımı, belirli bir bölgede hatalara dayanıklı oldukları için küme kullanılabilirliğini geliştirir.This distribution of AKS cluster resources improves cluster availability as they're resilient to failure of a specific zone.

Kullanılabilirlik alanları arasında AKS düğüm dağılımı

Tek bir bölge kullanılamaz duruma gelirse, küme birden çok bölgeye yayıldığında uygulamalarınız çalışmaya devam eder.If a single zone becomes unavailable, your applications continue to run if the cluster is spread across multiple zones.

Kullanılabilirlik alanları arasında AKS kümesi oluşturmaCreate an AKS cluster across availability zones

Az aks Create komutunu kullanarak bir küme oluşturduğunuzda, --zones parametresi hangi bölge Aracısı düğümlerinin dağıtılacağını tanımlar.When you create a cluster using the az aks create command, the --zones parameter defines which zones agent nodes are deployed into. Parametreyi küme oluşturma zamanında tanımlarsanız, etcd gibi denetim düzlemi bileşenleri üç bölgeye yayılır --zones .The control plane components such as etcd is spread across three zones if you define the --zones parameter at cluster creation time. Denetim düzlemi bileşenlerinin yayıldığı belirli bölgeler, ilk düğüm havuzu için seçilen açık bölgelerin bağımsızdır.The specific zones which the control plane components are spread across are independent of what explicit zones are selected for the initial node pool.

Bir AKS kümesi oluştururken varsayılan aracı havuzu için herhangi bir bölge tanımlamadıysanız, denetim düzlemi bileşenlerinin kullanılabilirlik alanları arasında yayılmasının garantisi yoktur.If you don't define any zones for the default agent pool when you create an AKS cluster, control plane components are not guaranteed to spread across availability zones. Az aks nodepool Add komutunu kullanarak ek düğüm havuzları ekleyebilir ve --zones yeni düğümler belirtebilirsiniz, ancak denetim düzleminin bölgeler arasında yayılmasını değiştirmez.You can add additional node pools using the az aks nodepool add command and specify --zones for new nodes, but it will not change how the control plane has been spread across zones. Kullanılabilirlik alanı ayarları, yalnızca küme veya düğüm havuzu oluşturma sırasında tanımlanabilir.Availability zone settings can only be defined at cluster or node pool create-time.

Aşağıdaki örnek, Myresourcegroupadlı kaynak grubunda Myakscluster adlı bir aks kümesi oluşturur.The following example creates an AKS cluster named myAKSCluster in the resource group named myResourceGroup. Toplam 3 düğüm oluşturulur-bölge 1' de bir aracı, biri 2' de ve diğeri 3' te.A total of 3 nodes are created - one agent in zone 1, one in 2, and then one in 3.

az group create --name myResourceGroup --location eastus2

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --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.It takes a few minutes to create the AKS cluster.

Yeni bir düğümün hangi bölgeye ait olduğuna karar verirken, belirli bir AKS düğüm havuzu temel alınan Azure sanal makine ölçek kümeleri tarafından sunulan en iyi efor bölge dengelemesinikullanacaktır.When deciding what zone a new node should belong to, a given AKS node pool will use a best effort zone balancing offered by underlying Azure Virtual Machine Scale Sets. Belirli bir AKS düğüm havuzu, ölçek kümesinin diğer bölgelerinde aynı sayıda VM veya + 1 VM varsa "dengeli" olarak değerlendirilir - .A given AKS node pool is considered "balanced" if each zone has the same number of VMs or +- 1 VM in all other zones for the scale set.

Bölgeler arasında düğüm dağıtımını doğrulamaVerify node distribution across zones

Küme hazır olduğunda, hangi kullanılabilirlik bölgesini dağıttığımız görmek için ölçek kümesindeki aracı düğümlerini listeleyin.When the cluster is ready, list the agent nodes in the scale set to see what availability zone they're deployed in.

İlk olarak, az aks Get-Credentials komutunu kullanarak aks kümesi kimlik bilgilerini alın:First, get the AKS cluster credentials using the az aks get-credentials command:

az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

Sonra, küme içindeki düğümleri listelemek ve Failure-Domain.Beta.Kubernetes.io/Zone değerini filtrelemek için kubectl açıkla komutunu kullanın.Next, use the kubectl describe command to list the nodes in the cluster and filter on the failure-domain.beta.kubernetes.io/zone value. Aşağıdaki örnek bir bash kabuğu içindir.The following example is for a Bash shell.

kubectl describe nodes | grep -e "Name:" -e "failure-domain.beta.kubernetes.io/zone"

Aşağıdaki örnek çıktıda, ilk kullanılabilirlik bölgesi için eastus2-1 ve ikinci kullanılabilirlik bölgesi için eastus2-2 gibi belirtilen bölge ve kullanılabilirlik bölgeleri arasında dağıtılan üç düğüm gösterilmektedir:The following example output shows the three nodes distributed across the specified region and availability zones, such as eastus2-1 for the first availability zone and eastus2-2 for the second availability zone:

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

Bir aracı havuzuna ek düğümler eklediğinizde, Azure platformu, belirtilen kullanılabilirlik alanları genelinde temel alınan VM 'Leri otomatik olarak dağıtır.As you add additional nodes to an agent pool, the Azure platform automatically distributes the underlying VMs across the specified availability zones.

Daha yeni Kubernetes sürümlerinde (1.17.0 ve üzeri), AKS 'in topology.kubernetes.io/zone kullanım dışı öğesine ek olarak daha yeni etiketi kullandığını unutmayın failure-domain.beta.kubernetes.io/zone .Note that in newer Kubernetes versions (1.17.0 and later), AKS is using the newer label topology.kubernetes.io/zone in addition to the deprecated failure-domain.beta.kubernetes.io/zone.

Bölgeler arasında Pod dağıtımını doğrulamaVerify pod distribution across zones

Iyi bilinen Etiketler, ek açıklamalar ve tatlarıde belgelendiği gibi, Kubernetes, failure-domain.beta.kubernetes.io/zone bir çoğaltma denetleyicisindeki veya hizmette yer alan farklı bölgelerde bulunan alanları otomatik olarak dağıtmak için etiketini kullanır.As documented in Well-Known Labels, Annotations and Taints, Kubernetes uses the failure-domain.beta.kubernetes.io/zone label to automatically distribute pods in a replication controller or service across the different zones available. Bunu test etmek için, doğru Pod yayılmasını doğrulamak üzere kümenizi 3 ' ten 5 düğüme ölçeklendirebilirsiniz:In order to test this, you can scale up your cluster from 3 to 5 nodes, to verify correct pod spreading:

az aks scale \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 5

Ölçek işlemi birkaç dakika sonra tamamlandığında, kubectl describe nodes | grep -e "Name:" -e "failure-domain.beta.kubernetes.io/zone" bir bash kabuğu 'ndaki komut bu örneğe benzer bir çıktı vermelidir:When the scale operation completes after a few minutes, the command kubectl describe nodes | grep -e "Name:" -e "failure-domain.beta.kubernetes.io/zone" in a Bash shell should give an output similar to this sample:

Name:       aks-nodepool1-28993262-vmss000000
            failure-domain.beta.kubernetes.io/zone=eastus2-1
Name:       aks-nodepool1-28993262-vmss000001
            failure-domain.beta.kubernetes.io/zone=eastus2-2
Name:       aks-nodepool1-28993262-vmss000002
            failure-domain.beta.kubernetes.io/zone=eastus2-3
Name:       aks-nodepool1-28993262-vmss000003
            failure-domain.beta.kubernetes.io/zone=eastus2-1
Name:       aks-nodepool1-28993262-vmss000004
            failure-domain.beta.kubernetes.io/zone=eastus2-2

Artık 1 ve 2. bölgelerde iki ek düğüm vardır.We now have two additional nodes in zones 1 and 2. Üç çoğaltmalardan oluşan bir uygulamayı dağıtabilirsiniz.You can deploy an application consisting of three replicas. Örnek olarak NGıNX kullanacağız:We will use NGINX as an example:

kubectl run nginx --image=nginx --replicas=3

Yığınlarınızın çalıştığı düğümleri görüntüleyerek, üç farklı kullanılabilirlik bölgesine karşılık gelen düğümlerde Pod 'nin çalıştığını görürsünüz.By viewing nodes where your pods are running, you see pods are running on the nodes corresponding to three different availability zones. Örneğin, kubectl describe pod | grep -e "^Name:" -e "^Node:" bir bash kabuğu 'ndaki komutuyla şuna benzer bir çıktı alırsınız:For example, with the command kubectl describe pod | grep -e "^Name:" -e "^Node:" in a Bash shell you would get an output similar to this:

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 çıktıdan görebileceğiniz gibi, ilk Pod, kullanılabilirlik bölgesinde bulunan 0 düğümünde çalışır eastus2-1 .As you can see from the previous output, the first pod is running on node 0, which is located in the availability zone eastus2-1. İkinci Pod, ' a karşılık gelen düğüm 2 ' de eastus2-3 ve içinde üçüncü tane düğüm 4 ' te çalışır eastus2-2 .The second pod is running on node 2, which corresponds to eastus2-3, and the third one in node 4, in eastus2-2. Ek bir yapılandırma olmadan, Kubernetes üç kullanılabilirlik alanı genelinde doğru şekilde yayılmaktadır.Without any additional configuration, Kubernetes is spreading the pods correctly across all three availability zones.

Sonraki adımlarNext steps

Bu makalede, kullanılabilirlik bölgelerini kullanan bir AKS kümesi oluşturma hakkında ayrıntılı olarak açıklanmıştır.This article detailed how to create an AKS cluster that uses availability zones. 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 uygulamalar.For more considerations on highly available clusters, see Best practices for business continuity and disaster recovery in AKS.