在此页面上
概述: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。