Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Nodproblemidentifiering (NPD) är en öppen källkod Kubernetes-komponent som identifierar nodrelaterade problem och rapporter om dem. Den körs som en systemdelad tjänst på varje nod i klustret och samlar in olika mått och systeminformation, till exempel CPU-användning, diskanvändning och nätverksanslutning. När ett problem identifieras genereras händelser och/eller nodvillkor. Azure Kubernetes Service (AKS) använder NPD för att övervaka och hantera noder i ett Kubernetes-kluster som körs på Azure-molnplattformen. AKS Linux-tillägget aktiverar NPD som standard.
Anteckning
Uppgraderingar till NPD är oberoende av nodavbildningen och Uppgraderingsprocesserna för Kubernetes-versionen. Om en nodpool inte är felfri (det vill säga i ett misslyckat tillstånd) installeras inte nya NPD-versioner.
Nodvillkor
Nodvillkor anger ett permanent problem som gör noden otillgänglig. AKS använder följande nodvillkor från NPD för att exponera permanenta problem på noden. NPD genererar även motsvarande Kubernetes-händelser.
| Problem med daemontyp | NodeCondition | Anledning | Typ av beräkning |
|---|---|---|---|
| CustomPluginMonitor | Problem med fillsystemskorrumpering | Detekterad filsystemkorruption | Allmänt ändamål |
| CustomPluginMonitor | KubeletProblem | KubeletIsDown | Allmänt ändamål |
| CustomPluginMonitor | Problem med containerkörning | Containertidsmiljön är nere | Allmänt ändamål |
| CustomPluginMonitor | VMEventScheduled | VMEventScheduled | Allmänt ändamål |
| CustomPluginMonitor | FrequentUnregisterNetDevice | AvregistreraNätenhet | Allmänt ändamål |
| CustomPluginMonitor | FrekventKubeletOmstart | FrekventKubeletOmstart | Allmänt ändamål |
| CustomPluginMonitor | Frekventa omstarter av Containerd | Frekventa omstarter av Containerd | Allmänt ändamål |
| CustomPluginMonitor | FrequentDockerRestart | FrequentDockerRestart | Allmänt ändamål |
| CustomPluginMonitor | GPU saknas | Observerat GPU-antal matchar inte förväntat GPU-antal | Endast GPU |
| CustomPluginMonitor | NVLinkStatusInaktiv | NVLinkStatusInaktiv | Endast GPU |
| CustomPluginMonitor | XIDErrors | XID-fel som finns i kernelloggen | Endast GPU |
| CustomPluginMonitor | IBLinkFlapping | Tillfällig InfiniBand-enhetsanslutning | Endast GPU |
| Systemloggövervakare | KernelDeadlock | DockerHung | Allmänt ändamål |
| Systemloggövervakare | Skrivskyddat Filsystem | Filsystemet är skrivskyddat | Allmänt ändamål |
Anteckning
Nodvillkoren GPU only gäller för närvarande för AKS-nodpooler med Standard_ND96asr_v4 eller Standard_ND96isr_H100_v5 VM-storlek och stöds i GPU-standard- och MIG-aktiverade GPU-nodpooler.
Händelser
NPD genererar händelser med relevant information som hjälper dig att diagnostisera underliggande problem.
| Problem med daemontyp | Anledning | Frekvens | Beskrivning | Åtgärd |
|---|---|---|---|---|
| CustomPluginMonitor | Utgång blockerad | 30 minuter | Den här händelsen söker efter anslutning till externa slutpunkter | Kontrollera om en brandvägg eller NSG blockerar anslutningen till slutpunkten som flaggas |
| CustomPluginMonitor | Detekterad filsystemkorruption | 5 min | Detta kontrollerar filsystemsskada som upptäcks av Docker | |
| CustomPluginMonitor | KubeletIsDown | 30-talet | Detta kontrollerar om kubelet-tjänsten körs och är felfri | |
| CustomPluginMonitor | Containertidsmiljön är nere | 30-talet | Den här händelsen kontrollerar om containerkörningen t.ex. containerd körs och är felfri | |
| CustomPluginMonitor | FreezeScheduled | 1 min | Den här händelsen kontrollerar om en frysningshändelse har schemalagts på noden. Se https://aka.ms/aks/scheduledevents för mer information | |
| CustomPluginMonitor | Omstart Schemalagd | 1 min | Den här händelsen kontrollerar om en omstartshändelse har schemalagts på noden Sök efter https://aka.ms/aks/scheduledevents mer information | |
| CustomPluginMonitor | Omdistribuera planerad | 1 min | Den här händelsen kontrollerar om en omdistribueringshändelse har schemalagts på noden. Se https://aka.ms/aks/scheduledevents för mer information | |
| CustomPluginMonitor | AvslutaSchemalagd | 1 min | Den här händelsen kontrollerar om en Avsluta händelse har schemalagts på noden. Se https://aka.ms/aks/scheduledevents för mer information | |
| CustomPluginMonitor | SchemalagdPreemption | 2 sek | Den här händelsen kontrollerar om en Preempt-händelse har schemalagts på noden. Se https://aka.ms/aks/scheduledevents för mer information | |
| CustomPluginMonitor | DNSProblem | |||
| Systemloggövervakare | OOM-dödande | |||
| Systemloggövervakare | TaskHung | |||
| Systemloggövervakare | AvregistreraNätenhet | |||
| Systemloggövervakare | KernelOops | |||
| Systemloggövervakare | DockerSocketKanInteAnsluta | |||
| Systemloggövervakare | KubeletRPCDeadlineExceeded | |||
| Systemloggövervakare | KubeletRPCNoSuchContainer | |||
| Systemloggövervakare | CNICannotStatFS | |||
| Systemloggövervakare | PLEGOhälsosam | |||
| Systemloggövervakare | KubeletStart | |||
| Systemloggövervakare | DockerStart | |||
| Systemloggövervakare | ContainerdStart |
I vissa fall spärrar OCH tömmer AKS automatiskt noden för att minimera störningar i arbetsbelastningar. Mer information om händelser och åtgärder finns i Autodrain för Nod.
Utgång blockerad
Listan över slutpunkter som kontrolleras av EgressBlocked visas nedan
Anteckning
De faktiska slutpunkterna beror på typen av kluster och den plats där det finns (offentliga moln jämfört med Airgapped-moln). Läs dokumentationen för utgående åtkomst här. Dokumentationen gäller offentliga moln
| Typ | Exempel | Anteckning |
|---|---|---|
| MCR | https://mcr.microsoft.com | |
| Microsoft Entra ID | https://login.microsoftonline.com |
|
| Resurshanterare | https://management.azure.com | |
| Paket | https://packages.microsoft.com | |
| Kube Binary | https://acs-mirror.azureedge.net/acs-mirror/healthz https://packages.aks.azure.com/acs-mirror/healthz |
Kontrollera nodvillkoren och händelserna
Kontrollera nodvillkoren och -händelserna med kommandot
kubectl describe node.kubectl describe node my-aks-nodeDina utdata bör se ut ungefär som i följande exempel på komprimerade utdata:
... ... 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
Dessa händelser är också tillgängliga i Container Insights via KubeEvents.
Mått
NPD exponerar även Prometheus-mått baserat på nodproblem, som du kan använda för övervakning och aviseringar. Dessa mått exponeras på port 20257 för nodens IP och Prometheus kan inhämta dem.
I följande exempel visar YAML en skrapkonfiguration som du kan använda med Azure Managed Prometheus-tillägget som en 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']
I följande exempel visas de skrapade metrikerna.
problem_gauge{reason="UnregisterNetDevice",type="FrequentUnregisterNetDevice"} 0
problem_gauge{reason="VMEventScheduled",type="VMEventScheduled"} 0
Nästa steg
Mer information om NPD finns i kubernetes/node-problem-detector.