关于 Java 服务上 k8s 的最佳实践(配置文件和 debug)?

2021-05-14 17:45:40 +08:00
 asanelder
俺现在按照公司要求, 要将 java 服务上 k8s, 但有几点不明, 想问问做过的老铁们, 以下几个方面的最佳实践是什么

一 配置文件

本来配置文件就是跟随代码的, 为不同的环境创建不同的配置文件, maven 打包时, 根据环境参数就可以打包不同的配置文件.

这样的好处就是

1. 可以很直观的看到不同环境的配置
2. 选择适当的配置文件, 可以直接本地启动服务(进而可以很方便的 debug)

但, 如果使用 ConfigMap 的形式, 是不是需要把所有 java 服务的配置文件使用一个单独的 repo 来管理起来? 而且这些配置文件的更新也是要走单独的 CI/CD 流程?

而这样的话, java 服务本身就不需要知道具体的配置是什么了?

二 远程 debug

原来 java 在虚拟机上运行时, 俺可以很方便的远程 debug, 但现在服务以 pod 形式运行, 而 pod 的生命周期交给了 k8s. 俺想 debug 的话, 得

1. 先打开 k8s 的端口转发
2. debug 期间, 健康探针如果发现服务"不健康"了(其实还是健康的, 只是俺在 debug), pod 就会被干掉, 这样就无法继续调试了, 怎么办?
1960 次点击
所在节点    程序员
7 条回复
Ariver
2021-05-14 17:49:42 +08:00
你的问题不是上 k8s,而是容器化。
第一个问题是这样的,配置只跟环境有关,不同环境运行的容器镜像应该是一致的。
要达到这样的状态,你需要做一些工作。
第二个,远程 debug 的时候为啥会认为服务不健康呢?
tairan2006
2021-05-14 17:55:51 +08:00
1. 上配置中心;
2. 测试环境你可以关了健康检查?
chendy
2021-05-14 18:54:13 +08:00
1. configmap 挂载进去,确实可以用单独的仓库放配置
2. 多打点 log,试试 Arthas
defunct9
2021-05-14 23:57:49 +08:00
刚帮一个公司把 php 搬到阿里 ack 上。让我继续来
RedrumSherlock
2021-05-15 07:46:23 +08:00
第一个如果用 spring 的话可以看看 spring cloud kubernetes,第二个如果是用 intellij 或是 vs code 开发的话,可以用 google 的 cloud code 来远程 debug
dayeye2006199
2021-05-15 16:11:03 +08:00
1. configmap 作为本地文件挂载到 pod 里面
2. 可以用 skaffold 远程调试: https://skaffold.dev/
asanelder
2021-05-18 15:18:45 +08:00
@Ariver #1
@tairan2006 #2
@chendy #3
@defunct9 #4
@RedrumSherlock #5
@dayeye2006199 #6

感谢大佬们建议, 刚接触这玩意, 俺要按着大佬们的方向摸索一番

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

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

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

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

© 2021 V2EX