[英]How do I run a cron inside a kubernetes pod/container which has a running spring-boot application?
[英]When running spring-boot container on kubernetes active processor count is set with host CPU, not k8s cpu limit for container
我們在 kubernetes 上運行使用 bootBuildImage gradle 任務創建的 spring-boot 容器。 我們在 k8s 啟動時為 Pod 提供 CPU 限制和 memory 限制。 我們用:
我們注意到,我們所有基於 spring-boot 的容器都已配置(即 nb 個線程),就好像在 32 個 CPU 實例上運行一樣。
Docker 啟動日志顯示
將活動處理器計數設置為 32
[...]
拿起 JAVA_TOOL_OPTIONS: [...] -XX:ActiveProcessorCount=32
在 spring-boot-admin 中,參見 web 服務器(用於響應式的 netty,用於 servlet 的 undertow)配備了線程池,就好像應用程序在分配了 32 個 CPU 的容器上運行一樣,即使容器被 k8s 限制為 1 個 CPU。 OTH 分配給 JVM 的 memory 是正確的。
我們如何確保活動 CPU 計數反映 k8s CPU 限制?
提前致謝
根據您包含的 output ,您似乎正在使用構建包(即./mvnw spring-boot:build-image
或./gradlew bootBuildImage
或pack build
)。
在這種情況下,您可以使用-XX:ActiveProcessorCount=x
設置環境變量JAVA_TOOL_OPTIONS
以覆蓋默認計算。 默認計算將提取處理器總數(由 Go 的runtime.NumCPU()
函數報告)。
邊注。 您的要求似乎是合理的,所以我打開了一個問題,看看我們是否可以啟用它來檢測有限的 CPU 計數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.