我刚刚阅读了istio 1.0.0的文档,尤其是它的概念。我想了解一件事,尤其是DestinationRule
的存在。因此,在使用Istio之前,暴露容器的唯一方法是通过Kubernetes的Service
对象。现在,使用Istio,有DestinationRule
和VirtualService
。
我了解在Kubernetes的服务中,我们可以定义service
路由流量时应使用哪个pod的标签。在istio中,我们还可以通过使用DestionationRule
的{{1}}字段来做到这一点。如果我们在同一名称空间中有spec.subsets.label
和Service
对象,会发生什么?彼此冲突吗?
答案 0 :(得分:4)
它们相互补充。您仍然必须定义Kubernetes服务,但是Istio DestinationRules
将允许您通过标签优化该服务中的“子集”,然后在VirtualService
对象中使用的子集之间智能地路由流量。您仍然可以将Kubernetes服务视为全局入口点,但是Istio将允许您声明可能指向不同部署的“版本”,从而进一步推进了路由工作。
请参见istio文档(https://istio.io/docs/reference/config/istio.networking.v1alpha3/#VirtualService)VirtualService
定义与DestinationRules
中声明的子集之间的关系。
您可以在子集中看到的标签必须与在部署/吊舱中设置的标签相匹配。