在此页面上
概述:IPv4 和 IPv6 双堆栈网络
总结 云原生 Contrail® 网络™ 支持 Kubernetes 群集的双堆栈网络。当您启动 Kubernetes 集群时,默认情况下会启用双堆栈。然后,云原生 Contrail 网络部署人员会创建双堆栈(IPv4、IPv6)Pod 网络和服务网络。
IPv4 和 IPv6 概述
小型、中型和企业网络的规模和复杂性不断增加,这意味着对 IP 地址的需求比以往任何时候都大。由于对 IP 地址的需求不断增加,服务提供商分配的 IPv4 地址数量稀缺。此外,服务提供商必须同时为当前 IPv4 客户和新的 IPv6 客户提供服务。由于 IPv4 构成了当前网络基础架构的大部分,因此这些 IPv6 网络中的大多数会尝试与 IPv4 目标进行通信。
IPv4 地址的稀缺性并不新鲜,双堆栈虚拟网络等现代解决方案可促进 IPv4 和 IPv6 之间的高效过渡。双堆栈设备具有发送和接收 IPv4 和 IPv6 数据包的网络接口。对于虚拟网络,Kubernetes 群集的双堆栈功能会将 IPv4 地址和 IPv6 地址分配给 Pod。
双堆栈网络先决条件
双堆栈网络需要满足以下条件:
-
Kubernetes 版本 1.20 或更高版本
-
提供商对双堆栈网络的支持
您的提供商必须能够为 Kubernetes 节点提供可路由的 IPv4 和 IPv6 网络接口。
-
支持双堆栈的网络插件(随云原生 Contrail 网络提供)
实现双栈网络
以下 Kubernetes 发行版支持双堆栈网络:
- 库比德姆
- Kubespray
您必须设置启用双堆栈 featureGate
的 Kubeadm 或 Kubespray Kubernetes 集群。
请考虑以下 YAML 文件。请注意,双堆栈 featureGate
标志为 , IPv6DualStack: true
并且 IPv6 无类别域间路由 (CIDR) 子网显示为 podSubnet
和 serviceSubnet
。
apiVersion: kubeadm.k8s.io/v1beta2 bootstrapTokens: - groups: - system:bootstrappers:kubeadm:default-node-token token: abcdef.0123456789abcdef ttl: 24h0m0s usages: - signing - authentication kind: InitConfiguration localAPIEndpoint: advertiseAddress: 0.0.0.0 bindPort: 6443 nodeRegistration: name: hostname criSocket: unix:///var/run/crio/crio.sock kubeletExtraArgs: fail-swap-on: "false" network-plugin: "cni" cni-conf-dir: "/etc/cni/net.d" cni-bin-dir: "/opt/cni/bin" --- apiServer: timeoutForControlPlane: 4m0s apiVersion: kubeadm.k8s.io/v1beta2 certificatesDir: /etc/kubernetes/pki clusterName: kubernetes-contrail-dev controllerManager: {} dns: type: CoreDNS etcd: local: dataDir: /var/lib/etcd imageRepository: k8s.gcr.io kind: ClusterConfiguration kubernetesVersion: v1.20.0 networking: dnsDomain: cluster.local serviceSubnet: 10.96.0.0/12,2222:0:0:0::/108 podSubnet: 192.168.0.0/16,2001:0:0:0::/64 scheduler: {} featureGates: IPv6DualStack: true --- apiVersion: kubelet.config.k8s.io/v1beta1 authentication: anonymous: enabled: false webhook: cacheTTL: 0s enabled: true x509: clientCAFile: /etc/kubernetes/pki/ca.crt authorization: mode: Webhook webhook: cacheAuthorizedTTL: 0s cacheUnauthorizedTTL: 0s cgroupDriver: systemd clusterDNS: - 10.96.0.10 clusterDomain: cluster.local cpuManagerReconcilePeriod: 0s evictionPressureTransitionPeriod: 0s fileCheckFrequency: 0s healthzBindAddress: 127.0.0.1 healthzPort: 10248 httpCheckFrequency: 0s imageMinimumGCAge: 0s kind: KubeletConfiguration logging: {} nodeStatusReportFrequency: 0s nodeStatusUpdateFrequency: 0s rotateCertificates: true runtimeRequestTimeout: 0s shutdownGracePeriod: 0s shutdownGracePeriodCriticalPods: 0s staticPodPath: /etc/kubernetes/manifests streamingConnectionIdleTimeout: 0s syncFrequency: 0s volumeStatsAggPeriod: 0s
podNetwork
的 IPv6 子网。您创建的后续容器网络将包含 IPv6 子网。因此,Pod 会收到 IPv4 和 IPv6 地址。
云原生 Contrail 网络目前不支持 IPv6 服务。服务网络仅支持 IPv4。