Csomópont-problémaérzékelő (NPD) az Azure Kubernetes Service (AKS) csomópontjaiban

A Csomópont-problémaérzékelő (NPD) egy nyílt forráskód Kubernetes-összetevő, amely észleli a csomópontokkal kapcsolatos problémákat és jelentéseket róluk. Rendszeralapú szolgáltatásként fut a fürt minden csomópontján, és összegyűjti a különböző metrikákat és rendszerinformációkat, például a processzorhasználatot, a lemezhasználatot és a hálózati kapcsolatot. Ha hibát észlel, eseményeket és/vagy csomóponti feltételeket hoz létre. Az Azure Kubernetes Service (AKS) NPD használatával figyeli és kezeli az Azure-felhőplatformon futó Kubernetes-fürtök csomópontjait. Az AKS Linux-bővítmény alapértelmezés szerint engedélyezi az NPD-t.

Feljegyzés

Az NPD-re történő frissítés független a csomópont lemezképétől és a Kubernetes verziófrissítési folyamatától. Ha egy csomópontkészlet nem kifogástalan állapotú (vagyis sikertelen állapotban van), a rendszer nem telepíti az új NPD-verziókat.

Csomópontfeltételek

A csomópontfeltételek állandó problémát jeleznek, amely miatt a csomópont elérhetetlenné válik. Az AKS az NPD következő csomópontfeltételeit használja a csomóponton lévő állandó problémák feltárásához. Az NPD a megfelelő Kubernetes-eseményeket is kibocsátja.

Probléma démontípusa Csomópont állapota Ok Számítási típus
EgyediPluginFigyelő Fájlrendszer-sérülés-probléma FájlrendszerSérülésÉszlelve Általános cél
EgyediPluginFigyelő KubeletProbléma KubeletIsDown Általános cél
EgyediPluginFigyelő Konténer Futásidejű Probléma Konténerfelderítés leállt Általános cél
EgyediPluginFigyelő VM esemény ütemezve VM esemény ütemezve Általános cél
EgyediPluginFigyelő FrequentUnregisterNetDevice Hálózati eszköz leiratkoztatása Általános cél
EgyediPluginFigyelő GyakoriKubeletÚjraindítás GyakoriKubeletÚjraindítás Általános cél
EgyediPluginFigyelő Containerd Alkalmazás Gyakori Újraindítása Containerd Alkalmazás Gyakori Újraindítása Általános cél
EgyediPluginFigyelő GyakoriDockerÚjraindítás GyakoriDockerÚjraindítás Általános cél
EgyediPluginFigyelő GPUHiányzik A megfigyelt GPU-szám nem egyezik a várt GPU-számval Csak GPU
EgyediPluginFigyelő NVLink Állapot Inaktív NVLink Állapot Inaktív Csak GPU
EgyediPluginFigyelő XIDErrors A kernelnaplóban található XID-hibák Csak GPU
EgyediPluginFigyelő IBLinkFlapping Időszakos InfiniBand-eszközkapcsolat Csak GPU
EgyediPluginFigyelő GPUClockThrottling Problémás GPU óraszabályozás észlelhető Csak GPU
EgyediPluginFigyelő UnhealthyNvidiaDevicePlugin Az NVIDIA eszköz beépülő modul szolgáltatása nem aktív Csak GPU (felügyelt GPU)
Rendszernaplófigyelő KernelDeadlock DockerHung Általános cél
Rendszernaplófigyelő CsakOlvashatóFájlrendszer A fájlrendszer csak olvasható Általános cél

Feljegyzés

A GPU only csomópontfeltételek az AKS által felügyelt GPU-illesztőprogramokat használó összes GPU-csomópontkészletre vonatkoznak (a csomópontkészleteket nem --gpu-driver none-el hozták létre). A GPU only (managed GPU) feltételek csak olyan csomópontkészletekre vonatkoznak, amelyek teljes mértékben felügyelt GPU-élményt engedélyeznek. A GPU állapotmonitorozása szabványos GPU - és MIG-kompatibilis GPU-csomópontkészleteken támogatott.

esemény

Az NPD releváns információkkal rendelkező eseményeket bocsát ki a mögöttes problémák diagnosztizálásához.

