Bagikan melalui


Menmbahkan kumpulan node Azure Spot ke kluster Azure Kubernetes Service (AKS)

Dalam artikel ini, Anda menambahkan kumpulan simpul spot sekunder ke kluster Azure Kubernetes Service (AKS) yang ada.

Kumpulan simpul Spot adalah kumpulan simpul yang didukung oleh set skala Azure Spot Virtual Machine. Dengan Spot VM di kluster AKS, Anda dapat memanfaatkan kapasitas Azure yang tidak digunakan dengan penghematan biaya yang signifikan. Jumlah kapasitas yang tidak digunakan yang tersedia bervariasi berdasarkan banyak faktor, seperti ukuran simpul, wilayah, dan waktu hari.

Saat Anda menyebarkan kumpulan simpul Spot, Azure mengalokasikan simpul Spot jika ada kapasitas yang tersedia dan menyebarkan set skala Spot yang mendukung kumpulan simpul Spot dalam satu domain default. Tidak ada SLA untuk node Spot. Tidak ada jaminan ketersediaan tinggi. Jika Azure membutuhkan kapasitas kembali, infrastruktur Azure akan mengeluarkan simpul Spot.

Simpul spot sangat bagus untuk beban kerja yang dapat menangani gangguan, penghentian dini, atau pengusiran. Misalnya, beban kerja seperti pekerjaan pemrosesan batch, lingkungan pengembangan dan pengujian, dan beban kerja komputasi besar mungkin merupakan kandidat yang baik untuk dijadwalkan pada kumpulan simpul Spot.

Sebelum Anda mulai

  • Artikel ini mengasumsikan pemahaman dasar tentang konsep Kube dan Azure Load Balancer. Untuk informasi lebih, lihat konsep inti Kubernetes untuk Azure Kubernetes Service (AKS).
  • Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
  • Saat Anda membuat kluster untuk menggunakan kumpulan simpul Spot, kluster harus menggunakan Virtual Machine Scale Sets untuk kumpulan simpul dan load balancer SKU Standar . Anda juga harus menambahkan kumpulan simpul lain setelah membuat kluster, yang tercakup dalam tutorial ini.
  • Artikel ini mengharuskan Anda menjalankan Azure CLI versi 2.14 atau versi terbaru. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI.

Batasan

Batasan berikut berlaku saat Anda membuat dan mengelola kluster AKS dengan kumpulan node Spot:

  • Kumpulan simpul Spot tidak dapat menjadi kumpulan simpul default, hanya dapat digunakan sebagai kumpulan sekunder.
  • Anda tidak dapat meningkatkan sarana kontrol dan kumpulan simpul secara bersamaan. Anda harus meningkatkannya secara terpisah atau menghapus kumpulan node Spot untuk meningkatkan sarana kontrol dan kumpulan simpul yang tersisa secara bersamaan.
  • Kumpulan node Spot harus menggunakan Virtual Machine Scale Sets.
  • Anda tidak dapat mengubah ScaleSetPriority atau SpotMaxPrice setelah pembuatan.
  • Saat mengatur SpotMaxPrice, nilainya harus -1 atau nilai positif dengan hingga lima tempat desimal.
  • Kumpulan simpul Spot memiliki kubernetes.azure.com/scalesetpriority:spot label, kubernetes.azure.com/scalesetpriority=spot:NoSchedule taint, dan pod sistem memiliki anti-afinitas.
  • Anda harus menambahkan toleransi yang sesuai serta afinitas untuk menjadwalkan beban kerja pada kumpulan node Spot.

Menambahkan kumpulan node Spot ke kluster AKS

Saat menambahkan kumpulan simpul Spot ke kluster yang ada, itu harus merupakan kluster dengan beberapa kumpulan simpul diaktifkan. Saat Anda membuat kluster AKS dengan beberapa kumpulan simpul diaktifkan, Anda membuat kumpulan simpul dengan priority satu dari Regular secara default. Untuk menambahkan kumpulan simpul Spot, Anda harus menentukan Spot sebagai nilai untuk priority. Untuk detail selengkapnya tentang membuat kluster AKS dengan beberapa kumpulan node, lihat menggunakan beberapa kumpulan node.

  • Buat kumpulan simpul dengan priority menggunakan Spot az aks nodepool add perintah .

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name spotnodepool \
        --priority Spot \
        --eviction-policy Delete \
        --spot-max-price -1 \
        --enable-cluster-autoscaler \
        --min-count 1 \
        --max-count 3 \
        --no-wait
    

Dalam perintah sebelumnya, priority dari Spot menjadikan kumpulan simpul sebagai kumpulan simpul Spot. Parameter eviction-policy diatur ke Delete, yang merupakan nilai default. Saat Anda mengatur kebijakan pengeluaran ke Delete, simpul dalam set skala yang mendasar dari kumpulan simpul akan dihapus saat dikeluarkan.

Anda juga dapat mengatur kebijakan pengeluaran ke Deallocate, yang berarti bahwa simpul dalam set skala yang mendasar diatur ke status dihentikan-dibatalkan alokasinya setelah pengeluaran. Simpul dalam jumlah status yang dihentikan alokasinya terhadap kuota komputasi Anda dan dapat menyebabkan masalah dengan penskalaan atau peningkatan kluster. Nilai priority dan eviction-policy hanya dapat diatur selama pembuatan kumpulan simpul. Nilai-nilai tersebut tidak dapat diperbarui nanti.

