Mengadaptasi aplikasi untuk digunakan dalam cluster Kubernetes mixed-OS
Berlaku untuk: AKS di Azure Local 22H2, AKS di Windows Server
AKS yang diaktifkan oleh Arc memungkinkan Anda menjalankan kluster Kubernetes dengan simpul Linux dan Windows, tetapi Anda harus melakukan pengeditan kecil pada aplikasi untuk digunakan dalam kluster MIXED-OS ini. Panduan cara ini menjelaskan cara memastikan aplikasi Anda dijadwalkan pada OS host yang tepat menggunakan pemilih node atau taint dan toleransi.
Artikel ini mengasumsikan pemahaman dasar tentang konsep Kube. Untuk informasi selengkapnya, lihat Konsep inti Kubernetes untuk AKS yang diaktifkan oleh Arc.
Pemilih simpul
Pemilih simpul adalah bidang sederhana dalam YAML spesifikasi pod yang membatasi pod untuk hanya dijadwalkan ke simpul sehat yang cocok dengan sistem operasi. Dalam YAML spesifikasi pod Anda, tentukan nodeSelector
nilai Windows atau Linux, seperti yang ditunjukkan dalam contoh berikut:
kubernetes.io/os = Windows
atau,
kubernetes.io/os = Linux
Untuk informasi selengkapnya tentang pemilih simpul, lihat pemilih simpul.
Taint dan toleransi
Taint dan toleransi bekerja sama untuk memastikan bahwa pod tidak dijadwalkan secara tidak sengaja pada simpul. Sebuah node dapat "dinodai" untuk menolak pod yang tidak secara eksplisit mentolerir taint-nya melalui "toleration" dalam YAML spesifikasi pod.
Simpul OS Windows di AKS Arc dapat dinodai saat dibuat dengan perintah New-AksHciNodePool atau New-AksHciCluster . Anda juga dapat menggunakan perintah ini untuk men-taint node OS Linux. Contoh berikut menodai simpul Windows.
Terapkan taint ke kluster baru
Jika Anda juga membuat kluster baru, jalankan perintah berikut untuk membuat kumpulan simpul Windows dengan taint. Jika Anda memiliki kluster yang sudah ada yang ingin Anda tambahkan kumpulan simpul dengan taint, lihat contoh berikutnya, yang menggunakan New-AksHciNodePool
perintah .
New-AksHciCluster -name mycluster -nodePoolName taintnp -nodeCount 1 -osType Windows -osSku Windows2022 -taints sku=Windows:NoSchedule
Menambahkan kumpulan simpul ternoda ke kluster yang ada
Untuk menambahkan kumpulan simpul yang tercemar ke kluster yang ada, jalankan perintah berikut:
New-AksHciNodePool -clusterName <cluster-name> -nodePoolNAme taintnp -count 1 -osType Windows -osSku Windows2022 -taints sku=Windows:NoSchedule
Jalankan perintah berikut ini untuk memeriksa apakah kumpulan simpul berhasil digunakan dengan cemaran:
Get-AksHciNodePool -clusterName <cluster-name> -name taintnp
Contoh output:
Status : {Phase, Details}
ClusterName : mycluster
NodePoolName : taintnp
Version : v1.20.7-kvapkg.1
OsType : Windows
NodeCount : 0
VmSize : Standard_K8S3_v1
Phase : Deployed
Taints : {sku=Windows:NoSchedule}
Tentukan toleransi untuk pod
Anda dapat menentukan toleransi untuk pod dalam YAML spesifikasi pod. Toleransi berikut "cocok" taint yang dibuat oleh kubectl
baris taint yang diperlihatkan dalam contoh sebelumnya. Hasilnya adalah bahwa pod dengan toleransi dapat menjadwalkan ke node yang ternoda.
tolerations:
- key: node.kubernetes.io/os
operator: Equal
value: Windows
effect: NoSchedule
Langkah-langkah di bagian ini berfungsi dengan baik jika Anda mengontrol spesifikasi pod yang Anda sebarkan. Namun, dalam beberapa kasus, pengguna memiliki sejumlah besar penyebaran yang sudah ada sebelumnya untuk kontainer Linux, serta ekosistem konfigurasi umum, seperti Bagan helm komunitas. Anda tidak akan memiliki akses ke spesifikasi pod kecuali Anda ingin mengunduh dan mengedit bagan.
Jika Anda menyebarkan bagan Helm ini ke lingkungan kluster campuran dengan simpul pekerja Linux dan Windows, pod aplikasi Anda gagal dengan kesalahan "ImagePullBackOff". Contohnya:
kubectl get pods
NAMESPACE NAME READY STATUS RESTARTS AGE
default nginx-deployment-558fc78868-795dp 0/1 ImagePullBackOff 0 6m24s
default nginx-deployment-6b474476c4-gpb77 0/1 ImagePullBackOff 0 11m
Dalam hal ini, Anda dapat menggunakan taint untuk membantu hal ini. Simpul Windows Server dapat dinodai dengan pasangan node.kubernetes.io/os=windows:NoSchedule
kunci-nilai .
Untuk informasi selengkapnya tentang taint dan toleransi, lihat Taint dan Toleransi.
Langkah berikutnya
Dalam panduan cara ini, Anda belajar cara menambahkan pemilih node atau noda dan toleransi ke kluster Kubernetes Anda menggunakan kubectl. Selanjutnya, Anda dapat: