Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Node Problem Detector (NPD) adalah komponen Kubernetes sumber terbuka yang mendeteksi masalah terkait node dan melaporkannya. Dijalankan sebagai layanan systemd di setiap node dalam kluster dan mengumpulkan berbagai metrik serta informasi sistem, seperti penggunaan CPU, penggunaan disk, dan konektivitas jaringan. Ketika mendeteksi masalah, itu menghasilkan peristiwa dan/atau kondisi node. Layanan Azure Kubernetes (AKS) menggunakan NPD untuk memonitor dan mengelola node dalam kluster Kubernetes yang berjalan di platform cloud Azure. Ekstensi AKS Linux mengaktifkan NPD secara default.
Catatan
Peningkatan ke NPD tidak bergantung pada citra simpul dan proses pembaruan versi Kubernetes. Jika kumpulan simpul tidak sehat (yaitu, dalam keadaan gagal), versi NPD baru tidak diinstal.
Kondisi Node
Kondisi node menunjukkan masalah permanen yang membuat node tidak tersedia. AKS menggunakan kondisi node berikut dari NPD untuk mengungkap masalah permanen pada node tersebut. NPD juga memancarkan event Kubernetes yang sesuai.
| Jenis Daemon Masalah | NodeCondition | Alasan | Jenis komputasi |
|---|---|---|---|
| CustomPluginMonitor | Masalah Kerusakan Sistem File | Kerusakan Sistem Berkas Terdeteksi | Tujuan umum |
| CustomPluginMonitor | KubeletProblem | KubeletIsDown | Tujuan umum |
| CustomPluginMonitor | MasalahRuntimeContainer | Container runtime sedang tidak beroperasi. | Tujuan umum |
| CustomPluginMonitor | VMEventScheduled | VMEventScheduled | Tujuan umum |
| CustomPluginMonitor | SeringMencabutPendaftaranPerangkatJaringan | UnregisterNetDevice | Tujuan umum |
| CustomPluginMonitor | FrequentKubeletRestart | FrequentKubeletRestart | Tujuan umum |
| CustomPluginMonitor | FrequentContainerdRestart | FrequentContainerdRestart | Tujuan umum |
| CustomPluginMonitor | SeringMulaiUlangDocker | SeringMulaiUlangDocker | Tujuan umum |
| CustomPluginMonitor | GPUMissing | Jumlah GPU yang diamati tidak cocok dengan jumlah GPU yang diharapkan | Hanya GPU |
| CustomPluginMonitor | Status NVLink Tidak Aktif | Status NVLink Tidak Aktif | Hanya GPU |
| CustomPluginMonitor | XIDErrors | Kesalahan XID ada di log kernel | Hanya GPU |
| CustomPluginMonitor | IBLinkFlapping | Konektivitas perangkat InfiniBand terputus-terputus | Hanya GPU |
| CustomPluginMonitor | Pembatasan Kecepatan Jam GPU (GPUClockThrottling) | Pembatasan jam GPU bermasalah terdeteksi | Hanya GPU |
| CustomPluginMonitor | PluginPerangkatNvidiaTidakSehat | Layanan plugin perangkat NVIDIA tidak aktif | Hanya GPU (GPU terkelola) |
| SystemLogMonitor | KernelDeadlock | DockerHung | Tujuan umum |
| SystemLogMonitor | ReadonlyFilesystem | Sistem FileHanyaBaca | Tujuan umum |
Catatan
Kondisi GPU only berlaku untuk semua node pool GPU yang menggunakan driver GPU yang dikelola oleh AKS (node pool tidak dibuat dengan --gpu-driver none). Kondisi GPU only (managed GPU) hanya berlaku untuk kumpulan simpul dengan pengalaman GPU yang dikelola sepenuhnya diaktifkan. Pemantauan kesehatan GPU didukung pada kumpulan simpul GPU standar dan GPU yang mendukung MIG.
Peristiwa
NPD memancarkan kejadian yang dilengkapi dengan informasi yang relevan untuk membantu Anda mendiagnosis masalah mendasar.
| Jenis Daemon Masalah | Alasan | Frekuensi | Deskripsi | Tindakan |
|---|---|---|---|---|
| CustomPluginMonitor | EgressBlocked | 30 menit | Peristiwa ini memeriksa konektivitas eksternal ke titik akhir | Periksa apakah firewall atau NSG memblokir konektivitas ke titik akhir yang ditandai |
| CustomPluginMonitor | Kerusakan Sistem Berkas Terdeteksi | 5 menit | Ini memeriksa kerusakan sistem file yang disebabkan oleh Docker | |
| CustomPluginMonitor | KubeletIsDown | 30 detik | Ini memeriksa apakah layanan kubelet berjalan dan sehat | |
| CustomPluginMonitor | Container runtime sedang tidak beroperasi. | 30 detik | Pemeriksaan ini memeriksa apakah runtime kontainer, seperti containerd, sedang berjalan dan dalam kondisi baik. | |
| CustomPluginMonitor | FreezeScheduled | 1 menit | Kejadian ini memeriksa apakah Peristiwa Beku dijadwalkan pada simpul. Lihat https://aka.ms/aks/scheduledevents untuk informasi lebih lanjut | |
| CustomPluginMonitor | Jadwal Ulang Mulai | 1 menit | Kejadian ini memeriksa apakah peristiwa reboot dijadwalkan pada simpul Check https://aka.ms/aks/scheduledevents untuk informasi lebih lanjut | |
| CustomPluginMonitor | Penjadwalan Ulang Penerapan | 1 menit | Acara ini memeriksa apakah Acara Penempatan Ulang dijadwalkan pada node. Lihat https://aka.ms/aks/scheduledevents untuk informasi lebih lanjut | |
| CustomPluginMonitor | Terminasikan Terjadwal | 1 menit | Peristiwa ini memeriksa apakah Peristiwa Penghentian dijadwalkan pada node. Lihat https://aka.ms/aks/scheduledevents untuk informasi lebih lanjut | |
| CustomPluginMonitor | Dijadwalkan Ulang | 2 detik | Kejadian ini memeriksa apakah Peristiwa Preemptif dijadwalkan pada node. Lihat https://aka.ms/aks/scheduledevents untuk informasi lebih lanjut | |
| CustomPluginMonitor | DNSProblem | |||
| SystemLogMonitor | OOMKilling | |||
| SystemLogMonitor | TaskHung | |||
| SystemLogMonitor | UnregisterNetDevice | |||
| SystemLogMonitor | KernelOops | |||
| SystemLogMonitor | DockerSocketTidakDapatTerhubung | |||
| SystemLogMonitor | KubeletRPCDeadlineExceeded | |||
| SystemLogMonitor | KubeletRPCNoSuchContainer | |||
| SystemLogMonitor | CNICannotStatFS | |||
| SystemLogMonitor | PLEGTidak Sehat | |||
| SystemLogMonitor | KubeletStart | |||
| SystemLogMonitor | DockerStart | |||
| SystemLogMonitor | ContainerdStart |
Dalam beberapa kasus, AKS secara otomatis mengisolasi dan menguras node untuk meminimalkan gangguan pada beban kerja. Untuk informasi selengkapnya tentang peristiwa dan tindakan, lihat Pengurasan otomatis simpul.
EgressBlocked
Daftar titik akhir yang diperiksa oleh EgressBlocked tercantum di bawah ini
Catatan
Titik akhir aktual akan bergantung pada jenis kluster dan lokasi tempatnya dihosting (Cloud publik vs cloud Airgapped). Tinjau dokumentasi untuk akses keluar di sini. Dokumentasi ini untuk cloud publik
| Tipe | Contoh | Catatan |
|---|---|---|
| MCR | https://mcr.microsoft.com | |
| Microsoft Entra ID | https://login.microsoftonline.com |
|
| Resource Manager | https://management.azure.com | |
| Paket | https://packages.microsoft.com | |
| Binari Kube | https://acs-mirror.azureedge.net/acs-mirror/healthz https://packages.aks.azure.com/acs-mirror/healthz |
Periksa kondisi dan kejadian simpul
Periksa kondisi node dan peristiwa menggunakan perintah
kubectl describe node.kubectl describe node my-aks-nodeOutput Anda akan terlihat mirip dengan contoh output ringkas berikut:
... ... Conditions: Type Status LastHeartbeatTime LastTransitionTime Reason Message ---- ------ ----------------- ------------------ ------ ------- VMEventScheduled False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoVMEventScheduled VM has no scheduled event FrequentContainerdRestart False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoFrequentContainerdRestart containerd is functioning properly FrequentDockerRestart False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoFrequentDockerRestart docker is functioning properly FilesystemCorruptionProblem False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 FilesystemIsOK Filesystem is healthy FrequentUnregisterNetDevice False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoFrequentUnregisterNetDevice node is functioning properly ContainerRuntimeProblem False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:40 +0000 ContainerRuntimeIsUp container runtime service is up KernelDeadlock False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 KernelHasNoDeadlock kernel has no deadlock FrequentKubeletRestart False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 NoFrequentKubeletRestart kubelet is functioning properly KubeletProblem False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 KubeletIsUp kubelet service is up ReadonlyFilesystem False Thu, 01 Jun 2023 19:14:25 +0000 Thu, 01 Jun 2023 03:57:41 +0000 FilesystemIsNotReadOnly Filesystem is not read-only NetworkUnavailable False Thu, 01 Jun 2023 03:58:39 +0000 Thu, 01 Jun 2023 03:58:39 +0000 RouteCreated RouteController created a route MemoryPressure True Thu, 01 Jun 2023 19:16:50 +0000 Thu, 01 Jun 2023 19:16:50 +0000 KubeletHasInsufficientMemory kubelet has insufficient memory available DiskPressure False Thu, 01 Jun 2023 19:16:50 +0000 Thu, 01 Jun 2023 03:57:22 +0000 KubeletHasNoDiskPressure kubelet has no disk pressure PIDPressure False Thu, 01 Jun 2023 19:16:50 +0000 Thu, 01 Jun 2023 03:57:22 +0000 KubeletHasSufficientPID kubelet has sufficient PID available Ready True Thu, 01 Jun 2023 19:16:50 +0000 Thu, 01 Jun 2023 03:57:23 +0000 KubeletReady kubelet is posting ready status. AppArmor enabled ... ... ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal NodeHasSufficientMemory 94s (x176 over 15h) kubelet Node aks-agentpool-40622340-vmss000009 status is now: NodeHasSufficientMemory
Acara-acara ini juga tersedia di Container Insights melalui KubeEvents.
Metode pengukuran
NPD juga menampilkan metrik Prometheus berdasarkan masalah node, yang dapat Anda gunakan untuk pemantauan dan pemberitahuan. Metrik-metrik ini diekspos pada port 20257 dari IP Node dan Prometheus dapat mengumpulkannya.
Contoh YAML berikut menunjukkan konfigurasi scrape yang dapat Anda gunakan dengan Azure Managed Prometheus add-on sebagai DaemonSet:
kind: ConfigMap
apiVersion: v1
metadata:
name: ama-metrics-prometheus-config-node
namespace: kube-system
data:
prometheus-config: |-
global:
scrape_interval: 1m
scrape_configs:
- job_name: node-problem-detector
scrape_interval: 1m
scheme: http
metrics_path: /metrics
relabel_configs:
- source_labels: [__metrics_path__]
regex: (.*)
target_label: metrics_path
- source_labels: [__address__]
replacement: '$NODE_NAME'
target_label: instance
static_configs:
- targets: ['$NODE_IP:20257']
Contoh berikut menunjukkan metrik yang diambil:
problem_gauge{reason="UnregisterNetDevice",type="FrequentUnregisterNetDevice"} 0
problem_gauge{reason="VMEventScheduled",type="VMEventScheduled"} 0
Langkah selanjutnya
Untuk informasi lebih lanjut tentang NPD, lihat kubernetes/node-problem-detector.