Después de aprender acerca de los argumentos que se pueden pasar a una Máquina Virtual de Java 8 para que sea consciente de contenedores (es decir -XX: + UnlockExperimentalVMOptions -XX: + UseCGroupMemoryLimitForHeap), Estoy tratando de agregar estos argumentos al despliegue Kubernetes para un servicio de Primavera de arranque .
En la sección de contenedores de mi implementación de archivos YAML, tengo el siguiente:
recursos: peticiones: memoria: "256Mi" cpu: "50m" límites:
la memoria: "512Mi" cpu: "200" env: - Nombre: JVM_OPTS valor: "-Xms256m -XX: + UnlockExperimentalVMOptions -XX: + UseCGroupMemoryLimitForHeap -XX: MaxRAMFraction = 1"
En mi Dockerfile, que tengo:
ENV JVM_OPTS = "- -Xmx256m" ENV JVM_ARGS = "- Dspring.profiles.active = kubernetes" EXPONEN 8080 EntryPoint [ "sh", "c", "java $ JVM_ARGS $ JVM_OPTS-jar testservice.jar"]
Me parece que no puede averiguar por qué el tamaño máximo de almacenamiento dinámico no recibe tamaño adecuado:
$ Kubectl ejecutivo de prueba de servicio al despliegue-79c9d4bd54-trxgj -c prueba de servicio - java -XshowSettings: vm '-versión configuración VM: Max. Tamaño del montón (estimado): 875.00M ergonomía Máquina Clase: servidor por medio de VM: OpenJDK 64 bits del servidor VM versión de OpenJDK "1.8.0_171" OpenJDK Runtime Environment (IcedTea 3.8.0) (Alpine 8.171.11-R0) OpenJDK 64-Bit servidor de VM (build-b11 25.171, de modo mixto)
¿Qué estoy haciendo mal aquí?
En un local de instalación del estibador, puedo ver el conjunto máximo de almacenamiento dinámico de JVM correctamente:
$ Estibador de ejecución OpenJDK: 8-jre-alpino java -Xms256m Xmx512M -XX: + UnlockExperimentalVMOptions -XX: + UseCGroupMemoryLimitForHeap -XX: MaxRAMFraction = 1 -XshowSettings: vm -version configuración VM: Min. Tamaño de la pila: 256.00M Max. Tamaño de la pila: 512.00M ergonomía Máquina Clase: servidor por medio de VM: OpenJDK 64 bits del servidor VM versión de OpenJDK "1.8.0_171" OpenJDK Runtime Environment (IcedTea 3.8.0) (Alpine 8.171.11-R0) OpenJDK 64 bits del servidor VM ( construir 25.171-b11, modo mixto)
Cuando se ejecuta java -XshowSettings:vm -version
en un recipiente, JVM_OPTS
no es incluir en su comando.
Tratar con éste
kubectl exec test-service-deployment-79c9d4bd54-trxgj -c test-service \
-- sh -c 'java $JVM_OPTS -XshowSettings:vm -version'