RedHat 7.6, перезагрузка заставляет приложения прослушивать только сокеты tcp6

У нас есть несколько виртуальных машин vmware с установленным RHEL 7.6, недавно все они были перезагружены из-за перемещения центра обработки данных.

Проблема в том, что после перезагрузки некоторые приложения, такие как Java, kube-proxy слушают только сокеты tcp6, что странно. Даже если я перезапускаю эти приложения, они по-прежнему прослушивают только сокеты tcp6, мне нужно добавить аргументы jvm java.net.preferIPv4Stack = true , чтобы позволить ему снова прослушивать сокеты ipv4. но для kube-proxy (прокси кластера kubernetes) я не нашел решения.

Я видел, как люди говорят, что tcp6 подразумевает tcp, однако я не могу получить доступ к этим сокетам с адресом ipv4.

мой вопрос: : что может вызвать это? Я не хочу отключать ipv6, но предпочитаю ipv4.

[root@ocrpoc1 ~]# telnet 127.0.0.1 32414
Trying 127.0.0.1...
^C
[root@ocrpoc1 ~]# telnet 127.0.0.1 6443
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
^ZConnection closed by foreign host.
[root@ocrpoc1 ~]# netstat -apn | grep kube-proxy
tcp        0      0 127.0.0.1:10249         0.0.0.0:*               LISTEN      5282/kube-proxy     
tcp        0      0 X.X.X.X:60458      X.X.X.X:6443       ESTABLISHED 5282/kube-proxy     
tcp6       0      0 :::10256                :::*                    LISTEN      5282/kube-proxy     
tcp6       0      0 :::32414                :::*                    LISTEN      5282/kube-proxy

[root@ocrpoc1 ~]# nc -4 -lk 32414
Ncat: bind to 0.0.0.0:32414: Address already in use. QUITTING.
[root@ocrpoc1 ~]# nc -6 -lk 32414
Ncat: bind to :::32414: Address already in use. QUITTING.
1
задан 26 April 2020 в 12:51
1 ответ

В случае помощи другие люди могут столкнуться с этой проблемой.

это вызвано бязью. по умолчанию calico выбирает IPv4-адрес, используя метод «автоопределение», что означает «первый найденный» интерфейс с действительным IPv4-адресом.

Один узел моего кластера kubernetes создал некий контейнер Docker с помощью docker-compose, который предоставляет интерфейсы моста br-XXXXX, контейнер calico-node выбирает его при запуске.

чтобы исправить это, я отредактировал набор DaemonSet для calico-node, добавив следующую переменную env:

имя: IP_AUTODETECTION_METHOD значение: can-reach=IP-адрес моего главного узла kubernetes

1
ответ дан 26 April 2020 в 09:48

Теги

Похожие вопросы