Node Problem Detector (NPD) in AKS-knooppunten (Azure Kubernetes Service)
Node Problem Detector (NPD) is een open source Kubernetes-onderdeel dat knooppuntgerelateerde problemen detecteert en rapporteert. Dit wordt uitgevoerd als een systeemservice op elke node in het cluster en verzamelt verschillende metrische gegevens en systeeminformatie, zoals CPU-gebruik, schijfgebruik en netwerkverbinding. Wanneer er een probleem wordt gedetecteerd, worden gebeurtenissen en/of knooppuntvoorwaarden gegenereerd. Azure Kubernetes Service (AKS) maakt gebruik van NPD voor het bewaken en beheren van knooppunten in een Kubernetes-cluster dat wordt uitgevoerd op het Azure-cloudplatform. De AKS Linux-extensie schakelt standaard NPD in.
Notitie
Upgrades naar NPD zijn onafhankelijk van de knooppuntinstallatiekopieën en kubernetes-versie-upgradeprocessen. Als een knooppuntpool niet in orde is (bijvoorbeeld in een mislukte status), worden nieuwe NPD-versies niet geïnstalleerd.
Node-voorwaarden
Knooppuntvoorwaarden geven een permanent probleem aan waardoor het knooppunt niet beschikbaar is. AKS gebruikt de volgende knooppuntvoorwaarden van NPD om permanente problemen op het knooppunt weer te geven. NPD verzendt ook bijbehorende Kubernetes-gebeurtenissen.
Type probleemdaemon | NodeCondition | Reden |
---|---|---|
CustomPluginMonitor | BestandssysteemCorruptionProblem | FilesystemCorruptionDetected |
CustomPluginMonitor | KubeletProblem | KubeletIsDown |
CustomPluginMonitor | ContainerRuntimeProblem | ContainerRuntimeIsDown |
CustomPluginMonitor | VMEventScheduled | VMEventScheduled |
CustomPluginMonitor | FrequentUnregisterNetDevice | RegistratienetDevice ongedaan maken |
CustomPluginMonitor | FrequentKubeletRestart | FrequentKubeletRestart |
CustomPluginMonitor | FrequentContainerdRestart | FrequentContainerdRestart |
CustomPluginMonitor | FrequentDockerRestart | FrequentDockerRestart |
SystemLogMonitor | KernelDeadlock | DockerHung |
SystemLogMonitor | ReadonlyFilesystem | FilesystemIsReadOnly |
gebeurtenis
NPD verzendt gebeurtenissen met relevante informatie om u te helpen bij het diagnosticeren van onderliggende problemen.
Type probleemdaemon | Reden |
---|---|
CustomPluginMonitor | EgressBlocked |
CustomPluginMonitor | FilesystemCorruptionDetected |
CustomPluginMonitor | KubeletIsDown |
CustomPluginMonitor | ContainerRuntimeIsDown |
CustomPluginMonitor | FreezeScheduled |
CustomPluginMonitor | RebootScheduled |
CustomPluginMonitor | Opnieuw implementerenScheduled |
CustomPluginMonitor | TerminateScheduled |
CustomPluginMonitor | PreemptScheduled |
CustomPluginMonitor | DNSProblem |
CustomPluginMonitor | PodIPProblem |
SystemLogMonitor | OOMKilling |
SystemLogMonitor | TaskHung |
SystemLogMonitor | RegistratienetDevice ongedaan maken |
SystemLogMonitor | KernelOops |
SystemLogMonitor | DockerSocketCannotConnect |
SystemLogMonitor | KubeletRPCDeadlineExceeded |
SystemLogMonitor | KubeletRPCNoSuchContainer |
SystemLogMonitor | CNICannotStatFS |
SystemLogMonitor | PLEGUnhealthy |
SystemLogMonitor | KubeletStart |
SystemLogMonitor | DockerStart |
SystemLogMonitor | ContainerdStart |
In bepaalde gevallen zorgt AKS automatisch voor cordons en wordt het knooppunt leeg gemaakt om onderbrekingen van workloads te minimaliseren. Zie Automatisch leegmaken van knooppunten voor meer informatie over de gebeurtenissen en acties.
Controleer de voorwaarden en gebeurtenissen van de node
Controleer de voorwaarden en gebeurtenissen van het knooppunt met behulp van de
kubectl describe node
opdracht.kubectl describe node my-aks-node
Uw uitvoer moet er ongeveer uitzien als in het volgende voorbeeld verkorte uitvoer:
... ... 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
Deze gebeurtenissen zijn ook beschikbaar in Container Insights via KubeEvents.
Metrische gegevens
NPD maakt ook prometheus-metrische gegevens beschikbaar op basis van de knooppuntproblemen, die u kunt gebruiken voor bewaking en waarschuwingen. Deze metrische gegevens worden weergegeven op poort 20257 van het IP-adres van het knooppunt en Prometheus kunnen ze scrapen.
In het volgende voorbeeld van YAML ziet u een knipselconfiguratie die u kunt gebruiken met de Azure Managed Prometheus-invoegtoepassing als een 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']
In het volgende voorbeeld ziet u de geschraapte metrische gegevens:
problem_gauge{reason="UnregisterNetDevice",type="FrequentUnregisterNetDevice"} 0
problem_gauge{reason="VMEventScheduled",type="VMEventScheduled"} 0
Volgende stappen
Zie kubernetes/node-problem-detector voor meer informatie over NPD.
Azure Kubernetes Service