标签在 istio 的 DestinationRule 中的作用
Role of labels in istio's DestinationRule
我正在查看 istio
文档的 traffic management section。
在一个DestinationRule
示例中,它配置了几个服务子集。
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: my-destination-rule
spec:
host: my-svc
trafficPolicy:
loadBalancer:
simple: RANDOM
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
- name: v3
labels:
version: v3
我的问题(因为文档中并不清楚)是关于 spec.subsets.name.labels
的作用
这些labels
指的是:
- 相应的标签
k8s
Deployment
?
或
Deployment
的 pods 中的标签?
上述 labels
究竟位于何处(根据 k8s
清单)?
Istio 坚持 labeling paradigm on Kubernetes 用于识别集群内的资源。
由于这个特定的 DestinationRule
旨在确定,在网络级别,哪些后端将服务于请求,目标是 pods 在 Deployment 中而不是 Deployment 本身(因为这是一个抽象没有任何网络功能的资源)。
一个很好的例子是 Istio sample application repository:
Deployment
没有任何 version: v1
标签。但是,其中分组的 pods 确实:
apiVersion: apps/v1
kind: Deployment
metadata:
name: tcp-echo
spec:
replicas: 1
selector:
matchLabels:
app: tcp-echo
version: v1
template:
metadata:
labels:
app: tcp-echo
version: v1
spec:
containers:
- name: tcp-echo
image: docker.io/istio/tcp-echo-server:1.1
imagePullPolicy: IfNotPresent
args: [ "9000", "hello" ]
ports:
- containerPort: 9000
并且 DestinationRule
通过版本标签挑选这些对象:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: tcp-echo-destination
spec:
host: tcp-echo
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
我正在查看 istio
文档的 traffic management section。
在一个DestinationRule
示例中,它配置了几个服务子集。
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: my-destination-rule
spec:
host: my-svc
trafficPolicy:
loadBalancer:
simple: RANDOM
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
- name: v3
labels:
version: v3
我的问题(因为文档中并不清楚)是关于 spec.subsets.name.labels
这些labels
指的是:
- 相应的标签
k8s
Deployment
?
或
Deployment
的 pods 中的标签?
上述 labels
究竟位于何处(根据 k8s
清单)?
Istio 坚持 labeling paradigm on Kubernetes 用于识别集群内的资源。
由于这个特定的 DestinationRule
旨在确定,在网络级别,哪些后端将服务于请求,目标是 pods 在 Deployment 中而不是 Deployment 本身(因为这是一个抽象没有任何网络功能的资源)。
一个很好的例子是 Istio sample application repository:
Deployment
没有任何 version: v1
标签。但是,其中分组的 pods 确实:
apiVersion: apps/v1
kind: Deployment
metadata:
name: tcp-echo
spec:
replicas: 1
selector:
matchLabels:
app: tcp-echo
version: v1
template:
metadata:
labels:
app: tcp-echo
version: v1
spec:
containers:
- name: tcp-echo
image: docker.io/istio/tcp-echo-server:1.1
imagePullPolicy: IfNotPresent
args: [ "9000", "hello" ]
ports:
- containerPort: 9000
并且 DestinationRule
通过版本标签挑选这些对象:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: tcp-echo-destination
spec:
host: tcp-echo
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2