Membuat kluster Azure Kubernetes Service (AKS) yang menggunakan zona ketersediaan
Artikel ini menunjukkan kepada Anda cara membuat kluster AKS dan mendistribusikan komponen simpul di seluruh zona ketersediaan.
Sebelum Anda mulai
- Anda memerlukan Azure CLI versi 2.0.76 atau yang lebih baru yang sudah terpasang dan terkonfigurasi. Jalankan
az --version
untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI. - Baca gambaran umum zona ketersediaan di AKS untuk memahami manfaat dan batasan penggunaan zona ketersediaan di AKS.
Template dan zona ketersediaan Azure Resource Manager
Ingatlah detail berikut saat membuat kluster AKS dengan zona ketersediaan menggunakan templat Azure Resource Manager:
- Jika Anda secara eksplisit menentukan nilai null dalam templat, misalnya,
"availabilityZones": null
, templat memperlakukan properti seolah-olah tidak ada. Ini berarti kluster Anda tidak disebarkan di zona ketersediaan. - Jika Anda tidak menyertakan
"availabilityZones":
properti dalam templat, kluster Anda tidak disebarkan di zona ketersediaan. - Anda tidak dapat memperbarui pengaturan untuk zona ketersediaan pada kluster yang ada, karena perilakunya berbeda saat Anda memperbarui kluster AKS dengan templat Azure Resource Manager. Jika Anda secara eksplisit menetapkan nilai null di templat Anda untuk zona ketersediaan dan memperbarui kluster Anda, itu tidak memperbarui kluster Anda untuk zona ketersediaan. Namun, jika Anda menghilangkan properti zona ketersediaan dengan sintaks seperti
"availabilityZones": []
, deployment akan mencoba menonaktifkan zona ketersediaan pada kluster AKS yang ada dan gagal.
Membuat kluster AKS di seluruh zona ketersediaan
Saat Anda membuat kluster menggunakan az aks create
perintah , --zones
parameter menentukan zona ketersediaan untuk menyebarkan simpul agen. Zona ketersediaan tempat komponen sarana kontrol terkelola disebarkan tidak dikontrol oleh parameter ini. Mereka secara otomatis tersebar di semua zona ketersediaan (jika ada) di wilayah selama penyebaran kluster.
Contoh perintah berikut menunjukkan cara membuat grup sumber daya dan kluster AKS dengan total tiga simpul. Satu simpul agen di zona 1, satu dari 2, dan kemudian satu dalam 3.
Buat grup sumber daya menggunakan
az group create
perintah .az group create --name $RESOURCE_GROUP --location $LOCATION
Buat kluster AKS menggunakan
az aks create
perintah dengan--zones
parameter .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
Perlu waktu beberapa menit untuk membuat kluster AKS.
Saat memutuskan zona apa yang harus dimiliki node baru, kumpulan simpul AKS tertentu menggunakan penyeimbangan zona upaya terbaik yang ditawarkan oleh Azure Virtual Machine Scale Sets yang mendasarinya. Kumpulan simpul AKS "seimbang" ketika setiap zona memiliki jumlah VM yang sama atau +- satu VM di semua zona lain untuk set skala.
Memverifikasi distribusi simpul di seluruh zona
Ketika kluster siap, cantumkan zona ketersediaan apa simpul agen dalam set skala berada.
Dapatkan kredensial kluster AKS menggunakan
az aks get-credentials
perintah :az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
Cantumkan simpul dalam kluster menggunakan
kubectl describe
perintah dan filter padatopology.kubernetes.io/zone
nilai .kubectl describe nodes | grep -e "Name:" -e "topology.kubernetes.io/zone"
Contoh output berikut menunjukkan tiga simpul yang didistribusikan di seluruh wilayah dan zona ketersediaan yang ditentukan, seperti eastus2-1 untuk zona ketersediaan pertama dan eastus2-2 untuk zona ketersediaan kedua:
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
Saat Anda menambahkan lebih banyak simpul ke kumpulan agen, platform Azure secara otomatis mendistribusikan VM yang mendasar di seluruh zona ketersediaan yang ditentukan.
Dengan Kubernetes versi 1.17.0 dan yang lebih baru, AKS menggunakan topology.kubernetes.io/zone
label dan yang tidak digunakan failure-domain.beta.kubernetes.io/zone
lagi. Anda bisa mendapatkan hasil yang sama dari menjalankan kubectl describe nodes
perintah dalam contoh sebelumnya menggunakan perintah berikut:
kubectl get nodes -o custom-columns=NAME:'{.metadata.name}',REGION:'{.metadata.labels.topology\.kubernetes\.io/region}',ZONE:'{metadata.labels.topology\.kubernetes\.io/zone}'
Contoh berikut menyerupai output dengan detail yang lebih verbose:
NAME REGION ZONE
aks-nodepool1-34917322-vmss000000 eastus eastus-1
aks-nodepool1-34917322-vmss000001 eastus eastus-2
aks-nodepool1-34917322-vmss000002 eastus eastus-3
Memverifikasi distribusi pod di seluruh zona
Seperti yang didokumentasikan dalam Label, Anotasi dan Taint Umum, Kube menggunakan label topology.kubernetes.io/zone
untuk secara otomatis mendistribusikan pod dalam kontroler replikasi atau layanan di berbagai zona yang tersedia. Dalam contoh ini, Anda menguji label dan menskalakan kluster Anda dari 3 hingga 5 node untuk memverifikasi pod dengan benar menyebar.
Skalakan kluster AKS Anda dari 3 hingga 5 simpul menggunakan
az aks scale
perintah dengan--node-count
diatur ke5
.az aks scale \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --node-count 5
Ketika operasi skala selesai, verifikasi distribusi pod di seluruh zona menggunakan perintah berikut
kubectl describe
:kubectl describe nodes | grep -e "Name:" -e "topology.kubernetes.io/zone"
Contoh output berikut menunjukkan lima simpul yang didistribusikan di seluruh wilayah dan zona ketersediaan yang ditentukan, seperti eastus2-1 untuk zona ketersediaan pertama dan eastus2-2 untuk zona ketersediaan kedua:
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
Sebarkan aplikasi NGINX dengan tiga replika menggunakan perintah dan
kubectl scale
berikutkubectl create deployment
:kubectl create deployment nginx --image=mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine kubectl scale deployment nginx --replicas=3
Verifikasi distribusi pod di seluruh zona menggunakan perintah berikut
kubectl describe
:kubectl describe pod | grep -e "^Name:" -e "^Node:"
Contoh output berikut menunjukkan tiga pod yang didistribusikan di seluruh wilayah dan zona ketersediaan yang ditentukan, seperti eastus2-1 untuk zona ketersediaan pertama dan eastus2-2 untuk zona ketersediaan kedua:
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
Seperti yang Anda lihat dari output sebelumnya, pod pertama berjalan pada node 0 yang terletak di zona
eastus2-1
ketersediaan . Pod kedua berjalan pada node 2, sesuai denganeastus2-3
, dan yang ketiga di node 4, dieastus2-2
. Tanpa konfigurasi tambahan, Kubernetes menyebarkan pod dengan benar di ketiga zona ketersediaan.
Langkah berikutnya
Artikel ini menjelaskan cara membuat kluster AKS menggunakan zona ketersediaan. Untuk pertimbangan lebih lanjut tentang kluster yang sangat tersedia, lihat Praktik terbaik untuk kelangsungan bisnis dan pemulihan bencana di AKS.
Azure Kubernetes Service