我正在使用 kubernetesingress-nginx。 我想在同一个Ingress控制器上实现IPv4和IPv6的 "双栈"。
舵机图 控制器.service.loadBalancerIP 只接受一个字符串,我认为只能是一个单一的IP地址。IPv4或IPv6。
我如何在AKS上将Ingress流量同时暴露在IPv4或IPv6上?
(我不想为此设置两个入口控制器)
从Kubernetes v1.16 IPv4IPv6双栈 加为 阿尔法 功能,这意味着您需要通过以下方式启用它 特色闸门.
要启用 IPv4IPv6 双栈,请启用
IPv6DualStack
特征门 的相关组件,并设置双栈集群网络分配。
- kube -apiserver:
--feature-gates="IPv6DualStack=true"
- kube-apiserver: kube-controller-manager:
--feature-gates="IPv6DualStack=true"
--cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR>
--service-cluster-ip-range=<IPv4 CIDR>,<IPv6 CIDR>
--node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6
默认IPv4为24,IPv6为64。- kubelet:
--feature-gates="IPv6DualStack=true"
- kube-proxy:
--cluster-cidr=<IPv4 CIDR>,<IPv6 CIDR>
--feature-gates="IPv6DualStack=true"
注意: 一个IPv4 CIDR的例子。
10.244.0.0/16
(尽管你需要提供自己的地址范围) 一个IPv6 CIDR的例子。fdXY:IJKL:MNOP:15::/64
(这显示了格式,但并不是一个有效的地址--请参见 RFC 4193)
你还需要一个支持双栈的CNI,例如Calico,你可以查看如何使用CNI 启用双栈.
不幸的是,我不知道如何在AKS上做到这一点。
要同时允许IPv4和IPV6,最简单的是为你的NGINX Ingress控制器配置两个kubernetes服务。
正常部署你的Charts,然后用一个基于原始kubernetes manifest的 https:/github.comkubernetesingress-nginxblobmasterchartsingress-nginxtemplatescontroller-service.yaml。
一个服务将默认为IPFamily IPv4,而第二个服务应该将ipFamily设置为IPv6。
https:/kubernetes.iodocsconceptsservices-networkingdual-stack#services。
这样您就可以让前端IP准备好处理IPv4和IPv6的流量。
然后,您可以使用外部DNS服务,让两个IP(v4v6)使用相同的DNS主机名。一个A记录,一个AAAA记录)。