Не удалось достучаться до другого узла с помощью telnet.

Вопрос или проблема

Я открыл порт 6443 с помощью ufw.

$ sudo ufw status
Статус: активен

Куда                      Действие    Откуда
--                        ------      ----
6443/tcp                  РАЗРЕШИТЬ   Везде
6443                      РАЗРЕШИТЬ   Везде
6443/udp                  РАЗРЕШИТЬ   Везде

Вот некоторые другие проверки, которые я сделал …

$ sudo nc -l 6443
nc: Адрес уже используется

$ sudo ss -tuln | grep 6443
tcp   LISTEN 0      4096                 *:6443             *:*

$ sudo iptables -L -n | grep 6443
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:6443
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:6443
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:6443
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0            udp dpt:6443

С клиентской машины –

$ ping 129.x.x.x
PING 129.x.x.x (129.x.x.x) 56(84) байт данных.
64 байта от 129.x.x.x: icmp_seq=1 ttl=63 время=0.266 мс
64 байта от 129.x.x.x: icmp_seq=2 ttl=63 время=0.213 мс
64 байта от 129.x.x.x: icmp_seq=3 ttl=63 время=0.238 мс
64 байта от 129.x.x.x: icmp_seq=4 ttl=63 время=0.168 мс
64 байта от 129.x.x.x: icmp_seq=5 ttl=63 время=0.189 мс
64 байта от 129.x.x.x: icmp_seq=6 ttl=63 время=0.193 мс
64 байта от 129.x.x.x: icmp_seq=7 ttl=63 время=0.195 мс
64 байта от 129.x.x.x: icmp_seq=8 ttl=63 время=0.179 мс
^C
--- 129.x.x.x статистика ping ---
8 пакетов передано, 8 получено, 0% потерь, время 7167мс
rtt min/avg/max/mdev = 0.168/0.205/0.266/0.030 мс

$ nc -vz 129.x.x.x 22
Соединение с 129.x.x.x 22 порт [tcp/ssh] успешно!

Но вот ошибка –

$ nc -vz 129.x.x.x 6443
nc: подключение к 129.x.x.x порт 6443 (tcp) не удалось: Нет маршрута к хосту

Что мне нужно сделать, чтобы открыть этот порт? Этот порт используется сервером api kubernetes, и без его открытия я не смогу присоединить узел к кластеру.

Ответ или решение

Невозможность подключения к другому узлу с помощью telnet: Причины и решения

Если вы столкнулись с проблемой подключения к удаленному узлу через порт 6443 (используемый Kubernetes API Server), несмотря на успешные проверки других портов, таких как SSH (22), и на то, что пинг до узла проходит успешно, возможно, проблема связана с конфигурацией сети или брандмауэра. Давайте рассмотрим, как можно диагностировать и решить эту проблему.

1. Проверка статуса брандмауэра

Вы уже выполнили команду sudo ufw status, и она отображает, что порт 6443 открыт. Это хороший первый шаг. Убедитесь, что брандмауэр действительно активен и что вы не имеете дополнительных правил, которые могли бы блокировать соединение.

Также проверьте iptables, используя команду:

sudo iptables -L -n

Убедитесь, что нет правил, которые могут конфликтовать с разрешением на порт 6443. В вашем выводе команды видно, что порты 6443 могут принимать соединения, что значит, что это не проблема.

2. Убедитесь, что служба прослушивает порт

Вы выполнили команду sudo ss -tuln | grep 6443, и вы видите, что что-то слушает на этом порту. Это значит, что служба Kubernetes действительно запущена и готова принимать соединения на порту 6443.

Однако, ошибка nc: connect to 129.x.x.x port 6443 (tcp) failed: No route to host говорит о проблемах с маршрутизацией. Это может указывать на несколько вещей:

  • Сетевые правила маршрутизации: Убедитесь, что маршруты настроены правильно на обоих узлах. Используйте команду ip route для проверки маршрутов.

  • Сетевые интерфейсы: Убедитесь, что служба Kubernetes выполняется на правильном интерфейсе. Проверьте файл конфигурации службы, чтобы убедиться, что она прослушивает нужный интерфейс. Могут быть ситуации, когда служба настроена на прослушивание локального интерфейса, а не на все доступные интерфейсы.

3. Проверка настройки безопасности

Системы безопасности, такие как SELinux или AppArmor, могут блокировать соединения на определенных портах. Проверьте статус SELinux с помощью:

getenforce

Если он активирован, попробуйте временно отключить его и проверьте, сможете ли вы подключиться, используя:

sudo setenforce 0

Не забудьте вернуть его в Permissive режим позже.

4. Логи и диагностика

Проверьте логи Kubernetes API Server для возможных сообщений об ошибках. Логи могут находиться в /var/log/ или в системных журналах, в зависимости от вашей конфигурации. Используйте следующие команды для просмотра логов:

sudo journalctl -u kube-apiserver

Это может помочь обнаружить причины, по которым сервер не отвечает на запросы.

5. Тестирование подключения

Для проверки подключения к порту 6443 с удаленного узла используйте инструмент telnet:

telnet 129.x.x.x 6443

Если telnet также не удается подключиться, а пинг проходит и SSH работает, это указывает на гораздо более серьезные проблемы, связанные с маршрутизацией или с настройками сети.

Заключение

Если после выполнения всех вышеперечисленных шагов проблема не решена, возможно, стоит рассмотреть возможность подозрительных аппаратных или программных ограничений между узлами, таких как VPN, прокси-серверы или другие настройки сетевой инфраструктуры.

Если у вас есть доступ к логам и можно предоставить больше информации, это может помочь вам более быстро и эффективно устранить эту проблему. Не забывайте также сообщить об изменениях в конфигурациях, так как они могут оказать влияние на существующий системный трафик.

Оцените материал
Добавить комментарий

Капча загружается...