事实上,我们已经了解到网格、集群和网络之间的存在各种约束,例如,在某些环境中,网络和集群直接相关。Istio单网格设计下的单控制平面VPN连接拓扑需要满足以下几个条件:
·运行Kubernetes 1.9或更高版本的两个或更多集群。
·能够在其中一个集群上部署Istio控制平面。
·RFC1918网络、VPN或满足以下要求的更高级网络技术:
·单个集群pod CIDR范围和服务CIDR范围在多集群环境中必须是唯一的,并且应当不重叠。
·每个集群中的所有pod CIDR必须可以相互路由。
·所有Kubernetes控制平面API服务器必须可以相互路由。
此外,为了跨集群支持DNS名称解析,必须确保在所有需要跨集群服务调用的集群中定义对应的命名空间、服务和服务账户;例如,集群cluster1中命名空间ns1的服务service1需要调用集群cluster2中命名空间ns2的服务service2,那么在集群cluster1中为了支持服务名的DNS解析,需要在集群cluster1中创建一个命名空间ns2以及该命名空间下的服务service2。
以下示例中的两个Kubernetes集群的网络假定已经满足上述要求,每个集群中的pod都能够互相路由,也就是说网络可通并且端口是可访问的(如果采用的是类似于阿里云的公有云服务,请确保这些端口在安全组规则下是可以访问的;否则服务间的调用会受到影响)。
两个Kubernetes集群的pod CIDR范围和服务CIDR范围定义如表12-1所示:
表12-1 CIDR范围定义
