我正在尝试使用Kuma创建一个服务网格的演示程序,并且在文档中查看示例时,我对如何配置流量分割感到困惑。我有两个版本的微服务,根据Kubernetes配置中定义的环境变量返回不同的结果。与吊舱相关的服务由其配置配置来配置(不确定这是否是正确的方法):
apiVersion: v1
kind: Pod
metadata:
name: dntapi-mil
namespace: meshdemo
labels:
uservice: dntapi
format: military
spec:
containers:
- name: dntapi
image: meshdemo:dntapi
ports:
- name: http
containerPort: 4000
env:
- name: MILITARY
value: "true"
---
apiVersion: v1
kind: Pod
metadata:
name: dntapi-std
namespace: meshdemo
labels:
uservice: dntapi
format: standard
spec:
containers:
- name: dntapi
image: meshdemo:dntapi
ports:
- name: http
containerPort: 4000
env:
- name: MILITARY
value: "false"
---
apiVersion: v1
kind: Service
metadata:
name: dntapi
namespace: meshdemo
spec:
selector:
uservice: dntapi
format: military
ports:
- protocol: TCP
port: 4000
targetPort: 4000如果我更改服务上的选择器,但查看拆分通信量的Kuma示例,则从纯K8s的角度看:
conf:
split:
- weight: 90
destination:
kuma.io/service: redis_default_svc_6379
version: '1.0'
- weight: 10
destination:
kuma.io/service: redis_default_svc_6379
version: '2.0'当与服务相关联时,“版本”指的是什么(我不得不承认,我不明白为什么会有两个具有相同标识符的服务)。这些是K8s选择器吗?
我应该补充一点,当我使用kumactl检查服务时,我看到了两个用于这个微服务的服务,一个没有端口名:
dntapi-std_meshdemo_svc Online 1/1
dntapi_meshdemo_svc_4000 Online 1/1提前谢谢。
发布于 2022-04-29 00:50:00
将您的服务定义更改为只使用两个工作负载变体共同使用的标签(类似于uservice: dntapi)。然后将format标签作为Kuma TrafficRoute目的地中的“标记”使用,就像示例使用version标记一样(这是/可以直接从version标签派生)。这将允许您控制将多少流量发送到标记为format: standard的Pods,以及发送到标记为format: military的Pods的百分比。
另一个例子请参见https://github.com/kumahq/kuma-demo/tree/master/kubernetes。向下滚动到“流量路由”部分;该示例完成了我前面描述的内容。
https://stackoverflow.com/questions/72034146
复制相似问题