我正在查看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
的广告连播中有以上k8s
确切地(就labels
而言)驻留在什么地方?
答案 0 :(得分:1)
Istio坚持使用labeling paradigm on Kubernetes来标识集群中的资源。
由于这个特定的DestinationRule
旨在在网络级别确定哪些后端将处理请求,因此将其定位为Deployment中的Pod,而不是Deployment本身(因为这是没有任何网络功能的抽象资源)
Istio sample application repository中就是一个很好的例子:
Deployment
没有任何version: v1
标签。但是,分组在其中的豆荚可以:
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