Узлы Kubernetes имеют недоступные маршруты

Я поддерживаю кластер Kubernetes. Узлы находятся в интрасети с 10.0.0.0/8 IP-адресами, а диапазон сети модуля равен 192.168.0.0/16.

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

0.0.0.0         10.a.b.65       0.0.0.0         UG    0      0        0 eth0
10.a.b.64       0.0.0.0         255.255.255.192 U     0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.20.0    -               255.255.255.192 !     0      -        0 -
192.168.21.128  -               255.255.255.192 !     0      -        0 -
192.168.22.64   0.0.0.0         255.255.255.192 U     0      0        0 *
192.168.22.66   0.0.0.0         255.255.255.255 UH    0      0        0 cali3859982c59e
192.168.24.128  -               255.255.255.192 !     0      -        0 -
192.168.39.192  -               255.255.255.192 !     0      -        0 -
192.168.49.192  -               255.255.255.192 !     0      -        0 -
...
192.168.208.128 -               255.255.255.192 !     0      -        0 -
192.168.228.128 10.14.170.104   255.255.255.192 UG    0      0        0 tunl0

Когда я docker exec в контейнер Calico, соединения с другими узлами сообщаются unreachable в bird:

192.168.108.64/26  unreachable [Mesh_10_15_39_59 08:04:59 from 10.a.a.a] * (100/-) [i]
192.168.112.128/26 unreachable [Mesh_10_204_89_220 08:04:58 from 10.b.b.b] * (100/-) [i]
192.168.95.192/26  unreachable [Mesh_10_204_30_35 08:04:59 from 10.c.c.c] * (100/-) [i]
192.168.39.192/26  unreachable [Mesh_10_204_89_152 08:04:59 from 10.d.d.d] * (100/-) [i]
...

В результате модули на сломанных узлах практически не могут получить доступ ни к чему в кластере.

Я попытался перезапустить сломанный узел, удалить его из кластера, запустить kubeadm reset и снова присоединиться к нему. Но все осталось по-прежнему.

Какова возможная причина и как это исправить? Спасибо заранее.


person Moycat    schedule 07.12.2020    source источник


Ответы (2)


IP по умолчанию для служб кластера, таких как coredns и т. д., составляет 10.96.0.1 и диапазон 10.0.0.0/8

вам следует изменить IP-адрес узла для узлов в кластере и снова присоединиться к ним.

or

измените маршрут по умолчанию с eth0 на tunl0, это зависит от вашей сети cni.

если вы используете calico, передайте сетевое правило и маршрут к проекту calico.

person SAEED mohassel    schedule 07.12.2020
comment
Я не уверен, что установить tunl0 в качестве шлюза по умолчанию - хорошая идея. Когда я запускаю ping -I tunl0 <some node>, он отвечает. Но когда я маршрутизирую этот IP-адрес на tunl0, ping больше не отвечает. - person Moycat; 07.12.2020
comment
Кроме того, интранет принадлежит моей компании. Извините, но я не могу изменить IP-адреса узлов. На самом деле другой кластер с настройками по умолчанию работает нормально. - person Moycat; 07.12.2020

Итак, я обновил Docker (19.03.14), Kubernetes (1.19.4) и Calico (3.17.0).

Затем я воссоздал кластер.

Теперь все работает хорошо.

person Moycat    schedule 09.12.2020