kubernetes - 带有 Kubernetes 内存控制的 Java jib-maven-plugin
问题描述
实际上,我正在使用jib-maven-plugin为我的应用程序创建 Docker 容器。然后我将把它部署到我们拥有Kubernetes环境的 Google 服务器上。
实际上,我们正在使用 java env。来自jib-maven-plugin的配置(pom.xml )的变量:
<jvmFlags>
<jvmFlag>-XX:MinRAMPercentage=60.0</jvmFlag>
<jvmFlag>-XX:MaxRAMPercentage=80.0</jvmFlag>
<jvmFlag>-XX:+HeapDumpOnOutOfMemoryError</jvmFlag>
<jvmFlag>-Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2"</jvmFlag>
</jvmFlags>
现在我们想将这些配置移动到我们的部署 yml文件中,我们发现如下内容:
env:
- name: JAVA_OPTS
value: "-XX:MinRAMPercentage=60.0 -XX:MaxRAMPercentage=90.0 -XX:+HeapDumpOnOutOfMemoryError"
...
resources:
limits:
memory: 512Mi
requests:
memory: 256Mi
但似乎如果我们从 jib-maven-plugin 的配置文件中删除这些配置并将它们移动到 yml 文件中,它们根本就不起作用。容器在没有上述设置的任何影响的情况下启动。
我们使用的是开放的 JDK 11,这可能也很重要。
如何控制 Java 环境。部署文件中的选项?
非常感谢您的帮助,祝您有美好的一天!
解决方案
问题是您正在设置JAVA_OPTS
而不是JDK_JAVA_OPTIONS
.
JAVA_OPTS
由一些应用服务器(如 Tomcat)使用,但JDK 本身使用 JDK_JAVA_OPTIONS。
因此,一个工作的 Kubernetes yaml 将类似于:
apiVersion: apps/v1
kind: Deployment
metadata:
...
spec:
template:
metadata:
...
spec:
containers:
- name: ...
image: ...
env:
- name: JDK_JAVA_OPTIONS
value: -XX:MinRAMPercentage=60 -XX:MaxRAMPercentage=80 -XX:+HeapDumpOnOutOfMemoryError -Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2"
推荐阅读
- highcharts - 如果我有 2 个 Y 轴,如何设置点的间隔
- xamarin - Windows ToughPad 中选择器项目滚动的问题
- git - 完成拉取请求时添加 app_offline.htm 文件,然后在完成/失败后将其删除
- c# - 如何将 Xceed Extended Toolkit splitbutton 内容的宽度绑定到 splitbutton 的实际宽度?
- spring - How to automatically add all Converters to a FormatterRegistry in Spring?
- r - 具有两个变量的条形图
- reactjs - 在chartJS中为xAxis刻度的开头添加空格
- android - Android Studio 问题:在许多文件中加载不正确的内容
- plot - 我在为图表设置高度时遇到问题,我想平等地设置所有图表的高度,怎么做?
- mirth - 通道连接状态