Istio的`DestinationRule`与Kubernetes`Service`之间的区别?

时间:2018-08-07 06:11:22

标签: kubernetes istio

我刚刚阅读了istio 1.0.0的文档,尤其是它的概念。我想了解一件事,尤其是DestinationRule的存在。因此,在使用Istio之前,暴露容器的唯一方法是通过Kubernetes的Service对象。现在,使用Istio,有DestinationRuleVirtualService

我了解在Kubernetes的服务中,我们可以定义service路由流量时应使用哪个pod的标签。在istio中,我们还可以通过使用DestionationRule的{​​{1}}字段来做到这一点。如果我们在同一名称空间中有spec.subsets.labelService对象,会发生什么?彼此冲突吗?

1 个答案:

答案 0 :(得分:4)

它们相互补充。您仍然必须定义Kubernetes服务,但是Istio DestinationRules将允许您通过标签优化该服务中的“子集”,然后在VirtualService对象中使用的子集之间智能地路由流量。您仍然可以将Kubernetes服务视为全局入口点,但是Istio将允许您声明可能指向不同部署的“版本”,从而进一步推进了路由工作。

请参见istio文档(https://istio.io/docs/reference/config/istio.networking.v1alpha3/#VirtualServiceVirtualService定义与DestinationRules中声明的子集之间的关系。

您可以在子集中看到的标签必须与在部署/吊舱中设置的标签相匹配。