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.

  1. Buat grup sumber daya menggunakan az group create perintah .

    az group create --name $RESOURCE_GROUP --location $LOCATION
    
  2. 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.

  1. Dapatkan kredensial kluster AKS menggunakan az aks get-credentials perintah :

    az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME
    
  2. Cantumkan simpul dalam kluster menggunakan kubectl describe perintah dan filter pada topology.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/zonelagi. 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.

  1. Skalakan kluster AKS Anda dari 3 hingga 5 simpul menggunakan az aks scale perintah dengan --node-count diatur ke 5.

    az aks scale \
        --resource-group $RESOURCE_GROUP \
        --name $CLUSTER_NAME \
        --node-count 5
    
  2. 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
    
  3. 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
    
  4. 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-1ketersediaan . Pod kedua berjalan pada node 2, sesuai dengan eastus2-3, dan yang ketiga di node 4, di eastus2-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.