Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Node Problem Detector (NPD) — это компонент с открытым исходным кодом для Kubernetes, который обнаруживает проблемы, связанные с узлами, и сообщает о них. Он работает как служба systemd на каждом узле в кластере и собирает различные метрики и системную информацию, такие как использование ЦП, использование диска и сетевое подключение. Когда обнаруживается проблема, создаются события и/или условия узла. Служба Azure Kubernetes (AKS) использует NPD для мониторинга и управления узлами в кластере Kubernetes, работающем на облачной платформе Azure. Расширение AKS для Linux включает NPD по умолчанию.
Примечание
Обновления NPD не зависят от образа узла и процедур обновления версий Kubernetes. Если пул узлов неработоспособен (то есть в состоянии сбоя), новые версии NPD не устанавливаются.
Условия узла
Условия узла указывают на постоянную проблему, которая делает узел недоступным. AKS использует следующие условия узлов, определяемые NPD, чтобы выявить постоянные проблемы на узле. NPD также генерирует соответствующие события Kubernetes.
| Тип демона проблемы | NodeCondition | Причина | Тип вычисления |
|---|---|---|---|
| CustomPluginMonitor | Проблема повреждения файловой системы | Обнаружено повреждение файловой системы | Общее назначение |
| CustomPluginMonitor | KubeletProblem | KubeletIsDown | Общее назначение |
| CustomPluginMonitor | Проблема времени выполнения контейнера | СбойContainerRuntime | Общее назначение |
| CustomPluginMonitor | Запланированное событие ВМ | Запланированное событие ВМ | Общее назначение |
| CustomPluginMonitor | ЧастаяОтменаРегистрацииСетевогоУстройства | Отменить регистрацию сетевого устройства | Общее назначение |
| CustomPluginMonitor | FrequentKubeletRestart | FrequentKubeletRestart | Общее назначение |
| CustomPluginMonitor | ЧастаяПерезагрузкаContainerd | ЧастаяПерезагрузкаContainerd | Общее назначение |
| CustomPluginMonitor | Частые перезапуски Docker | Частые перезапуски Docker | Общее назначение |
| CustomPluginMonitor | GPUMissing | Наблюдаемое количество GPU не соответствует ожидаемому количеству GPU | Только GPU |
| CustomPluginMonitor | Статус NVLink: Неактивен | Статус NVLink: Неактивен | Только GPU |
| CustomPluginMonitor | XIDErrors | Ошибки XID присутствуют в журнале ядра | Только GPU |
| CustomPluginMonitor | IBLinkFlapping | Периодические подключения к устройству InfiniBand | Только GPU |
| CustomPluginMonitor | Снижение тактовой частоты GPU | Обнаружена проблема с регулированием часов GPU | Только GPU |
| CustomPluginMonitor | НеработоспособныйNvidiaDevicePlugin | Служба подключаемого модуля устройства NVIDIA не активна | Только GPU (управляемый GPU) |
| Мониторинг системных логов | KernelDeadlock | DockerHung | Общее назначение |
| Мониторинг системных логов | ФайловаяСистемаТолькоДляЧтения | Файловая система только для чтения | Общее назначение |
Примечание
Условия GPU only узла применяются ко всем пулам узлов GPU, использующие драйверы GPU, управляемые AKS (пулы узлов, с которыми не созданы --gpu-driver none). Условия GPU only (managed GPU) применяются только к пулам узлов с включенным полностью управляемым интерфейсом GPU . Мониторинг работоспособности GPU поддерживается на стандартах GPU и узлах GPU с поддержкой MIG.
События
NPD генерирует события с соответствующей информацией, чтобы помочь вам диагностировать основные проблемы.
| Тип демона проблемы | Причина | Частота | Описание | Действие |
|---|---|---|---|---|
| CustomPluginMonitor | Заблокирован выход | 30 мин | Это событие проверяет подключение к внешним конечным точкам | Проверьте, блокирует ли брандмауэр или NSG подключение к конечной точке, помеченной |
| CustomPluginMonitor | Обнаружено повреждение файловой системы | 5 минут | Эта проверка выявляет повреждение файловой системы, обнаруженное с помощью Docker. | |
| CustomPluginMonitor | KubeletIsDown | 30 с | Это проверяет, запущена ли служба kubelet и работает ли она работоспособно | |
| CustomPluginMonitor | СбойContainerRuntime | 30 с | Это событие проверяет, запускается и находится ли в исправном состоянии среда выполнения контейнера, например: containerd. | |
| CustomPluginMonitor | Запланированное замораживание | 1мин | Это событие проверяет, запланировано ли событие замораживания на узле. Проверьте https://aka.ms/aks/scheduledevents, чтобы получить больше информации. | |
| CustomPluginMonitor | Запланирована перезагрузка | 1мин | Это событие проверяет, запланировано ли событие перезагрузки на узле https://aka.ms/aks/scheduledevents . Дополнительные сведения | |
| CustomPluginMonitor | Запланированное Перемещение | 1мин | Это событие проверяет, запланировано ли событие повторного развертывания на узле. Проверьте https://aka.ms/aks/scheduledevents, чтобы получить больше информации. | |
| CustomPluginMonitor | ЗавершитьЗапланированное | 1мин | Это событие проверяет, запланировано ли завершающее событие на узле. Проверьте https://aka.ms/aks/scheduledevents, чтобы получить больше информации. | |
| CustomPluginMonitor | ПредварительноЗапланировано | 2 сек. | Это событие проверяет, запланировано ли событие "Preempt" на узле. Проверьте https://aka.ms/aks/scheduledevents, чтобы получить больше информации. | |
| CustomPluginMonitor | DNSProblem | |||
| Мониторинг системных логов | OOMKilling | |||
| Мониторинг системных логов | TaskHung | |||
| Мониторинг системных логов | Отменить регистрацию сетевого устройства | |||
| Мониторинг системных логов | KernelOops | |||
| Мониторинг системных логов | Невозможно подключиться к Docker-сокету | |||
| Мониторинг системных логов | KubeletRPCDeadlineExceeded (превышение предельного времени выполнения задания RPC в Kubelet) | |||
| Мониторинг системных логов | KubeletRPCNoSuchContainer | |||
| Мониторинг системных логов | CNICannotStatFS | |||
| Мониторинг системных логов | PLEGUnhealthy | |||
| Мониторинг системных логов | KubeletStart | |||
| Мониторинг системных логов | DockerStart | |||
| Мониторинг системных логов | ContainerdStart |
В некоторых случаях AKS автоматически изолирует и освобождает узел, чтобы минимизировать перебои в работе нагрузок. Дополнительные сведения о событиях и действиях см. в разделе Автоматическое освобождение узла.
Заблокирован выход
Список конечных точек, проверенных egressBlocked, приведен ниже.
Примечание
Фактические конечные точки будут зависеть от типа кластера и расположения размещения (общедоступное облако и облака Airgapped). Ознакомьтесь с документацией по исходящему доступу. Документация предназначена для общедоступных облаков
| Тип | Пример | Примечание |
|---|---|---|
| MCR | https://mcr.microsoft.com | |
| Майкрософт Ентра айди | https://login.microsoftonline.com |
|
| Менеджер ресурсов | https://management.azure.com | |
| Пакеты | https://packages.microsoft.com | |
| Двоичный файл Kube | https://acs-mirror.azureedge.net/acs-mirror/healthz https://packages.aks.azure.com/acs-mirror/healthz |
Проверьте условия и события узла
Проверьте условия и события узла с помощью команды
kubectl describe node.kubectl describe node my-aks-nodeВаш перевод должен выглядеть аналогично следующему примеру сжатого вывода.
... ... 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
Эти события также доступны в Container Insights через KubeEvents.
Метрики
NPD также показывает метрики Prometheus на основе проблем узла, которые можно использовать для мониторинга и оповещений. Эти метрики доступны на порту 20257 IP-адреса узла, и Prometheus может их собирать.
Пример YAML, приведённый ниже, показывает конфигурацию сбора данных, которую можно использовать с дополнением Azure Managed Prometheus как 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']
Пример ниже показывает извлеченные метрики:
problem_gauge{reason="UnregisterNetDevice",type="FrequentUnregisterNetDevice"} 0
problem_gauge{reason="VMEventScheduled",type="VMEventScheduled"} 0
Следующие шаги
Для получения дополнительной информации о NPD см. kubernetes/node-problem-detector.