Senario
Kluster Kubernetes pengeluaran mengalami beberapa pod yang berulang kali ranap dan memasuki keadaan CrashLoopBackOff, menyebabkan kemerosotan perkhidmatan.
Gejala
kubectl get podsmenunjukkan banyak keadaan CrashLoopBackOffkubectl describe podmenunjukkan Last State sebagai Error atau OOMKilled- Node menunjukkan NotReady atau tekanan memori/CPU yang tinggi (
kubectl top nodes)
Diagnosis
- Periksa kesihatan nod:
kubectl get nodes -o wideuntuk melihat status,journalctl -u kubeletuntuk log kubelet. - Lihat peristiwa:
kubectl get events --sort-by=.metadata.creationTimestampuntuk mengenal pasti garis masa. - Analisis log pod:
kubectl logs <pod> --previousuntuk log ranap terakhir. - Periksa kuota sumber:
kubectl describe quotauntuk mengesahkan had yang dilampaui.
Arahan
# Senarai pod yang ranap di semua ruang nama
kubectl get pods --all-namespaces | grep -E 'CrashLoop|Error|OOM'
# Dapatkan peristiwa terperinci untuk pod tertentu
kubectl describe pod my-app-5d8c9b7f6-abcde -n production
# Periksa sumber nod
kubectl top nodes
# Lihat penggunaan sumber pod pada nod
kubectl describe node worker-node-1 | grep -A 5 'Non-terminated Pods'
Kawalan Risiko
- Sebelum mengubah suai sumber, kordon nod:
kubectl cordon <node>untuk mengelakkan pod baru dijadualkan. - Keringkan nod dengan selamat:
kubectl drain <node> --ignore-daemonsets --delete-local-data - Sahkan kapasiti nod yang mencukupi sebelum menambah permintaan/had sumber.
Pengembalian
Jika disebabkan oleh perubahan konfigurasi terkini:
- Kembalikan deployment: kubectl rollout undo deployment/my-app
- Kembalikan ke semakan tertentu: kubectl rollout undo deployment/my-app --to-revision=2
- Sahkan pengembalian: kubectl rollout status deployment/my-app
Pengesahan
- Periksa status pod:
kubectl get pods -o wideuntuk mengesahkan Running - Periksa titik akhir perkhidmatan:
kubectl get endpoints <service>menunjukkan IP yang betul - Semak kesihatan aplikasi: Hantar permintaan HTTP untuk mengesahkan respons yang betul
- Pantau metrik: Periksa pemantauan kluster (contohnya Prometheus) untuk CPU/memori yang pulih
Bila Perlu Hantar Tiket OpsGlobal
- Nod tidak dapat dicapai sepenuhnya dan tidak boleh dikeringkan
- Kegagalan volume persisten menyebabkan data tidak tersedia
- Isu komponen satah kawalan (etcd, apiserver)
- Tampalan segera diperlukan tetapi kurang kepakaran dalaman
- Isu rangkaian kompleks yang tidak dapat diselesaikan dalam masa 24 jam
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Kubernetes dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan praktikal untuk SRE menangani insiden Kubernetes biasa, dari pengesanan gejala hingga pengembalian dan eskalasi.
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.