Kubernetes 在istio中推送destinationrule时会发生什么

Kubernetes 在istio中推送destinationrule时会发生什么,kubernetes,istio,kubernetes-pod,Kubernetes,Istio,Kubernetes Pod,我最近开始研究istio,对目标规则配置感到困惑 假设我有一个服务a,后面有10个吊舱。我推送了一个目标规则,它有两个子集,标签version=v1和version=v2 所以我想知道引擎盖下的10个豆荚会发生什么?它们会自动分为两个子集还是保持未标记状态?或者,只有当POD本身标有version=v1和version=v2时,子集才有效 非常感谢 一般目的是设置DestinationRule资源,以指定网络流量将如何到达底层Kubernetes群集吊舱。 Istio中的子集参数定义标识版本特定

我最近开始研究istio,对目标规则配置感到困惑

假设我有一个服务a,后面有10个吊舱。我推送了一个目标规则,它有两个子集,标签version=v1和version=v2

所以我想知道引擎盖下的10个豆荚会发生什么?它们会自动分为两个子集还是保持未标记状态?或者,只有当POD本身标有version=v1和version=v2时,子集才有效


非常感谢

一般目的是设置
DestinationRule
资源,以指定网络流量将如何到达底层Kubernetes群集吊舱。 Istio中的
子集
参数定义标识版本特定实例的标签

下面的Istio
DestinationRule
配置示例演示了它的工作原理,并可能重现您的案例:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: reviews
spec:
  host: reviews
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
实际上,label
version:v1
表示只有Kubernetes中标记有相同标签的吊舱才会接收网络流量;因此,同样的方法也适用于label
version:v2

Istio中有多个可用资源可以扩展网络管理功能,如中所述。

目的规则只是“定义”底层POD的子集。具有子集中指定的标签的任何pod都被视为该子集的一部分,然后可以在VirtualService中路由到。如果您的POD没有对应于任何已定义子集的标签,则它们将不会接收路由到特定子集的流量。例如,如果您在VirtualService中设置了一个规则,将100%的流量发送到子集v1,并且您没有具有相应版本=v1标签的POD,那么您的POD将不会接收流量,客户端调用将失败。请注意,您不必将流量路由到子集,还可以设置规则,只路由到实现该服务的任何pod。当POD同时运行多个版本的服务时,子集用于分发流量