Kubernetes Java 部署中未解析环境变量

在了解了可以传递给 Java 8 虚拟机以使其具有容器感知能力的参数(即 -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap)后,我尝试将这些参数添加到我的 Kubernetes 部署中以用于 Spring Boot 服务.


在我的部署 YAML 文件的容器部分,我有以下内容:



    资源:

        要求:

            内存:“256Mi”

            中央处理器:“50m”

        限制:


            内存:“512Mi”

            中央处理器:“200m”

    环境:

    - 名称:JVM_OPTS

      值:“-Xms256M -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1”


在我的 Dockerfile 中,我有:



    ENV JVM_OPTS="-Xmx256M"

    ENV JVM_ARGS="-Dspring.profiles.active=kubernetes"

    曝光 8080

    入口点 [ "sh", "-c", "java $JVM_ARGS $JVM_OPTS -jar testservice.jar"]


我似乎无法弄清楚为什么最大堆大小没有正确调整大小:


$ kubectl exec test-service-deployment-79c9d4bd54-trxgj -c test-service -- java -XshowSettings:vm -version'

虚拟机设置:

    最大限度。堆大小(估计):875.00M

    人体工学机器类:服务器

    使用 VM:OpenJDK 64 位服务器 VM


openjdk 版本“1.8.0_171”

OpenJDK 运行时环境 (IcedTea 3.8.0) (Alpine 8.171.11-r0)

OpenJDK 64 位服务器 VM(构建 25.171-b11,混合模式)

我在这里做错了什么?


在本地 Docker 安装中,我可以看到 JVM 最大堆设置正确:


$ docker run openjdk:8-jre-alpine java -Xms256M -Xmx512M -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1 -XshowSettings:vm -version

虚拟机设置: 

    最小。堆大小:256.00M

    最大限度。堆大小:512.00M

    人体工学机器类:服务器 

    使用 VM:OpenJDK 64 位服务器 VM 


openjdk 版本“1.8.0_171” 

OpenJDK 运行时环境 (IcedTea 3.8.0) (Alpine 8.171.11-r0) 

OpenJDK 64 位服务器 VM(构建 25.171-b11,混合模式)


幕布斯6054654
浏览 268回答 3
3回答

繁花如伊

java -XshowSettings:vm -version在容器中运行时,JVM_OPTS不包含在您的命令中。试试这个kubectl exec test-service-deployment-79c9d4bd54-trxgj -c test-service \           -- sh -c 'java $JVM_OPTS -XshowSettings:vm -version'

墨色风雨

我唯一看到的是您缺少的是 Kubernetes pod 定义中命令行参数的实际最大值。你将它传递给你的docker run ...命令行:env:- name: JVM_OPTS  value: "-Xms256M -Xmx512M -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1"代替:env:- name: JVM_OPTS  value: "-Xms256M -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java