Pendeteksi Masalah Node

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 adalah bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig. Namun, jika Anda menentukan ruang kerja Anda dengan tanda WORKSPACE_DIR, jalurnya adalah WORKSPACE_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:

  1. Edit file ConfigMap cluster yang bernama node-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 adalah WORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig).
    • CLUSTER_NAMESPACE: namespace cluster tempat Anda ingin mengaktifkan Detektor Masalah Node.
  2. Awalnya, node-problem-detector-config ConfigMap tidak memiliki kolom data. Tambahkan kolom data 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 atau Events yang akan dicari.
  • Menjalankan skrip pemantauan yang ditentukan pengguna.