Вход 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