Я установил 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