38 | 加餐8:Java程序从虚拟机迁移到Kubernetes的一些坑
朱晔
该思维导图由 AI 生成,仅供参考
你好,我是朱晔,我们又见面了。结课并不意味着结束,我非常高兴能持续把好的内容分享给你,也希望你能继续在留言区与我保持交流,分享你的学习心得和实践经验。
使用 Kubernetes 大规模部署应用程序,可以提升整体资源利用率,提高集群稳定性,还能提供快速的集群扩容能力,甚至还可以实现集群根据压力自动扩容。因此,现在越来越多的公司开始把程序从虚拟机(VM)迁移到 Kubernetes 了。
在大多数的公司中,Kubernetes 集群由运维来搭建,而程序的发布一般也是由 CI/CD 平台完成。从虚拟机到 Kubernetes 的整个迁移过程,基本不需要修改任何代码,可能只是重新发布一次而已。所以,我们 Java 开发人员可能对迁移这个事情本身感知不强烈,认为 Kubernetes 只是运维需要知道的事情。但是程序一旦部署到了 Kubernetes 集群中,在容器环境中运行,总是会出现各种各样之前没有的奇怪的问题。
今天的加餐,就让我们一起看下这其中大概会遇到哪些“坑”,还有相应的“避坑方法”。
Pod IP 不固定带来的坑
Pod 是 Kubernetes 中能够创建和部署应用的最小单元,我们可以通过 Pod IP 来访问到某一个应用实例,但需要注意的是,如果没有经过特殊配置,Pod IP 并不是固定不变的,会在 Pod 重启后会发生变化。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了将Java程序迁移到Kubernetes可能遇到的技术挑战和应对策略。首先,作者指出在Kubernetes中,Pod IP的不固定性可能带来一些问题,但可以通过Service或微服务注册中心来实现服务发现和访问,避免直接使用Pod IP。其次,文章提到了在Kubernetes集群中常见的程序因OOM被杀进程的问题,需要区分OS OOM Kill和Java程序的OOM问题,并针对性地处理。此外,内存和CPU资源配置不适配容器可能会导致的问题,以及针对JVM自动根据容器内存限制设置堆内存用量的解决方案也得到了讨论。文章还强调了在Pod重启问题中需要做好现场保留的准备工作,以避免因程序频繁重启导致的性能问题或可用性问题。通过具体问题和解决方法的讨论,本文为读者提供了在将Java程序迁移到Kubernetes过程中可能遇到的一些技术挑战和应对策略。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Java 业务开发常见错误 100 例》,新⼈⾸单¥59
《Java 业务开发常见错误 100 例》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- Ethan New朱老师,期待你的新课
作者回复: :)
2023-02-15归属地:浙江 - 子休居然等到了朱老师又来加餐了,但是内容真的有点少,不知道朱老师后续还有没有别的计划,比如开个新专栏。时至今日,我买了三十门的极客课程,依旧觉得朱老师的课程最实用,也是我最快完成全部课程学习的。十分期待朱老师后续的新分享。2021-11-2710
- coder跟朱老师学到了很多,居然又更新了2021-11-283
- 袁帅朱老师再开一门课吧,太喜欢这种讲课风格了,实战性很强2021-12-171
- 胜勝哇,谢谢朱老师,最近公司就在从虚拟机到容器,虽然是开发,但是也在配合运维进行部署,看到了老师文章说的问题感觉很有用,能让人少踩很多坑2021-11-281
- 我已经设置了昵称NMT的具体使用方式,老师能加餐讲下吗,我们现在经常遇到RSS占用很高,但heapdump下来看没有任何问题。已经加上了 java -XX:NativeMemoryTracking=smmary。看了下也没啥问题。 后面这两个参数-XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics也不知道使用场景2022-05-26
- bigben存活弹针之前配置了健康检查的地址,导致系统经常重启2022-05-03
收起评论