Java 业务开发常见错误 100 例
朱晔
贝壳金服资深架构师
52946 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
代码篇 (23讲)
Java 业务开发常见错误 100 例
15
15
1.0x
00:00/00:00
登录|注册

38 | 加餐8:Java程序从虚拟机迁移到Kubernetes的一些坑

分享其他Java+Kubernetes中的坑
确保现场保留
分析Pod重启原因
确保资源配置适配容器
自动根据容器内存限制设置堆内存用量
区分问题类型并对症处理
Java程序的OOM问题
OS OOM Kill问题
需要注意Pod IP变动可能带来的问题
通过微服务注册中心实现服务互访
通过Service和Ingress进行内部和外部服务访问
重新发布
无需修改代码
自动扩容
快速集群扩容能力
集群稳定性提高
资源利用率提升
思考与讨论
Pod重启
内存和CPU资源配置
OOM问题
Pod IP不固定带来的问题
迁移过程
Kubernetes集群部署
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
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • Ethan New
    朱老师,期待你的新课

    作者回复: :)

    2023-02-15归属地:浙江
  • 子休
    居然等到了朱老师又来加餐了,但是内容真的有点少,不知道朱老师后续还有没有别的计划,比如开个新专栏。时至今日,我买了三十门的极客课程,依旧觉得朱老师的课程最实用,也是我最快完成全部课程学习的。十分期待朱老师后续的新分享。
    2021-11-27
    10
  • coder
    跟朱老师学到了很多,居然又更新了
    2021-11-28
    3
  • 袁帅
    朱老师再开一门课吧,太喜欢这种讲课风格了,实战性很强
    2021-12-17
    1
  • 胜勝
    哇,谢谢朱老师,最近公司就在从虚拟机到容器,虽然是开发,但是也在配合运维进行部署,看到了老师文章说的问题感觉很有用,能让人少踩很多坑
    2021-11-28
    1
  • 我已经设置了昵称
    NMT的具体使用方式,老师能加餐讲下吗,我们现在经常遇到RSS占用很高,但heapdump下来看没有任何问题。已经加上了 java -XX:NativeMemoryTracking=smmary。看了下也没啥问题。 后面这两个参数-XX:+UnlockDiagnosticVMOptions -XX:+PrintNMTStatistics也不知道使用场景
    2022-05-26
  • bigben
    存活弹针之前配置了健康检查的地址,导致系统经常重启
    2022-05-03
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部