Ошибка сервера: ошибка при наборе номера: dial tcp ‹datanode-ip›: тайм-аут ввода-вывода

У меня недавно возникла проблема с локальным кластером kubernetes. Когда я использовал команду kubectl exec -it curl-- bash для запуска некоторых команд в модуле под названием 'curl', у меня возникли некоторые ошибки: информация об ошибке

А вот информация об узлах: информация об узлах

Под 'curl' хорошо работает на datanode-2, а kubelet прослушивает порт 10250, но я не знаю, почему я получил информацию об ошибке. Вот `kubectl describe po curl ': описание модуля curl

А вот модули в пространстве имен kube-system, CNI - фланелевый: введите здесь описание изображения < / а>

Это то же самое, что запустить kubectl exec на других модулях (то же самое на datanode-1), как решить эту проблему?


person Jesse Stutler    schedule 08.10.2020    source источник
comment
1) правильно ли вы настроили брандмауэр? stackoverflow.com/a/51395960/9929015   -  person Vit    schedule 08.10.2020
comment
2) какие-нибудь странные записи в логах кубелет?   -  person Vit    schedule 08.10.2020
comment
У меня даже брандмауэр не установлен. Думаю, проблема не в брандмауэре, потому что пару дней назад cluser отлично работал. Вчера я обнаружил, что только мастер не может подключиться к узлу через сеть k8s, но datanode-1 и datanode-2 могут хорошо соединяться друг с другом.   -  person Jesse Stutler    schedule 10.10.2020
comment
Привет Виталий, к ответу выкладываю скриншот лога   -  person Jesse Stutler    schedule 10.10.2020
comment
У вас все еще есть эта проблема?   -  person Vit    schedule 29.04.2021


Ответы (1)


Эта ошибка может быть связана с взаимодействием сервиса kube-apiserver.service (на управляющих узлах) с kubelet.service (по умолчанию порт 10250).

Для устранения неполадок вы можете захотеть подключиться по ssh к узлу управления и

telnet hostname(workernode) 10250
telnet privateip(workernode) 1025

Если оба теста telnet не прошли, это может быть связано с вашим брандмауэром на рабочих узлах. Итак, вы должны открыть порт 10250 на рабочих узлах. Чтобы проверить, запущен ли кубелет на этом порту

lsof -i :10250

Если тест telnet завершился неудачно с именем хоста или общедоступным IP-адресом, но работает с частным IP-адресом. Вы должны добавить в служебный файл модуля kube-apiserver (расположенный в /etc/systemd/system/kube-apiserver.service) флаг

--kubelet-preferred-address-types InternalIP

Сохраните это, а затем просто

systemctl daemon-reload
systemctl restart kube-apiserver 
person Zahid    schedule 08.12.2020