Bagikan melalui


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:NoSchedulekunci-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: