【问题标题】:IPv6 not supported in k8s service loadBalancerSourceRangesk8s 服务 loadBalancerSourceRanges 不支持 IPv6
【发布时间】:2020-12-03 18:20:29
【问题描述】:

在我看来,我们不能在 Kubernetes 服务 loadBalancerSourceRanges 中使用 IPv6。我将复制简化为一个非常简单的配置,如下所示:

kind: Pod
apiVersion: v1
metadata:
  name: apple-app
  labels:
    app: apple
spec:
  containers:
    - name: apple-app
      image: hashicorp/http-echo
      args:
        - "-text=apple"

---

kind: Service
apiVersion: v1
metadata:
  name: apple-service
spec:
  selector:
    app: apple
  type: "LoadBalancer"
  loadBalancerSourceRanges:
  - "2600:1700:aaaa:aaaa::aa/32"
  ports:
    - port: 5678 # Default port for image

在 GKE 上部署它,当我“kubectl describe service apple-service”时出现以下故障:

  Warning  KubeProxyIncorrectIPVersion  13m (x11 over 62m)  kube-proxy, gke-xxxx  
  2600:1700:aaaa:aaaa::aa/32 in loadBalancerSourceRanges has incorrect IP version
  Normal   EnsuringLoadBalancer         51s (x18 over 62m)  service-controller                                   
  Ensuring load balancer
  Warning  SyncLoadBalancerFailed       46s (x17 over 62m)  service-controller                                   
  Error syncing load balancer: failed to ensure load balancer: googleapi: Error 400: Invalid 
  value for field 'resource.sourceRanges[1]': '2600:1700::/32'. Must be a valid IPV4 CIDR address range., invalid

只是想确认我的结论(即 k8s 不支持此功能),或者,如果我的结论不正确,解决方法是什么。也许有办法让整个集群都在 IPv6 上,这样就可以了?

非常感谢!

【问题讨论】:

    标签: kubernetes service ipv6


    【解决方案1】:

    您看到此错误是因为 IPv6 不能在 k8s 中与 IPv4 一起使用(您可以在 ipv6-only 模式下运行 k8s,但这在 GCP 中不起作用,因为 GCP 不允许使用 ipv6 地址进行内部通信)。

    GCP VPC docs:

    VPC 网络仅支持 IPv4 单播流量。它们不支持网络内的广播、多播或IPv6流量; VPC 网络中的虚拟机只能发送到 IPv4 目标,并且只能接收来自 IPv4 源的流量。但是,可以为全局负载均衡器创建 IPv6 地址。

    K8s 1.16+ 提供了处于早期开发 (alpha) 阶段的双栈功能,允许使用 IPv6,并且可以使用 feature-gates 启用,但由于您使用的是 GKE,因此 controlplain 由 GCP 管理,因此您无法启用它(因为它是 alpha 功能,你可能不应该想要)。

    您可以在此处找到有关此双堆栈功能的更多信息: dual-stack 和这里: validate-dual-stack

    这是我在 github 上找到的与此功能相关的最新拉取请求:https://github.com/kubernetes/kubernetes/pull/91824

    我认为我们可以预期 beta 版本将很快出现在其中一个 k8s 版本中,但由于 GKE 比最新版本落后大约两个版本,我推断我们需要一些时间才能将 IPv6 与 GKE 一起使用。

    【讨论】:

      猜你喜欢
      • 2021-10-03
      • 1970-01-01
      • 2018-06-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多