EN: Read in English
Dunia K5: Waktu Puncak
Pilih gerai: nodeSelector dan affinity
Anda akan belajar: cara hantar pod hanya ke node yang ada label betul.
Teks BM belum disemak oleh penutur asli.
Disemak dengan Kubernetes 1.37 pada 31 Okt 2026
Masalahnya
kind-dev namespace defaultPod (dulang) fast kata Pending. Ia tak pernah bermula. Apa yang ia tunggu?
Tengok
fast.yaml bawa papan tanda. nodeSelector: Papan tanda pada pod: "hanya node dengan label ini". kata: “hanya node (gerai) dengan label ini.”
spec:
nodeSelector:
disk: ssdGerai mana boleh terima pod fast?
Pilih satu jawapan.
Cuba
Letak setiap pod di atas gerai. Baca papan tanda dulu.
Tekan satu dulang, kemudian tekan satu gerai. Atau seret dulang itu.
Dulang menunggu
- stall-a
- stall-b
- Pending
Dulang yang tak muat di mana-mana gerai menunggu di sini.
Petunjuk
fast perlu disk=ssd. slow-ok perlu disk=hdd. tray-1 tiada papan tanda: mana-mana gerai boleh.Semak
kind-dev namespace defaultItu kata-kata sebenar scheduler. Dalam bahasa mudah: satu gerai berkunci. Dua ada label salah. Tiada gerai bertanda disk=ssd.
Cuba
Beri gerai dev-worker2 papan tanda itu. Pod yang menunggu patut masuk.
kubectl label nodes dev-worker2 disk=ssdkind-dev namespace defaultdev-control-planeBukaPengurusTiada dulang di sini.
dev-workerBukaTiada dulang di sini.
dev-worker2BukaTiada dulang di sini.
- fastPending
Petunjuk
Salin arahan di atas. Kemudian lihat pod yang menunggu.Tengok
node affinity: Senarai hajat untuk node: syarat wajib dan syarat pilihan. ialah senarai hajat: syarat wajib (required) dan syarat pilihan (preferred). Pod fast perlu ssd. Ia suka zon front. Asingkan kedua-duanya.
Seret kad ke dalam kotak. Atau ketik kad, kemudian ketik kotak.
Dalam YAML, dua senarai itu nampak begini:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- { key: disk, operator: In, values: [ssd] }
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 50
preference:
matchExpressions:
- { key: zone, operator: In, values: [front] }Teka
Pod fast berjalan di dev-worker2. Sekarang anda buang label itu: kubectl label nodes dev-worker2 disk-. Apa jadi pada pod itu?
Pilih satu jawapan.
Anda berjaya!
Kini anda boleh hantar pod ke gerai yang betul dengan label.
Nak tahu lebih (pilihan)
kubectl get nodes --show-labels senaraikan label setiap gerai. Label terbina termasuk kubernetes.io/hostname dan, dalam cloud, topology.kubernetes.io/zone. Pod affinity letak pod dekat pod lain. Anti-affinity jauhkan mereka.
Latihan sebenar (pilihan): guna kluster kind untuk dibuang. Labelkan satu pekerja, kemudian apply pod dengan nodeSelector.
English
The fast tray says Pending. It never starts. What is it waiting for?
fast.yaml carries a sign. A nodeSelector says: “only stalls with this label.”
spec:
nodeSelector:
disk: ssdWhich stall may take the fast tray?
Put every tray on a stall. Read the signs first.
Those are the scheduler’s real words. In plain words: one stall is locked. Two have the wrong label. No stall says disk=ssd.
Give stall dev-worker2 the sign. The waiting tray should move in.
kubectl label nodes dev-worker2 disk=ssdNode affinity is a wish list: must-haves (required) and nice-to-haves (preferred). The fast tray needs ssd. It would like the front zone. Sort them.
In YAML, the two lists look like this:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- { key: disk, operator: In, values: [ssd] }
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 50
preference:
matchExpressions:
- { key: zone, operator: In, values: [front] }
The fast tray runs on dev-worker2. Now you remove the label: kubectl label nodes dev-worker2 disk-. What happens to the tray?
You can now send a tray to the right stall with labels.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Kubernetes: assigning pods to nodes · Kubernetes: well-known labels · kubectl label
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?