Назад | Перейти на главную страницу

Nginx Ingress для поддержки ipv4 и ipv6 для кластера Kubernetes IPv4

Я установил K8S Cluster, используя 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 - это все 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, отправленный.

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

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

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

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

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

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

В лазурном:

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

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

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

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