Kube-OVN 本身支持一个集群内同时存在 IPv4 和 IPv6 的子网,但是由于 Kubernetes 控制平面的一些限制,如果 Pod 网络协议和 Kubernetes 控制平面不一致,则服务发现等功能无法正常工作。我们建议在使用 IPv6 子网前,将 Kubernetes 的控制平面也设置为 IPv6 协议,以免遇到一些网络方面的问题。

创建 IPv6 子网

  1. cat <<EOF | kubectl create -f -
  2. apiVersion: kubeovn.io/v1
  3. kind: Subnet
  4. metadata:
  5. name: ipv6
  6. spec:
  7. cidrBlock: 2001:4860::/32
  8. excludeIps:
  9. - 2001:4860::1
  10. gateway: 2001:4860::1
  11. gatewayType: distributed
  12. namespaces: [ls2]
  13. natOutgoing: false
  14. private: false
  15. protocol: "IPv6"
  16. EOF

创建 namespace 和 pod 验证子网生效

  1. [root@node2 yamls]# kubectl create ns ls2
  2. namespace/ls2 created
  3. [root@node2 yamls]# kubectl run nginx --image=nginx:alpine -n ls2
  4. deployment.apps/nginx created
  5. [root@node2 yamls]# kubectl get pod -n ls2 -o wide
  6. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
  7. nginx-74d5899f46-n558f 1/1 Running 0 7s 2001:4860::800:ff:fe00:1 node1 <none> <none>