Senario
Sebuah nod dalam kluster Kubernetes produksi menjadi NotReady, menyebabkan beban kerja diusir atau tidak dapat dijadualkan.
Gejala
- Status nod menunjukkan
NotReadymelaluikubectl get nodes - Log kubelet ralat:
journalctl -u kubelet -fmenunjukkan tamat masa atau kekurangan sumber - Penggunaan CPU/memori tinggi pada nod (periksa dengan
top,free -h,df -h) - Pod pada nod dalam keadaan Pending atau Unknown
Diagnosis
- Periksa status nod:
kubectl get nodes -o wide - Huraikan nod:
kubectl describe node <nama-nod>untuk peristiwa dan keadaan - Lihat log kubelet:
journalctl -u kubelet --since "10 min ago" - Sumber sistem:
top,htop,free -m,df -h,iostat -x - Runtime kontena:
crictl psataudocker ps - Pemalam rangkaian:
kubectl get pods -n kube-systemuntuk memeriksa pod CNI
Perintah Utama
# Kesihatan nod
kubectl get nodes
kubectl describe node <nama-nod>
kubectl get pods --all-namespaces -o wide | grep <nama-nod>
# Sumber sistem
top -c -o %CPU
free -h
vmstat 1 5
# Log kubelet
journalctl -u kubelet --no-pager -n 100
# Mula semula kubelet (berisiko)
systemctl restart kubelet
# Salir nod (hati-hati)
kubectl drain <nama-nod> --ignore-daemonsets --delete-emptydir-data
Kawalan Risiko
- Kenal pasti jika nod adalah master – jangan salir atau mula semula kubelet pada nod master tanpa kelulusan jelas, kerana ia boleh menjejaskan satah kawalan.
- Pastikan akses luar jalur (IPMI, BMC) disediakan sekiranya SSH terputus.
- Pastikan sandaran atau snapshot data kritikal terkini.
- Sebelum menyalir, nilai kesan beban kerja dan elakkan waktu puncak.
Langkah Rollback
Jika isu berpunca daripada perubahan terkini (cth., kemas kini konfigurasi):
1. Kembalikan konfigurasi kubelet: systemctl stop kubelet; cp /etc/kubernetes/kubelet.conf.bak /etc/kubernetes/kubelet.conf; systemctl start kubelet
2. Jika mula semula kubelet tidak membantu, pertimbangkan pembersihan sumber (buang log usang, fail sementara) atau menambah sumber.
3. Sebagai langkah terakhir, but semula nod: reboot (risiko kehilangan data).
Pengesahan
- Status nod menjadi Ready:
kubectl get nodes - Pod yang diusir dijadualkan semula:
kubectl get pods -o wide - Log kubelet tiada ralat baru
- Pemantauan aplikasi pulih
Bila Perlu Menyerahkan Tiket OpsGlobal
- Nod masih NotReady selepas semua langkah bantuan sendiri (termasuk mula semula kubelet dan but semula nod)
- Isu perkakasan disyaki (kegagalan cakera, ralat memori)
- Kerosakan data atau insiden keselamatan
- Perlu pasukan infrastruktur mengganti atau menambah nod
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu DevOps dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan komprehensif untuk pasukan SRE menangani isu produksi Linux, fokus kepada kegagalan nod Kubernetes. Merangkumi gejala, diagnosis, perintah, kawalan risiko, rollback, pengesahan, dan bila perlu menghubungi 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.