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

Agu*_*ama 4 kubernetes istio

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

我知道在Kubernetes的服务中,我们可以定义应该service路由流量的pod的标签。在istio,我们也能够做到这一点使用DestionationRulespec.subsets.label领域。如果我们ServiceDestinationRule对象在同一个命名空间中,会发生什么?是否彼此冲突?

Joe*_*oel 6

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

请参阅istio docs(https://istio.io/docs/reference/config/networking/virtual-service/)中的VirtualService定义如何与中声明的子集相关DestinationRules

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