Kubernetes 在istio中推送destinationrule时会发生什么
我最近开始研究istio,对目标规则配置感到困惑 假设我有一个服务a,后面有10个吊舱。我推送了一个目标规则,它有两个子集,标签version=v1和version=v2 所以我想知道引擎盖下的10个豆荚会发生什么?它们会自动分为两个子集还是保持未标记状态?或者,只有当POD本身标有version=v1和version=v2时,子集才有效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中的子集参数定义标识版本特定
非常感谢 一般目的是设置
DestinationRule
资源,以指定网络流量将如何到达底层Kubernetes群集吊舱。
Istio中的子集
参数定义标识版本特定实例的标签
下面的IstioDestinationRule
配置示例演示了它的工作原理,并可能重现您的案例:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
实际上,labelversion:v1
表示只有Kubernetes中标记有相同标签的吊舱才会接收网络流量;因此,同样的方法也适用于labelversion:v2
Istio中有多个可用资源可以扩展网络管理功能,如中所述。目的规则只是“定义”底层POD的子集。具有子集中指定的标签的任何pod都被视为该子集的一部分,然后可以在VirtualService中路由到。如果您的POD没有对应于任何已定义子集的标签,则它们将不会接收路由到特定子集的流量。例如,如果您在VirtualService中设置了一个规则,将100%的流量发送到子集v1,并且您没有具有相应版本=v1标签的POD,那么您的POD将不会接收流量,客户端调用将失败。请注意,您不必将流量路由到子集,还可以设置规则,只路由到实现该服务的任何pod。当POD同时运行多个版本的服务时,子集用于分发流量