Istio 子集是关于什么的
What's Istio Subsets all about
任何人都可以用简单的方式解释 istio 子集和目标规则,并解释他们试图通过引入子集来解决的问题。
DestinationRule
是一种资源,在路由发生在 Service
之后添加额外的路由策略,例如假设您有以下服务:
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: default
spec:
selector:
app: my-service
ports:
- name: http
protocol: TCP
port: 80
这个 Service
可以路由到多个资源,它会选择任何包含标签 app: my-service
的 pod,这意味着您可以拥有例如同一服务的不同版本 运行 并行使用每个部署。
现在,使用 DestinationRule
您可以在此基础上添加额外的路由策略,子集意味着您的 pods 的一部分,您可以通过标签识别它,例如:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: my-service-ab
spec:
host: my-service.default.svc.cluster.local
trafficPolicy:
loadBalancer:
simple: LEAST_CONN
subsets:
- name: a-test
labels:
version: v3
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
此 DestinationRule
对所有流向名为 a-test 的子集的流量使用循环负载平衡策略,该子集由带有标签(版本:v3)的端点(例如,pods)组成.这对于 A/B 测试等场景很有用,或者让您的多个版本并行服务 运行。
此外,您可以为子集指定自定义 TrafficPolicies,这将覆盖在服务级别定义的 TrafficPolicies。
任何人都可以用简单的方式解释 istio 子集和目标规则,并解释他们试图通过引入子集来解决的问题。
DestinationRule
是一种资源,在路由发生在 Service
之后添加额外的路由策略,例如假设您有以下服务:
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: default
spec:
selector:
app: my-service
ports:
- name: http
protocol: TCP
port: 80
这个 Service
可以路由到多个资源,它会选择任何包含标签 app: my-service
的 pod,这意味着您可以拥有例如同一服务的不同版本 运行 并行使用每个部署。
现在,使用 DestinationRule
您可以在此基础上添加额外的路由策略,子集意味着您的 pods 的一部分,您可以通过标签识别它,例如:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: my-service-ab
spec:
host: my-service.default.svc.cluster.local
trafficPolicy:
loadBalancer:
simple: LEAST_CONN
subsets:
- name: a-test
labels:
version: v3
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
此 DestinationRule
对所有流向名为 a-test 的子集的流量使用循环负载平衡策略,该子集由带有标签(版本:v3)的端点(例如,pods)组成.这对于 A/B 测试等场景很有用,或者让您的多个版本并行服务 运行。
此外,您可以为子集指定自定义 TrafficPolicies,这将覆盖在服务级别定义的 TrafficPolicies。