Node Problem Detector

Node Problem Detector adalah library open source yang memantau kondisi node dan mendeteksi masalah node umum, seperti masalah hardware, kernel, atau runtime penampung. Di Google Distributed Cloud, layanan ini berjalan sebagai layanan systemd di setiap node.

Mulai rilis Google Distributed Cloud 1.10.0, Node Problem Detector diaktifkan secara default.

Jika Anda memerlukan bantuan tambahan, hubungi Cloud Customer Care.

Masalah apa yang dideteksinya?

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

Fitur ini berjalan di 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 masih dianggap cukup 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 di 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 bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig. Namun, jika Anda menentukan ruang kerja dengan flag WORKSPACE_DIR, jalurnya adalah WORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig).

  • NODE_NAME: nama node yang ingin Anda ketahui informasi kesehatannya.

Cara mengaktifkan/menonaktifkan Pendeteksi Masalah Node

Berikut adalah langkah-langkah yang harus dilakukan untuk mengaktifkan Pendeteksi Masalah Node di cluster tertentu:

  1. Edit file ConfigMap cluster yang disebut node-problem-detector-config

       kubectl --kubeconfig=KUBECONFIG_PATH edit configmap \
           node-problem-detector-config --namespace=CLUSTER_NAMESPACE

    Perintah ini akan 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 bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig. Namun, jika Anda menentukan ruang kerja dengan flag WORKSPACE_DIR, jalurnya adalah WORKSPACE_DIR/CLUSTER_NAME/CLUSTER_NAME-kubeconfig).
    • CLUSTER_NAMESPACE: namespace cluster tempat Anda ingin mengaktifkan Node Problem Detector.
  2. Awalnya, node-problem-detector-config ConfigMap tidak memiliki kolom data. Tambahkan kolom data ke peta konfigurasi dengan pasangan nilai kunci berikut:

    data:
      enabled: "true"
    

Untuk menonaktifkan Node Problem Detector di namespace cluster, lakukan langkah-langkah sebelumnya 1 dan 2, tetapi pada langkah 2, ubah nilai kunci enabled menjadi 'false'.

Cara menghentikan/memulai Pendeteksi Masalah Node

Pendeteksi Masalah Node berjalan sebagai layanan systemd di setiap node. Untuk mengelola Pendeteksi 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 di node tertentu, jalankan perintah berikut:

systemctl is-active node-problem-detector

Fitur yang tidak didukung

Google Distributed Cloud tidak mendukung penyesuaian Node Problem Detector berikut:

  • Mengekspor laporan Pendeteksi Masalah Node ke sistem pemantauan lainnya, seperti Stackdriver atau Prometheus.
  • Menyesuaikan NodeConditions atau Events yang akan dicari.
  • Menjalankan skrip pemantauan yang ditentukan pengguna.

Langkah selanjutnya