Senario
Seorang nod pekerja mengalami tekanan cakera akibat ruang cakera rendah, menyebabkan pod diusir dan tersekat dalam status Pending.
Gejala
kubectl get nodesmenunjukkan keadaan nodDiskPressure- Pod yang diusir menunjukkan status
Pending;kubectl describe podmendedahkan0/1 nodes are available: 1 node had taint {node.kubernetes.io/disk-pressure: } kubectl get events -n <namespace>menunjukkan peristiwaEvicted
Diagnosis
- Periksa keadaan nod:
bash kubectl describe node <nama-nod> | grep -A5 ConditionsCariDiskPressureyang ditetapkan kepadaTrue. - SSH ke nod dan periksa penggunaan cakera:
bash ssh <ip-nod> df -hKenal pasti partisi yang hampir 100% (biasanya/var/lib/dockeratau/var/lib/kubelet). - Pilihan: Gunakan
kubectl top nodesuntuk memeriksa tekanan sumber keseluruhan.
Kawalan Risiko
- Hentikan penjadualan: Cordonkan nod serta-merta untuk mengelakkan pod baru.
bash kubectl cordon <nama-nod> - Keluarkan beban kerja: Jika pemulihan tidak segera, usir semua pod bukan daemonset dengan selamat:
bash kubectl drain <nama-nod> --ignore-daemonsets --delete-emptydir-dataNota keselamatan:--delete-emptydir-datamemadam data emptyDir; pastikan ia telah disandarkan atau boleh dibuang. - Pelihara pod sistem: Pod DaemonSet (contohnya kube-proxy) kekal, fungsi asas nod terpelihara.
Tindakan Pemulihan
- Bebaskan ruang cakera:
- Buang imej kontena yang tidak digunakan:
docker image prune -a(memerlukan akses nod) - Potong log kontena:truncate -s 0 /var/lib/docker/containers/*/*-json.log- Bersihkan log kubelet:journalctl --vacuum-size=500M - Sahkan tekanan berkurang:
bash kubectl describe node <nama-nod> | grep -A5 ConditionsPastikanDiskPressureadalahFalse.
Pengembalian
- Aktifkan semula penjadualan:
bash kubectl uncordon <nama-nod> - Pulihkan pod yang diusir: Biasanya automatik melalui pengawal; jika tidak, skala secara manual:
bash kubectl scale deployment <nama-deployment> --replicas=<kiraan-asal> - Sahkan status pod:
bash kubectl get pods -o wide | grep <nama-nod>Pastikan pod berjalan dan tidak diusir semula.
Pengesahan
- Kesihatan nod: Periksa semula keadaan nod –
DiskPressuresepatutnyaFalse,Readynormal. - Status pod: Semua pod sepatutnya
RunningatauCompleted. - Peristiwa kluster:
kubectl get events --all-namespacestiada pengusiran atau ralat luar biasa. - Metrik perniagaan: Sahkan latensi aplikasi, kadar ralat, dll., telah kembali ke garis dasar.
Bila Perlu Hantar Tiket OpsGlobal
- Pemulihan automatik gagal: Tekanan cakera nod berterusan walaupun langkah di atas.
- Berbilang nod terjejas: Dua atau lebih nod pekerja menunjukkan tekanan serupa, mungkin menandakan isu storan.
- Kebimbangan kehilangan data: Data kritikal hilang akibat pengusiran (contohnya, perlu pemulihan volum kekal).
- Kesan peringkat kluster: Nod satah kawalan juga tertekan, atau pelayan API menjadi perlahan.
Semasa membuat tiket, sertakan: nama nod, cap waktu peristiwa, output kubectl describe node, dan tangkapan skrin penggunaan cakera.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Kubernetes dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Artikel ini membincangkan senario sebenar insiden Kubernetes di mana nod mengalami tekanan cakera, meliputi pengenalpastian gejala, diagnosis, arahan, kawalan risiko, pemulihan, pengembalian, pengesahan, dan kriteria untuk menghantar 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.