Probléma démontípusa Ok Gyakoriság Leírás Tevékenység
EgyediPluginFigyelő Kijárat blokkolva 30 perc Ez az esemény a külső végpontokhoz való kapcsolódást ellenőrzi Ellenőrizze, hogy egy tűzfal vagy NSG blokkolja-e a végpont elérését, amely meg van jelölve
EgyediPluginFigyelő FájlrendszerSérülésÉszlelve 5 perc Ez ellenőrzi a docker által felszínre hozott fájlrendszer-sérülést
EgyediPluginFigyelő KubeletIsDown 30-as évek Ez ellenőrzi, hogy a Kubelet szolgáltatás fut-e és kifogástalan állapotban van-e
EgyediPluginFigyelő Konténerfelderítés leállt 30-as évek Ez az esemény ellenőrzi, hogy a tároló futtatókörnyezete, például: a tároló fut-e és kifogástalan állapotban van-e
EgyediPluginFigyelő Ütemezett lefagyás 1 perc Ez az esemény ellenőrzi, hogy a csomóponton van-e ütemezve Leállítási Esemény. További https://aka.ms/aks/scheduledevents információk keresése
EgyediPluginFigyelő Ütemezett újraindítás 1 perc Ez az esemény ellenőrzi, hogy egy újraindítási esemény van-e ütemezve a csomóponton További https://aka.ms/aks/scheduledevents információ keresése
EgyediPluginFigyelő Ütemezett újratelepítés 1 perc Ez az esemény ellenőrzi, hogy van-e ütemezve újratelepítési esemény a csomóponton. További https://aka.ms/aks/scheduledevents információk keresése
EgyediPluginFigyelő Ütemezett megszüntetés 1 perc Ez az esemény ellenőrzi, hogy a csomóponton van-e ütemezve egy megszakítási esemény. További https://aka.ms/aks/scheduledevents információk keresése
EgyediPluginFigyelő Előre ütemezett 2s Ez az esemény ellenőrzi, hogy van-e előzményesemény ütemezve a csomóponton. További https://aka.ms/aks/scheduledevents információk keresése
EgyediPluginFigyelő DNSProblem
Rendszernaplófigyelő OOMKilling
Rendszernaplófigyelő TaskHung
Rendszernaplófigyelő Hálózati eszköz leiratkoztatása
Rendszernaplófigyelő KernelOops
Rendszernaplófigyelő Nem lehet csatlakozni a DockerSockethoz
Rendszernaplófigyelő KubeletRPCDeadlineExceeded
Rendszernaplófigyelő KubeletRPCNoSuchContainer
Rendszernaplófigyelő CNICannotStatFS
Rendszernaplófigyelő PLEGegészségtelen
Rendszernaplófigyelő KubeletStart
Rendszernaplófigyelő DockerStart
Rendszernaplófigyelő ContainerdStart

Bizonyos esetekben az AKS automatikusan kordonozza és üríti a csomópontot a számítási feladatok megszakadásának minimalizálása érdekében. További információ az eseményekről és műveletekről: Node autodrain.

Kijárat blokkolva

Az EgressBlocked által ellenőrzött végpontok listája alább látható

Feljegyzés

A konkrét végpontok a fürt típusától és az üzemelési helytől függnek (nyilvános felhők vs. leválasztott felhők). A kimenő hozzáférés dokumentációját itt tekintheti meg. A dokumentáció nyilvános felhőkhöz készült

Típus példa Feljegyzés
MCR https://mcr.microsoft.com
Microsoft Entra ID https://login.microsoftonline.com
Resource Manager https://management.azure.com
Csomagok https://packages.microsoft.com
Kube Bináris https://acs-mirror.azureedge.net/acs-mirror/healthz
https://packages.aks.azure.com/acs-mirror/healthz

A csomópont feltételeinek és eseményeinek ellenőrzése

  • A parancs használatával kubectl describe node ellenőrizze a csomópont feltételeit és eseményeit.

    kubectl describe node my-aks-node
    

    A kimenetnek a következő sűrített kimenethez hasonlóan kell kinéznie:

    ...
    ...
    
    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
    

Ezek az események a Container Insightsban is elérhetők a KubeEventsen keresztül.

Mérőszámok

Az NPD prometheus-metrikákat is elérhetővé tesz a csomópontproblémák alapján, amelyeket figyeléshez és riasztáshoz használhat. Ezek a metrikák a Csomópont IP-címének 20257-ös portján vannak közzétéve, és a Prometheus lekaparhatja őket.

Az alábbi YAML-példa egy olyan scrape konfigurációt mutat be, amelyet a DaemonSetként használt Azure Managed Prometheus-bővítménnyel használhat:

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']

Az alábbi példa a lekaparott metrikákat mutatja be:

problem_gauge{reason="UnregisterNetDevice",type="FrequentUnregisterNetDevice"} 0
problem_gauge{reason="VMEventScheduled",type="VMEventScheduled"} 0

Következő lépések

További információ az NPD-ről: kubernetes/node-problem-detector.