Senario
Satu nod tidak berfungsi akibat kegagalan perkakasan atau kernel panic, menyebabkan pod pada nod tersebut tidak dapat diakses dan menjejaskan ketersediaan perkhidmatan.
Gejala
kubectl get nodesmenunjukkan status NotReady untuk nod tersebut.- Pod yang terjejas berada dalam status Pending atau Unknown.
- Makluman diaktifkan (contohnya NodeDown, PodCrashLoopBackOff).
- Pengguna melaporkan gangguan perkhidmatan.
Diagnostik
- Kenalpasti nod yang tidak sihat:
kubectl get nodes. - Periksa keadaan nod:
kubectl describe node <nama-nod>— perhatikanReady: Falsedan sebabnya (cth.KubeletNotReadyatauNodeStatusUnknown). - Semak peristiwa kluster terkini:
kubectl get events --sort-by='.lastTimestamp'. - Jika boleh, akses nod (melalui SSH atau out-of-band) dan periksa log kubelet:
journalctl -u kubelet -n 100. - Sahkan kesihatan satah kawalan (etcd, scheduler, dsb.).
Arahan
Sekatan nod (cegah pod baru)
kubectl cordon <nama-nod>
Keringkan nod (halau pod)
kubectl drain <nama-nod> --ignore-daemonsets --delete-emptydir-data
Catatan Risiko:
- Perintah drain tidak akan mencipta semula pod kosong (tanpa pengawal).
- Mengeringkan StatefulSet dengan replika=1 boleh menyebabkan kehilangan data.
- Penggunaan --delete-emptydir-data memadam data sementara; pastikan ia selamat.
Buka sekatan selepas pemulihan
kubectl uncordon <nama-nod>
Kawalan Risiko
- Konfigurasikan PodDisruptionBudgets (PDB) untuk beban kerja kritikal bagi mengehadkan gangguan semasa pengeringan.
- Gunakan replika berganda dan anti-kedekatan untuk aplikasi berkeadaan.
- Uji prosedur pengeringan secara berkala dan sandarkan etcd.
- Sebelum mengeringkan, sahkan bahawa PVC yang dipasang (terutama RWO) boleh dipasang semula di tempat lain.
Pengembalian
- Jika pengeringan menyebabkan masalah perkhidmatan, segera jalankan
kubectl uncordon <nama-nod>dan hentikan perintah drain (Ctrl+C). - Jika nod mati secara kekal, padam objek nod:
kubectl delete node <nama-nod>— penjadualan semula pod akan berlaku secara automatik.
Pengesahan
- Selepas pemulihan nod, sahkan nod adalah Ready:
kubectl get nodes. - Pastikan semua pod berjalan pada nod yang sihat:
kubectl get pods -o wide. - Sahkan titik akhir perkhidmatan dan latensi kembali normal.
Bila Perlu Mengemukakan Tiket OpsGlobal
- Pelbagai nod gagal atau nod terus bertukar status.
- Komponen satah kawalan terjejas (cth. etcd tidak tersedia).
- Risiko kehilangan data kekal wujud.
- Pod tidak dapat dijadualkan semula selepas pengeringan akibat kekangan sumber atau isu konfigurasi.
- Analisis punca utama diperlukan untuk insiden berulang.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Kubernetes dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan praktikal untuk menangani kegagalan nod dalam Kubernetes, termasuk senario, gejala, arahan diagnostik, kawalan risiko, pengembalian, pengesahan, dan bila perlu mengemukakan tiket OpsGlobal.
Langkah Penyelesaian
Sahkan impak dan perubahan terkini, kumpul log, konfigurasi dan metrik, kemudian baiki mengikut risiko.
Contoh Arahan
Gantikan contoh dengan nama sumber sebenar dan simpan kata laluan, token atau kunci dalam pembolehubah persekitaran.
Risiko
Sebelum operasi produksi, semak sandaran, akses, tetingkap perubahan dan pelan rollback.
Pelan Rollback
Simpan konfigurasi dan versi asal; rollback konfigurasi, imej atau perubahan pangkalan data jika metrik tidak normal.
Senarai Serahan
Rekod punca isu, arahan penting, langkah pembaikan, hasil pengesahan dan cadangan susulan.
Perlu bantuan isu teknikal serupa?
Jika pelayan, Kubernetes, Docker, CI/CD, pangkalan data atau pemantauan anda bermasalah, hantar log dan konfigurasi untuk diagnosis jauh.