Что это значит

metrics-server раз в несколько десятков секунд опрашивает kubelet на каждом узле по порту 10250 и собирает загрузку процессора и памяти подов. Если узел не ответил, metrics-server пишет эту ошибку, а по этому узлу метрик нет. Последствия: kubectl top не показывает поды с этого узла, а автомасштабирование пишет failed to get cpu utilization.

Причины: узел выключен или перезагружается, порт 10250 закрыт межсетевым экраном или группой безопасности, kubelet завис, узел перегружен.

Как проверить

kubectl get nodes -o wide
kubectl get --raw "/api/v1/nodes/<узел>/proxy/metrics/resource" | head

Если узел в состоянии NotReady или выключен, ошибки ожидаемы. Если узел работает, проверить доступность порта 10250 с узла, где работает metrics-server.

Что сделать

  1. Выключенные узлы убрать из кластера или включить, чтобы metrics-server перестал их опрашивать.
  2. Открыть порт 10250 между узлами кластера.
  3. Если узел жив, а kubelet не отвечает, смотреть журнал kubelet на узле: journalctl -u kubelet.