Kubernetes集群支持为Pod或者Service申请IPV4或者IPV6的地址空间。
kube-apiserver --service-cluster-ip-range=<IPv4 CIDR>, |
kube-controller-manager --cluster-cidr= --service-cluster-ip-range= --node-cidr-mask-size-ipv4|--node-cidr-mask-size-ipv6 |
kube-proxy --cluster-cidr= |
kubelet .status.addresses |
如上所示,使用Kubernetes组件设置IPV4或者IPV6的地址空间
SingleStack 申请单协议栈 |
PreferDualStack
|
RequireDualStack 申请双协议栈,从.spec.ClusterIPs中选择合适的IP地址 |
如上所示,设置Service同时使用IPV4以及IPV6
如上所示,设置Service仅支持IPV4
如上所示,设置headless类型Service的IP配置
如上所示,当设置service.kubernetes.io/topology-mode为auto,使用拓扑感知的方式路由,即根据实际流量的大小,将实际流量平衡地调度到所有区域zone中
如上所示,使用静态的方式直接指定分配的IP地址,Kubernetes集群支持动态地从地址空间中选择分配一个IP地址,或者直接指定一个静态的IP地址
如上所示,Kubernetes集群为避免申请IP地址的时候发生地址冲突,使用公式min(max(16, cidrSize / 16), 256)约束静态IP地址与动态IP地址的个数比例的申请,该公式表示静态IP地址的最小偏移量,10.96.0.0/24 的地址个数是256-2=254,min(max(16, 256/16), 256) = min(16, 256) = 16,静态地址范围是10.96.0.1到10.96.0.16,而动态的地址最大值是 10.96.0.254
如上所示,10.96.0.0/20的地址个数是4096-2= 4094,min(max(16, 4096/16), 256) = min(256, 256) = 256,静态地址范围是10.96.0.1到10.96.1.0,而动态的地址最大值是 10.96.15.254
如上所示,10.96.0.0/16的地址个数是65536-2=65534,min(max(16, 65536/16), 256) = min(4096, 256) = 256,静态地址范围是10.96.0.1到10.96.1.0,而动态的地址最大值是 10.96.255.254