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.
komutunu kullanarak
az group create
bir kaynak grubu oluşturun.az group create --name $RESOURCE_GROUP --location $LOCATION
parametresiyle
--zones
komutunu kullanarakaz 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.
komutunu kullanarak
az aks get-credentials
AKS kümesi kimlik bilgilerini alın:az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
komutunu kullanarak
kubectl describe
kümedeki düğümleri listeleyin ve değeri filtreleyintopology.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/zone
dışı 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.
komutunu kullanarak
az aks scale
AKS kümenizi 3 düğümden 5 düğüme5
ölçeklendirin--node-count
.az aks scale \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --node-count 5
Ö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
Aşağıdaki
kubectl create deployment
vekubectl 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
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-1
bulunan düğüm 0 üzerinde çalışıyor. İkinci pod, 2. düğümde çalışıyor ve buna karşılık geleneastus2-3
ve üçü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.
Azure Kubernetes Service