k8s资源配置过大导致资源不足引起spring初始化问题

环境说明

两个应用, springbootA springbootB
k8s方面, helm charts配置,管理界面 rancher
主机,32gb内存,此主机上原生运行一个4G的jvm和一些其它组件,另加springbootA springbootB各一个Pod

springbootA helm chart 资源配置:
resources:
limits:
cpu: 4
memory: 8Gi
requests:
cpu: 2
memory: 4Gi

springbootB helm chart 资源配置:
resources:
limits:
cpu: 4
memory: 8Gi
requests:
cpu: 2
memory: 4Gi

错误表象

应用方面

某beanA 是一个configuration bean,以prefix方式从yml中读取配置并注入到bean的属性上
某beanB依赖beanA中的属性,但在k8s环境中启动时检查此属性为null报错
本地启动没有问题,比较简单的问题,理论上应该不难排查,但…

k8s rancher方面

springbootA 报running 一个pod, scheduling 一个pod (upgrading workload)
springbootB 报Deplovment does not have minimum availabilityunavailable一个pod

原因&解决方案

32gb内存,一些组件和4Gjvm,剩下的按k8s的配置,资源确实是不足的
请教之前成功搭建环境的同事,他说感觉是资源问题,后来找运维同事改了下配置如下
limits:
cpu: 4
memory: 4Gi
requests:
cpu: 100m
memory: 1Gi

结论

正常快速启动成功,springbootA springbootB各一个pod running

思考

为什么?有大佬能指点迷津吗?感觉问题和解决方案都莫名其妙
资源不足会导致一个pod 处于scheduling 状态,另一个pod因资源不足导致springcontext启动失败,资源不足为什么不直接让pod启动失败,而是启动了jvm内存不足让app失败呢?
难道是内存不足spring bean 不给注入值了??

参考资料

为容器管理资源 | Kubernetes
https://kubernetes.io/zh/docs/concepts/configuration/manage-resources-containers/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值