Kubernetes 中如何做到 AB 分流

2022-04-19 09:58:28 +08:00
 idblife
就是把所有的服务分成 AB 两组,
平常流量随机进入 AB ,A 组服务也能调用 B 组服务。
在发布的特定时间段,AB 互相隔绝,做到先发布 A 组再发布 B 组。
4377 次点击
所在节点    Kubernetes
51 条回复
minmini
2022-04-19 09:59:58 +08:00
service mesh?
armyHcz
2022-04-19 10:03:39 +08:00
这不就是 service 的流量分配吗,类似 nginx 的负载均衡
idblife
2022-04-19 10:06:15 +08:00
@armyHcz
service 层面的负载均衡做不到 AB 两组网络流量隔离吧
idblife
2022-04-19 10:06:35 +08:00
@minmini
istio 可以做到,但是性能垃圾
helone
2022-04-19 10:08:29 +08:00
istio
hwdef
2022-04-19 10:09:46 +08:00
平常用 service ,特定时段用 networkpolicy?
idblife
2022-04-19 10:18:32 +08:00
@helone
性能不行啊
rushssss
2022-04-19 10:55:42 +08:00
只用原生 service 实现的话,可以考虑 A 、B 两组服务打上两组标签,如 service=backend,group=a; service=backend,group=b


建立一个 svc ,平时 selecor 只指定 service=backend 就行,这样 AB 两组都会被选择到

需要的时候增加 selector 的条件,即可实现流量到指定的 group
pigmen
2022-04-19 11:02:24 +08:00
@idblife #7 哪里来的结论,istio (背后主要是 envoy )性能不行?
zhanggg
2022-04-19 11:08:12 +08:00
ingress + service selector + networkpolicy 组合试试
FullBridgeRect
2022-04-19 11:17:08 +08:00
@pigmen 可能想表达 iptables ?用过是有明显损耗,但不至于不行吧
NathanInMac
2022-04-19 11:19:20 +08:00
就楼主说的这点需求 nginx 也能做到
idblife
2022-04-19 11:22:02 +08:00
@pigmen
实战经验
idblife
2022-04-19 11:22:40 +08:00
@FullBridgeRect
@pigmen
istio 你们上过生产没?
idblife
2022-04-19 11:22:57 +08:00
@NathanInMac
求 nginx 指教
binfengxy
2022-04-19 11:23:05 +08:00
性能垃圾? 性能不是现在很多服务最后才考虑的事情么? XD
idblife
2022-04-19 11:24:23 +08:00
@rushssss
这个思路不错,不过我们有几百个服务,操作起来比较繁琐,但是值得试试,多谢
idblife
2022-04-19 11:25:23 +08:00
@binfengxy
我们是实际用过 istio 的。。。
binfengxy
2022-04-19 11:41:27 +08:00
关键是需求怎么定吧?感觉这个比较难根据实际弄清楚

下面是我当时做灰度发布时候定的初始目标,然后 pipeline 按这个要求去改.

发出来大家讨论一下,希望多多给建议,谢谢!

需要达成的目标

1. 可以手动指定某个老版本和最新版本同时发布在生产环境中;
2. 实现发布新版本时,让测试人员对新版本进行线上测试,普通用户依旧访问老版本;
3. 可以灵活控制新老版本的访问流量比例及运行服务器副本( pod )数量;
4. 保证同一个用户持续稳定访问一个版本,而不是首次请求新版本,后面可能请求老版本导致 404 等错误;
5. 在一个项目中,需要在部署环境中存在 2 个不同版本的发布;
6. 1 个版本为当前提交并打 tag 的 image 版本,另一个版本为指定的 tag 且发布成功的 image 版本(若不指定则默认为上个 tag 对应的 image 版本);
7. 确保当前版本号和指定的版本号以变量的方式注入到对应的发布版本 image 中;
Hanggi
2022-04-19 12:28:44 +08:00
istio 性能垃圾?头一回听。

我们这边生产环境,不算 replica 几十个服务统一 istio 管理流量。

服务底层都是 envoy 做转发,怎么会有性能问题,还是再看看是不是你配置有问题。

Istio 是正解。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/847814

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX