EN: Read in English
Dunia K5: Waktu Puncak
Taint, toleration dan sebaran
Anda akan belajar: cara kunci gerai, beri sesetengah pod anak kunci, dan sebarkan pod.
Teks BM belum disemak oleh penutur asli.
Disemak dengan Kubernetes 1.37 pada 31 Okt 2026
Masalahnya
Node (gerai) dev-worker2 ada ketuhar besar. Ia untuk hidangan ketuhar sahaja. Tapi pod (dulang) kedai asyik mendarat di situ. Macam mana nak halang mereka?
Pilih satu jawapan.
Tengok
kind-dev namespace defaulttaint: Kunci pada node. Pod tanpa anak kunci tak boleh masuk. ialah kunci pada gerai. Yang ini datang daripada kubectl taint nodes dev-worker2 oven=big:NoSchedule. Semua pod kedai pergi ke dev-worker.
Cuba
toleration: Anak kunci pada pod. Ia buka kunci node, tapi tak tarik pod ke sana. ialah anak kunci, dibawa oleh pod. Beri anak kunci ketuhar kepada oven-tray. Kemudian letak setiap pod.
Tekan satu dulang, kemudian tekan satu gerai. Atau seret dulang itu.
Dulang menunggu
Kunci (toleration)
- stall-a
- oven-stall
- Pending
Dulang yang tak muat di mana-mana gerai menunggu di sini.
Petunjuk
Tekan anak kunci, kemudian tekan oven-tray. Kini ia boleh masuk oven-stall.Teka
Satu pod ada anak kunci ketuhar, tapi tiada papan tanda (tiada nodeSelector). Di mana ia boleh mendarat?
Pilih satu jawapan.
Cuba
oven.yaml ada kedua-duanya: anak kunci dan papan tanda. Apply fail itu. Kemudian semak gerai mana yang ia pilih.
kind-dev namespace defaultdev-control-planeBukaPengurusTiada dulang di sini.
dev-workerBuka- shop·bcbf7
- shop·tbgr4
- shop·w6dzr
dev-worker2BukaTiada dulang di sini.
Petunjuk
Taipkubectl apply -f oven.yaml, kemudian kubectl get pod oven -o wide.Tengok
Jangan letak semua pod dalam satu gerai. topology spread: Sebar pod ke banyak node, supaya satu node tutup tak beri kesan besar. jaga gerai seimbang. maxSkew: 1 maksudnya bilangan pod antara gerai beza paling banyak 1. 4 pod, 2 gerai: pembahagian mana yang dibenarkan?
Pilih satu jawapan.
Dalam YAML, di dalam templat pod:
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels: { app: shop }Semak
Betul atau tidak? Asingkan setiap ayat.
Seret kad ke dalam kotak. Atau ketik kad, kemudian ketik kotak.
Anda berjaya!
Kini anda boleh kunci gerai, beri anak kunci, dan sebarkan pod.
Nak tahu lebih (pilihan)
Kesan: NoSchedule, PreferNoSchedule (cuba elak) dan NoExecute (turut mengusir). Tanda tolak di hujung buang taint: kubectl taint nodes dev-worker2 oven=big:NoSchedule-. Dengan whenUnsatisfiable: DoNotSchedule, sebaran jadi peraturan keras. Gerai berkunci masih boleh dikira sebagai domain. Baca dokumen sebelum guna.
Latihan sebenar (pilihan): taint satu pekerja kind, kemudian buang semula.
English
Stall dev-worker2 has the big oven. It is for oven dishes only. But shop trays keep landing there. How do you keep them out?
A taint is a lock on a stall. This one came from kubectl taint nodes dev-worker2 oven=big:NoSchedule. All shop trays went to dev-worker.
A toleration is the key, carried by the tray. Hand the oven key to oven-tray. Then place every tray.
A tray has the oven key, but no sign (no nodeSelector). Where can it land?
oven.yaml has both: the key and the sign. Apply it. Then check which stall it chose.
kubectl apply -f oven.yaml, then kubectl get pod oven -o wide.Don’t put all trays in one stall. Topology spread keeps stalls even. maxSkew: 1 means stall counts differ by 1 at most. 4 trays, 2 stalls: which split is allowed?
In YAML, inside the pod template:
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels: { app: shop }
True or not? Sort each sentence.
You can now lock a stall, hand out keys, and spread trays out.
Anda dah siapkan ini. Latihan lagi pun bagus!
Dokumentasi rasmi: Kubernetes: taints and tolerations · Kubernetes: pod topology spread · kubectl taint
Anda dah belajar 25 minit. Rehat sekejap bantu otak anda.
Pecutan selesai! Fokus yang hebat. Regangkan badan seminit?