Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Detector de problemas de nodo (NPD) es un complemento de Kubernetes de código abierto que detecta problemas relacionados con el nodo e informa sobre ellos. Se ejecuta como un servicio de systemd en cada nodo del clúster y recopila diversas métricas e información del sistema, como el uso de la CPU, el uso del disco y la conectividad de red. Cuando detecta un problema, genera eventos o condiciones de nodo. Azure Kubernetes Service (AKS) usa NPD para supervisar y administrar nodos en un clúster de Kubernetes que se ejecuta en la plataforma en la nube de Azure. La extensión de LINUX de AKS habilita NPD de forma predeterminada.
Nota:
Las actualizaciones a NPD son independientes de la imagen de nodo y los procesos de actualización de la versión de Kubernetes. Si un grupo de nodos está en un estado no saludable (es decir, en un estado fallido), no se instalarán nuevas versiones de NPD.
Condiciones del nodo
Las condiciones del nodo indican un problema permanente que hace que el nodo no esté disponible. AKS usa las siguientes condiciones del nodo de NPD para exponer problemas permanentes en el nodo. NPD también emite los eventos de Kubernetes correspondientes.
Tipo de demonio del problema | Condición del Nodo | Motivo |
---|---|---|
CustomPluginMonitor | ProblemaDeCorrupciónDelSistemaDeArchivos | CorrupciónDelSistemaDeArchivosDetectada |
CustomPluginMonitor | KubeletProblem | KubeletIsDown |
CustomPluginMonitor | Problema de tiempo de ejecución del contenedor | ContainerRuntimeIsDown |
CustomPluginMonitor | VMEventScheduled | VMEventScheduled |
CustomPluginMonitor | FrequentUnregisterNetDevice | Anular el registroNetDevice |
CustomPluginMonitor | FrequentKubeletRestart | FrequentKubeletRestart |
CustomPluginMonitor | FrequentContainerdRestart | FrequentContainerdRestart |
CustomPluginMonitor | FrequentDockerRestart | FrequentDockerRestart |
SystemLogMonitor | KernelDeadlock | DockerHung |
SystemLogMonitor | SistemaDeArchivosSoloLectura | FilesystemIsReadOnly |
Eventos
NPD emite eventos con información relevante para ayudarle a diagnosticar problemas subyacentes.
Tipo de demonio del problema | Motivo | Frecuencia | Descripción | Acción |
---|---|---|---|---|
CustomPluginMonitor | EgressBlocked | 30 minutos | Este evento comprueba si hay conectividad con puntos de conexión externos | Compruebe si un firewall o un grupo de seguridad de red que bloquean la conectividad al punto de conexión se marcan |
CustomPluginMonitor | CorrupciónDelSistemaDeArchivosDetectada | 5 minutos | Esto comprueba si se producen daños en el sistema de archivos detectados por Docker. | |
CustomPluginMonitor | KubeletIsDown | 30 segundos | Esto comprueba si el servicio kubelet se está ejecutando y en buen estado | |
CustomPluginMonitor | ContainerRuntimeIsDown | 30 segundos | Este evento comprueba si el runtime de contenedores, por ejemplo, containerd, está en ejecución y en buen estado. | |
CustomPluginMonitor | FreezeScheduled | 1 minutos | Este evento verifica si un Evento de Congelación está programado en el nodo. Consulte https://aka.ms/aks/scheduledevents para obtener más información | |
CustomPluginMonitor | RebootScheduled | 1 minutos | Este evento comprueba si se programa un evento de reinicio en el nodo Comprobar https://aka.ms/aks/scheduledevents para obtener más información. | |
CustomPluginMonitor | RedeployScheduled | 1 minutos | Este evento comprueba si se programa un evento de reimplementación en el nodo. Consulte https://aka.ms/aks/scheduledevents para obtener más información | |
CustomPluginMonitor | TerminateScheduled | 1 minutos | Este evento comprueba si se programa un evento Terminate en el nodo. Consulte https://aka.ms/aks/scheduledevents para obtener más información | |
CustomPluginMonitor | PreemptScheduled | 2s | Este evento comprueba si se programa un evento de adelantamiento en el nodo. Consulte https://aka.ms/aks/scheduledevents para obtener más información | |
CustomPluginMonitor | DNSProblem | |||
SystemLogMonitor | OOMKilling | |||
SystemLogMonitor | TaskHung | |||
SystemLogMonitor | Anular el registroNetDevice | |||
SystemLogMonitor | KernelOops | |||
SystemLogMonitor | ErrorDockerSocketNoSePuedeConectar | |||
SystemLogMonitor | KubeletRPCDeadlineExceeded | |||
SystemLogMonitor | KubeletRPCNoSuchContainer | |||
SystemLogMonitor | CNICannotStatFS | |||
SystemLogMonitor | PLEGUnhealthy | |||
SystemLogMonitor | KubeletStart | |||
SystemLogMonitor | DockerStart | |||
SystemLogMonitor | ContainerdStart |
En determinados casos, AKS acordona y purga automáticamente el nodo para minimizar la interrupción de las cargas de trabajo. Para obtener más información sobre los eventos y las acciones, vea Node autodrain.
EgressBlocked
A continuación se muestra la lista de puntos de conexión comprobados por EgressBlocked.
Nota:
Los puntos de conexión reales dependerán del tipo de clúster y de la ubicación donde se hospede (nube pública frente a nubes aisladas). Revise la documentación para obtener acceso saliente aquí. La documentación es para nubes públicas.
Tipo | Ejemplo | Nota: |
---|---|---|
MCR | https://mcr.microsoft.com | |
Microsoft Entra ID | https://login.microsoftonline.com" | |
Administrador de recursos | https://management.azure.com | |
Paquetes | https://packages.microsoft.com | |
Kube Binary | https://acs-mirror.azureedge.net/acs-mirror/healthz,https://packages.aks.azure.com/acs-mirror/healthz |
Comprobar las condiciones y eventos del nodo
Compruebe las condiciones y eventos del nodo mediante el comando
kubectl describe node
.kubectl describe node my-aks-node
El resultado debería ser similar a la siguiente salida reducida de ejemplo:
... ... 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
Estos eventos también están disponibles en Información sobre Container a través de KubeEvents.
Métricas
NPD también expone las métricas de Prometheus basadas en los problemas de nodo, que puede usar para la supervisión y las alertas. Estas métricas se exponen en el puerto 20257 de la dirección IP del nodo y se pueden extraer mediante Prometheus.
En el ejemplo siguiente, YAML muestra una configuración de extracción que puede usar con el complemento Prometheus administrado de Azure como 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']
En el ejemplo siguiente se muestran las métricas extraídas:
problem_gauge{reason="UnregisterNetDevice",type="FrequentUnregisterNetDevice"} 0
problem_gauge{reason="VMEventScheduled",type="VMEventScheduled"} 0
Pasos siguientes
Para más información sobre NPD, consulte kubernetes/node-problem-detector.
Azure Kubernetes Service