服务部署在k8s集群上,目前已实现IPv4/IPv6双协议栈:
- 实现的功能:
- 双协议栈Pod网络(每个Pod分配一个IPv4和IPv6地址)
- IPv4和IPv6启用的Service
- Pod的集群外出口通过IPv4和IPv6路由
- 具体实现(IPv6方面):
2.1 基础环境支持IPv6
2.1.1 网络运行商支持IPv6协议并已提供IPv6地址;
2.1.2 集群各个物理节点配置IPv6
a. 加载ipv6模块
modprobe ipv6
b. 配置内核参数,支持ipv6功能
net.ipv6.conf.all.disable_ipv6 = 0net.ipv6.conf.default.disable_ipv6 = 0net.ipv6.conf.lo.disable_ipv6 = 0net.ipv6.conf.all.forwarding=1
c. 启用Ipv6网络并配置ipv6地址
NETWORKING_IPV6=yesIPV6INIT=yesIPV6_AUTOCONF=noIPV6ADDR=IPV6_DEFAULTGW=
2.2 k8s集群启用ipv6
2.2.1 kubernetes从1.16+以后支持的ipv6协议栈,此次部署为k8s 18+版本,k8s各个核心组件在集群初始化过程会开启ipv6配置;
a. kube-apiserver
--feature-gates=IPv6DualStack=true--service-cluster-ip-range=10.96.0.0/12,fd00::/108
b. kube-controller-manager
--feature-gates=IPv6DualStack=true--service-cluster-ip-range=10.96.0.0/12,fd00::/108--cluster-cidr=172.16.0.0/16,fc00::/48--node-cidr-mask-size-ipv4=24--node-cidr-mask-size-ipv6=64
c. kubelet
KUBELET_EXTRA_ARGS="--feature-gates=IPv6DualStack=true"
d. kube-proxy
data:config.conf: |-......featureGates:IPv6DualStack: trueclusterCIDR: 172.16.0.0/16,fc00::/48
2.2.2 k8s集群的网络插件calico支持ipv5
"ipam": {"type": "calico-ipam","assign_ipv4": "true","assign_ipv6": "true"},- name: IPvalue: "autodetect"- name: IP6value: "autodetect"- name: CALICO_IPV4POOL_CIDRvalue: "172.16.0.0/16"- name: CALICO_IPV6POOL_CIDRvalue: "fc00::/48"- name: FELIX_IPV6SUPPORTvalue: "true"
