k8s pod自动重启原因(jvm内存设置)

摘要:
由于创建的映像不配置JVM的内存,JVM将默认设置堆栈大小,并且默认分配的内存将更大(最大堆栈=1/4*物理机器内存,初始堆栈=1/64*物理机器存储器)。jvm标识物理主机的内存,而不是K8S分配给pod的内存或Docker容器的内存。默认情况下,jvm占用的内存Xms超过分配给pod的内存k8s。jvm内存-Xms和-Xmx参数在启动脚本中声明。

转载:https://blog.csdn.net/yzh_1346983557/article/details/89216494

k8s集群环境下,docker容器中运行镜像方式启动springboot项目。由于制作的镜像未对JVM的内存进行配置,那么 JVM 会默认设置堆栈的大小,这个大小是根据物理机的内存进行分配的。 那么物理机的内存越大,默认分配的内存就越大(最大堆栈=1/4 * 物理机内存,初始堆栈=1/64 * 物理机内存)。JVM 是不知道自己在Docker容器中运行的,jvm识别的是物理主机的内存,而不是k8s给pod分配的内存或docker容器的内存。

因此在没有给jvm指定内存大小的情况下,机器物理内存很大时,jvm默认占用的内存Xms超出了k8s分配给pod的内存,导致pod内存溢出,从而k8s不断重启pod。也可能是运行过程中,jvm不断申请内存直到最大堆内存Xmx,Xmx超出了k8s分配给pod的内存,从而k8s自动重启pod。

解决:在启动的脚本中显示声明jvm内存-Xms、-Xmx参数,例:java -Xms1024m -Xmx1024m -jar app.jar

也可能是设置了docker容器的内存限制,制作的镜像未对JVM进行配置,那么 JVM默认设置堆栈的大小。这样,当jvm占用内存超过docker容器限制时,就会出现container 被docker killed情况。解决:一样是设置jvm内存-Xms、-Xmx参数,注意要小于docker容器的内存限制。

免责声明:文章转载自《k8s pod自动重启原因(jvm内存设置)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇解决css设置背景透明,文字不透明CentOS7 用 yum安装X Window (GNome)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

.Net Core微服务入门全纪录(一)——项目搭建

Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章。 前言 写这篇博客主要目的是记录一下自己的学习过程,只能是简单入门级别的,因为水平有限就写到哪算哪吧,写的不对之处欢迎指正。 代码放在:https://github.com/xiajingren/NetCoreMicroserviceDemo 什么是微服务? 关于微服务的概念解释网上有很多......

docker 安装 maven 私有库 nexus3

1,使用 docker-compose 构建 1,创建一个目录,并创建配置文件,可以选择在自己有读写权限的任意目录下创建 cd /root mkidr nexues cd nexus vi docker-compose.yml 2,docker-compose.yml 配置文件 version: '3.1' services: nexus:...

kubernetes部署的Pod长时处于ContainerCreating状态

版权声明:本文为博主原创文章,支持原创,转载请附上原文出处链接和本声明。 本文地址:https://www.cnblogs.com/wannengachao/p/13821469.html 1、执行 kubectl get pod --all-namespaces|grep -Ev '1/1|2/2|3/3|Com 查看到Pod长时处于ContainerC...

(十七)VMware Harbor 垃圾清理

1. 在线垃圾清理 注意:从Harbor中删除镜像时不释放空间,垃圾收集是通过从清单中不再引用文件系统中删除blob来释放空间的任务。 注意:在执行垃圾收集时,Harbor将进入只读模式,并且禁止对docker注册表进行任何修改。 垃圾清理定时任务: 1.无 2.每天 3.每周 4.每小时 5.自定义 history 显示垃圾回收记录    离线-H...

(五) Docker 安装 Nginx

参考并感谢 官方文档 https://hub.docker.com/_/nginx 下载nginx镜像(不带tag标签则表示下载latest版本) docker pull nginx 启动 nginxTmp 容器,目的是为了拷贝配置文件 docker run -d -p 80:80 --name nxtmp nginx:latest 登录...

php 在docker 中使用composer 报内存溢出的解决方法

最近 需要用到有盟的推送,不想自己写,准备在github上面找个来改改,本地用的环境是docker 镜像,然后在docker 中 composer 时的时候,报了一个错 docker exec -it www /bin/bash root@85c8ee9b5e27:/var/www/html/newyouchengdu# composer require...