Вход Nginx для поддержки ipv4 и ipv6 для кластера kubernetes IPv4

Я установил кластер K8S с использованием 3 виртуальных машин (1 мастер, 2 рабочих).

VM1: Eth0: IPv4-A1, Eth1: IPv4-B1, IPv6-C1

VM1: Eth0: IPv4-A2, Eth1: IPv4-B2, IPv6-C2

VM1: Eth0: IPv4-A3, Eth1: IPv4-B3, IPv6-C3

Мой K8S Cluster - все IPv4 - PodIp, serviceIP - все Ipv4 и работает отлично.

Я ссылался на https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example для развертывания примера приложения, демонстрирующего его через вход с помощью nginx.

Я могу связаться с сервисом по IPv4-адресу (как A, так и B). Но я не могу связаться с сервисом с помощью Ipv6.

Затем я создал службу NodePort для предоставления доступа к службе доступа, и теперь я вижу следующие рабочие узлы.

netstat -anlp | grep -w LISTEN | grep 32407
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)
tcp6       0      0 :::32407                :::*                    LISTEN      -               

Теперь, когда я пытаюсь получить доступ к сервису с помощью Ipv6, он просто отключается.

Когда я пытаюсь увидеть, что происходит с помощью Wireshark.

Когда для поиска используется IPv4 - TCP, то HTTP GET и мы получаем ответ.

Когда используется IPv6 - TCP установлен, даже TCP KeepAlive обменивается во время ожидания curl. Но я не вижу ответа на мой HTTP-запрос GET.

Не уверен, что происходит внутри рабочего узла:-(Я ничего не вижу в wireshark.

Бит поиска в Google дал намек на то, что K8S использует Netfilter для доставки пакетов в правильный пункт назначения. Разве это не способно сделать это для пакетов IPv6?

Пожалуйста, помогите.

1 ответ

Согласно официальной документации gcloud:

Сети VPC поддерживают только одноадресный трафик IPv4. Они не поддерживают широковещательный, многоадресный или трафик IPv6 в сети: виртуальные машины в сети VPC могут отправлять только адресаты IPv4 и получать трафик только от источников IPv4. Можно создать IPv6-адрес для глобального балансировщика нагрузки.

Пожалуйста, прочитайте эту статью о поддержке ipv6 и конфигурации с двумя стеками

На лазурном:

В настоящее время IPv6 для виртуальной сети Azure находится в открытом доступе. Этот предварительный просмотр предоставляется без соглашения об уровне обслуживания и не рекомендуется для рабочих нагрузок. Вы можете найти больше информации здесь

Обсуждение поддержки ipv6 на github

В дополнение к работе кластера с поддержкой ipv, кластер должен иметь реализацию с двумя стеками, поддерживающую IPv4 и IPv6 для модулей и служб. В качестве примера, пожалуйста, посмотрите здесь и здесь и здесь kubeadm-dind-cluster

На данный момент, вероятно, Amazon предоставляет самую большую поддержку IPv6

Другие вопросы по тегам