Kube-OVN 本身支持一个集群内同时存在 IPv4 和 IPv6 的子网,但是由于 Kubernetes 控制平面的一些限制,如果 Pod 网络协议和 Kubernetes 控制平面不一致,则服务发现等功能无法正常工作。我们建议在使用 IPv6 子网前,将 Kubernetes 的控制平面也设置为 IPv6 协议,以免遇到一些网络方面的问题。
创建 IPv6 子网
- cat <<EOF | kubectl create -f -
- apiVersion: kubeovn.io/v1
- kind: Subnet
- metadata:
- name: ipv6
- spec:
- cidrBlock: 2001:4860::/32
- excludeIps:
- - 2001:4860::1
- gateway: 2001:4860::1
- gatewayType: distributed
- namespaces: [ls2]
- natOutgoing: false
- private: false
- protocol: "IPv6"
- EOF
创建 namespace 和 pod 验证子网生效
- [root@node2 yamls]# kubectl create ns ls2
- namespace/ls2 created
- [root@node2 yamls]# kubectl run nginx --image=nginx:alpine -n ls2
- deployment.apps/nginx created
- [root@node2 yamls]# kubectl get pod -n ls2 -o wide
- NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
- nginx-74d5899f46-n558f 1/1 Running 0 7s 2001:4860::800:ff:fe00:1 node1 <none> <none>