k8s 微服务这种环境,最佳的开发调试方案是什么

2023-12-15 12:53:18 +08:00
 Moonkin
要求:
1.开发完的代码不能在本地部署运行,应当在 k8sj 集群中(这样服务的出流量都不需要做任何改变,本机不需要配置 k8s 的 rbac 等)
2.由于 1 ,最好是远程调试,比如 go dlv 。
3.不能有生成镜像的步骤(每次调试都要生成镜像太浪费时间)
4.不能影响线上用户,支持多人开发。识别测试请求,进入测试服务

我当前的设想是这样:
假设名字是 dev1 的老铁要开发名字是 mysvc 的服务
1.dev1-pod 是 dev1 老铁的开发机,在 k8s 集群中运行,老铁在本地开发完代码,在开发机 git pull ,make ,./run 。
2.dev1 老铁有一个 yaml ,里面是 mysvc-dev1 service 和 dev1-pod pod ,这个 service 指向这个 pod ,selector 用 dev1 就行。部署这个 yaml
3.服务 mysvc 在接收到请求后,第一步是识别特定测试标识 dev1 (比如 http header ),转发到 mysvc+标识=mysvcdev1 服务,所有服务代码都这样写。(转发功能只需要本服务名字拼接标识,当作目标服务,k8s 的 dns 可以直接解析)

但是这个设想有明显的缺点:
1.开发机不能 mount 根目录 / ,只能/home ,/var/http ,这样,也就是说开发机如果重启,通过 apt-get 安装的工具可能会丢。。
2.根据所开发的服务名字不同,mysvc-dev1 这个 service 也需要改名字,这本身不是痛点,但是 rbac 需要让所有服务都接受这类 service ,不能拒绝。
4582 次点击
所在节点    程序员
34 条回复
zicheqingluo
2023-12-15 16:46:12 +08:00
劫持下 svc 的解析到测试环境即可
julyclyde
2023-12-15 18:42:03 +08:00
其实是两件事:
1 服务注册和发现是否正常
2 各微服务之间通信是否正常
victorc
2023-12-15 19:04:48 +08:00
1.你要学会看日志,每年都要纠正校招生单步调试的坏毛病

2.都用上了微服务,设计上应该做到低耦合高聚合,其实不太需要调试,基本上就是一些 typo 错误
datoujiejie221
2023-12-15 19:45:38 +08:00
你这相当于本地调试加了个灰度,我们是 springcloud+nacos 的方案,网关根据 nacos 注册的标识来分流。
buffzty
2023-12-15 19:58:42 +08:00
部署个 wireguard 本地可以直接用 pod ip ,serviceid ,集群 dns .cluster.local 在本地和在容器内没有任何区别
还有 node port 这种东西最好别开
youngPacce
2023-12-15 19:58:56 +08:00
你想在生产 debug ?阻塞用户的请求怎么办?
lozzow
2023-12-15 20:18:41 +08:00
直接再集群中开发,vscode remote 然后修改 service 就行,无痛无依赖
tudou1514
2023-12-15 22:13:53 +08:00
看完,是不是理解为你们想给开发张三固定一个 pod 作为“服务器”?如果这样不建议你们 k8s ,直接虚拟化吧
wzcloud
2023-12-15 22:55:39 +08:00
telepresent 或者 nocalhost 可以打通本地和集群网络
sampeng
2023-12-16 03:21:02 +08:00
有个东西叫 vpn……

再说了,我 64G 内存。本地起全套轻轻松松。啊哈哈哈哈
ihacku
2023-12-16 03:27:19 +08:00
zhangyq008
2023-12-16 13:22:44 +08:00
CCIEliu
2023-12-17 14:42:40 +08:00
nocalhost
uianz
2023-12-18 00:22:28 +08:00
我是连 vpn 之前查到可以加一个配置 然后用完整的 servicename(<servicename>.<namespace>.svc.<clusterdomain>)调用

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

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

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

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

© 2021 V2EX