技术解析

关于 Java 服务上 k8s 的最佳实践(配置文件和 debug)?
0
2021-06-02 18:19:11
idczone
俺现在按照公司要求, 要将 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 就会被干掉, 这样就无法继续调试了, 怎么办?
你的问题不是上 k8s,而是容器化。
第一个问题是这样的,配置只跟环境有关,不同环境运行的容器镜像应该是一致的。
要达到这样的状态,你需要做一些工作。
第二个,远程 debug 的时候为啥会认为服务不健康呢?

1. 上配置中心;
2. 测试环境你可以关了健康检查?

1. configmap 挂载进去,确实可以用单独的仓库放配置
2. 多打点 log,试试 Arthas

刚帮一个公司把 php 搬到阿里 ack 上。让我继续来

第一个如果用 spring 的话可以看看 spring cloud kubernetes,第二个如果是用 intellij 或是 vs code 开发的话,可以用 google 的 cloud code 来远程 debug

1. configmap 作为本地文件挂载到 pod 里面
2. 可以用 skaffold 远程调试: https://skaffold.dev/







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

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服