Senario
Anda menerima alert Prometheus: HighMemoryUsage – nod Kubernetes <NODE_NAME> mempunyai penggunaan memori > 90%.
Gejala
- Alert menunjukkan baki memori < 10%.
- Panel memori nod pada papan pemuka Grafana meningkat mendadak.
- Sesetengah Pod berstatus OOMKilled atau Evicted.
Diagnosis
Langkah 1: Kenal pasti Nod dan Pod
kubectl get nodes -o wide | grep <NODE_NAME>
kubectl describe node <NODE_NAME> | grep -A5 "Allocated resources"
kubectl top pod --all-namespaces --sort-by=memory | head -20
Langkah 2: Manfaatkan Jejak OpenTelemetry
Jika aplikasi telah diinstrumentasi dengan OpenTelemetry, cari jejak yang berkaitan dengan nod tersebut dalam Grafana Tempo. Perhatikan span yang berkaitan dengan memori untuk mengecam perkhidmatan dan panggilan API.
Langkah 3: Kuiri Metrik Prometheus
Dalam Grafana Explore, jalankan:
sum(container_memory_working_set_bytes{node="<NODE_NAME>",container!=""}) by (pod)
Kenal pasti Pod yang menggunakan memori paling tinggi.
Arahan & Tindakan
# Semak had sumber Pod
kubectl get pod <POD_NAME> -n <NAMESPACE> -o yaml | grep -A5 resources
# Masuk ke dalam kontena untuk semak proses
kubectl exec -it <POD_NAME> -n <NAMESPACE> -- top -b -n 1 | head -10
# Jika disyaki kebocoran memori, lakukan restart secara rolling
kubectl rollout restart deployment <DEPLOYMENT_NAME> -n <NAMESPACE>
Kawalan Risiko
- Uji dalam persekitaran bukan pengeluaran terlebih dahulu.
- Sebelum mengosongkan nod (drain), pastikan DaemonSet membenarkan pengusiran.
- Ambil snapshot memori sebelum memulakan semula Pod.
Pengembalian (Rollback)
Jika penggunaan memori meningkat selepas restart, pulihkan perubahan terakhir:
kubectl rollout undo deployment/<DEPLOYMENT_NAME> -n <NAMESPACE>
Pengesahan
- Papan pemuka Grafana menunjukkan memori nod menurun ke tahap normal.
- Alert Prometheus ditutup secara automatik.
- Tiada peristiwa OOM dalam log.
Bila Perlu Hantar Tiket OpsGlobal
- Memori nod terus tidak normal walaupun setelah restart.
- Punca sebenar melibatkan komponen pihak ketiga yang memerlukan tampung.
- Perlu pelarasan kuota sumber kluster atau had Pod.
Pasukan SRE OpsGlobal menyediakan sokongan 24/7 untuk mengenal pasti dan membaiki isu infrastruktur yang kompleks dengan pantas.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu Observability dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan praktikal menggunakan Prometheus, Grafana, dan OpenTelemetry untuk menyiasat alert memori tinggi pada nod Kubernetes, meliputi simptom, diagnosis, rollback, 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.