metrics-server не может собрать метрики с узла
«Failed to scrape node» с «dial tcp ...:10250: i/o timeout» в журнале metrics-server: kubelet на узле недоступен по порту 10250. Из-за этого не работают kubectl top и автомасштабирование по загрузке.
Что это значит
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.
Что сделать
- Выключенные узлы убрать из кластера или включить, чтобы metrics-server перестал их опрашивать.
- Открыть порт 10250 между узлами кластера.
- Если узел жив, а kubelet не отвечает, смотреть журнал kubelet на узле:
journalctl -u kubelet.
Ошибка повторяется?
Запустите Диагностика: за полминуты он покажет состояние базы, брокера, поиска и сервера. С отчётом разберём причину за 30 минут бесплатного созвона.
Написать