Node Problem Detector adalah library open source yang memantau kondisi node dan mendeteksi masalah node umum, seperti masalah runtime hardware, kernel, atau container. Pada GDCV untuk Bare Metal, layanan ini berjalan sebagai layanan yang diatur sistem pada setiap node.
Mulai dari GDCV untuk rilis Bare Metal 1.10.0, Node Problem Detector diaktifkan secara default.
Masalah apa yang terdeteksi?
Pendeteksi masalah node dapat mendeteksi jenis masalah berikut:
- Masalah runtime container, seperti daemon runtime yang tidak responsif
- Masalah hardware, seperti kegagalan CPU, memori, atau disk
- Masalah kernel, seperti kondisi deadlock kernel atau sistem file yang rusak
Library ini berjalan pada node dan melaporkan masalah ke server Kubernetes API
sebagai NodeCondition
atau sebagai Event
.
(NodeCondition
adalah masalah yang membuat node tidak dapat menjalankan pod, sedangkan
Event
adalah masalah sementara yang memiliki efek terbatas pada pod, tetapi
tetap dianggap penting untuk dilaporkan).
Beberapa NodeConditions
yang ditemukan oleh Pendeteksi Masalah Node adalah:
KernelDeadlock
ReadonlyFilesystem
FrequentKubeletRestart
FrequentDockerRestart
FrequentContainerdRestart
FrequentUnregisterNetDevice
KubeletUnhealthy
ContainerRuntimeUnhealthy
CorruptDockerOverlay2
Beberapa contoh jenis Events
yang dilaporkan oleh Pendeteksi Masalah Node adalah:
Warning TaskHung node/vm-worker-1-user-a12fabb4a99cb92-ddfce8832fd90f6f.lab.anthos kernel: task docker:7 blocked for more than 300 seconds.
Warning KernelOops node/vm-worker-1-user-a12fabb4a99cb92-ddfce8832fd90f6f.lab.anthos kernel: BUG: unable to handle kernel NULL pointer dereference at 00x0.
Cara melihat masalah yang terdeteksi
Jalankan perintah kubectl describe
berikut pada node untuk mencari
NodeConditions
dan Events
:
kubectl --kubeconfig=KUBECONFIG_PATH describe node NODE_NAME
Dalam perintah, ganti entri berikut dengan informasi khusus untuk lingkungan Anda:
KUBECONFIG_PATH
: jalur ke file kubeconfig cluster target. (Jalur ke file kubeconfig biasanya adalahbmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Namun, jika Anda menentukan ruang kerja Anda dengan tanda WORKSPACE_DIR, jalurnya adalahWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
).NODE_NAME
: nama node yang Anda inginkan informasi kesehatannya.
Cara mengaktifkan/menonaktifkan Pendeteksi Masalah Node
Berikut adalah langkah-langkah yang harus dilakukan untuk mengaktifkan Node Problem Detector di cluster tertentu:
Edit file
ConfigMap
cluster yang bernamanode-problem-detector-config
kubectl --kubeconfig=KUBECONFIG_PATH edit configmap \ node-problem-detector-config --namespace=CLUSTER_NAMESPACE
Perintah ini otomatis memulai editor teks (seperti vim atau nano) tempat Anda dapat mengedit file
node-problem-detector-config
. Dalam perintah, ganti entri berikut dengan informasi khusus untuk lingkungan cluster Anda:- KUBECONFIG_PATH: jalur ke file kubeconfig
cluster admin. (Jalur ke file kubeconfig biasanya adalah
bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
. Namun, jika Anda menentukan ruang kerja dengan tanda WORKSPACE_DIR, jalurnya adalahWORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig
). - CLUSTER_NAMESPACE: namespace cluster tempat Anda ingin mengaktifkan Detektor Masalah Node.
- KUBECONFIG_PATH: jalur ke file kubeconfig
cluster admin. (Jalur ke file kubeconfig biasanya adalah
Awalnya,
node-problem-detector-config
ConfigMap
tidak memiliki kolomdata
. Tambahkan kolomdata
ke peta konfigurasi dengan key-value pair berikut:data: enabled: "true"
Untuk menonaktifkan Node Problem Detector dalam namespace cluster, lakukan langkah 1 dan 2 sebelumnya, tetapi pada langkah 2, ubah nilai kunci enabled
menjadi 'false'.
Cara menghentikan/memulai Detektor Masalah Node
Pendeteksi Masalah Node berjalan sebagai layanan systemd
di setiap node. Untuk mengelola Detektor Masalah Node untuk node tertentu, gunakan SSH untuk mengakses node, dan jalankan perintah systemctl
berikut.
Untuk menonaktifkan Node Problem Detector, jalankan perintah berikut:
systemctl stop node-problem-detector
Untuk memulai ulang Node Problem Detector, jalankan perintah berikut:
systemctl restart node-problem-detector
Untuk memeriksa apakah Node Problem Detector berjalan pada node tertentu, jalankan perintah berikut:
systemctl is-active node-problem-detector
Fitur yang tidak didukung
GDCV untuk Bare Metal tidak mendukung penyesuaian Detektor Masalah Node berikut:
- Mengekspor laporan Detektor Masalah Node ke sistem pemantauan lain, seperti Stackdriver atau Prometheus.
- Menyesuaikan
NodeConditions
atauEvents
yang akan dicari. - Menjalankan skrip pemantauan yang ditentukan pengguna.