我如何在AKS上将传入的Ingress流量同时暴露给IPv4或IPv6?

问题描述 投票:1回答:1

我正在使用 kubernetesingress-nginx。 我想在同一个Ingress控制器上实现IPv4和IPv6的 "双栈"。

舵机图 控制器.service.loadBalancerIP 只接受一个字符串,我认为只能是一个单一的IP地址。IPv4或IPv6。

我如何在AKS上将Ingress流量同时暴露在IPv4或IPv6上?

(我不想为此设置两个入口控制器)

kubernetes ipv6 azure-aks
1个回答
1
投票

从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上做到这一点。


1
投票

要同时允许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记录)。

© www.soinside.com 2019 - 2024. All rights reserved.