Perintah sebelumnya juga memungkinkan autoscaler kluster, yang sebaiknya digunakan dengan kumpulan simpul Spot. Berdasarkan beban kerja yang berjalan di kluster Anda, autoscaler kluster menskalakan jumlah simpul naik dan turun. Untuk kumpulan node Spot, penskala otomatis kluster akan meningkatkan skala jumlah node setelah pengusiran jika node lainnya masih diperlukan. Jika Anda mengubah jumlah maksimum simpul yang dapat dimiliki kumpulan simpul, Anda juga perlu menyesuaikan nilai maxCount yang terkait dengan penskala otomatis kluster. Jika Anda tidak menggunakan autoscaler kluster, setelah pengeluaran, kumpulan Spot pada akhirnya akan berkurang menjadi 0 dan memerlukan operasi manual untuk menerima simpul Spot tambahan.

Penting

Hanya menjadwalkan beban kerja pada kumpulan node Spot yang dapat menangani gangguan, seperti pekerjaan pemrosesan batch dan lingkungan pengujian. Sebaiknya siapkan taint dan toleransi pada kumpulan simpul Spot Anda untuk memastikan bahwa hanya beban kerja yang dapat menangani pengeluaran simpul yang dijadwalkan pada kumpulan simpul Spot. Misalnya, perintah di atas menambahkan taint , kubernetes.azure.com/scalesetpriority=spot:NoSchedulesehingga hanya pod dengan toleransi yang sesuai yang dijadwalkan pada simpul ini.

Memverifikasi kumpulan node Spot

  • Verifikasi bahwa kumpulan simpul Anda ditambahkan menggunakan az aks nodepool show perintah dan mengonfirmasi scaleSetPriority adalah Spot.

    az aks nodepool show --resource-group myResourceGroup --cluster-name myAKSCluster --name spotnodepool
    

Menjadwalkan pod untuk dijalankan pada simpul Spot

Untuk menjadwalkan pod agar berjalan pada simpul Spot, Anda dapat menambahkan toleransi dan afinitas simpul yang sesuai dengan taint yang diterapkan pada simpul Spot Anda.

Contoh berikut menunjukkan sebagian file YAML yang menentukan toleransi yang sesuai dengan kubernetes.azure.com/scalesetpriority=spot:NoSchedule taint dan afinitas node yang sesuai dengan kubernetes.azure.com/scalesetpriority=spot label yang digunakan pada langkah sebelumnya dengan requiredDuringSchedulingIgnoredDuringExecution aturan afinitas node dan preferredDuringSchedulingIgnoredDuringExecution :

spec:
  containers:
  - name: spot-example
  tolerations:
  - key: "kubernetes.azure.com/scalesetpriority"
    operator: "Equal"
    value: "spot"
    effect: "NoSchedule"
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: "kubernetes.azure.com/scalesetpriority"
            operator: In
            values:
            - "spot"
      preferredDuringSchedulingIgnoredDuringExecution:
      - weight: 1
        preference:
          matchExpressions:
          - key: another-node-label-key
            operator: In
            values:
            - another-node-label-value

Ketika Anda menyebarkan pod dengan toleransi dan afinitas node ini, Kubernetes berhasil menjadwalkan pod pada node dengan taint dan label yang diterapkan. Dalam contoh ini, aturan berikut berlaku:

  • Simpul harus memiliki label dengan kunci kubernetes.azure.com/scalesetpriority, dan nilai label tersebut harus spot.
  • Simpul sebaiknya memiliki label dengan kunci another-node-label-key, dan nilai label tersebut harus another-node-label-value.

Untuk informasi selengkapnya, lihat Menetapkan pod ke simpul.

Meningkatkan kumpulan node Spot

Saat Anda meningkatkan kumpulan simpul Spot, AKS secara internal mengeluarkan cordon dan pemberitahuan pengeluaran, tetapi tidak ada pengurasan yang diterapkan. Tidak ada node lonjakan yang tersedia untuk peningkatan kumpulan node Spot. Di luar perubahan ini, perilaku saat meningkatkan kumpulan simpul Spot konsisten dengan jenis kumpulan simpul lainnya.

Untuk informasi selengkapnya tentang peningkatan, lihat Meningkatkan kluster AKS.

Harga maksimum untuk kumpulan Spot

Harga untuk instans Spot bervariasi, berdasarkan wilayah dan SKU. Untuk informasi selengkapnya, lihat informasi harga untuk Linux dan Windows.

Dengan harga variabel, Anda memiliki opsi untuk menetapkan harga maksimum, dalam dolar AS (USD) menggunakan hingga lima tempat desimal. Misalnya, nilai 0,98765 akan menjadi harga maksimum $0,98765 USD per jam. Jika Anda mengatur harga maks sebesar -1, instans tidak akan dibuang berdasarkan harga. Selama ada kapasitas dan kuota yang tersedia, harga untuk instans akan menjadi harga yang lebih rendah dari harga saat ini untuk instans Spot atau untuk instans standar.

Langkah berikutnya

Dalam artikel ini, Anda telah mempelajari cara menambahkan kumpulan node Spot ke kluster AKS. Untuk informasi lebih lanjut tentang cara mengontrol Pod di seluruh kumpulan simpul, lihat Praktik terbaik untuk fitur-fitur penjadwal lanjutan di AKS.