Java-alkalmazások tárolóba helyezése a Kuberneteshez
Ez a cikk bemutatja, hogyan tárolózhatja a Java-alkalmazásokat a Kubernetesen való üzembe helyezéshez. A tárolómemória, a JVM-halommemória, a szemétgyűjtők (GCs- és vCPU-magok) ismertetését a Java-alkalmazások tárolóba helyezésecímű témakörben talál.
A Kubernetes-csomópontkészlet megfelelő virtuálisgép-termékváltozatának meghatározása
Határozza meg, hogy a Kubernetes-csomópontkészlet vagy készletek, amelyek a fürt számára elérhetők, elférnek-e az Ön által használni kívánt konténermemória és vCPU-magok számára. Ha a csomópontkészlet képes üzemeltetni az alkalmazást, folytassa a műveletet. Ellenkező esetben olyan csomópontkészletet építhet ki, amely megfelel a tárolómemória mennyiségének és a megcélzott vCPU-magok számának.
Ne feledje, hogy a virtuálisgép-termékváltozat költsége arányos a magok számával és a memória mennyiségével. Miután meghatározta a kiindulási pontot egy tárolópéldány virtuális processzorai és memóriája tekintetében, határozza meg, hogy csak horizontális skálázással tudja-e kielégíteni az alkalmazás igényeit. A megbízható, mindig elérhető rendszerekhez legalább két replikának kell rendelkezésre állnia. Igény szerint vertikális fel- és kiskálázás.
CPU-kérések és -korlátok beállítása
Ha korlátoznia kell a processzort, győződjön meg arról, hogy ugyanazt az értéket alkalmazza az üzembehelyezési fájlban lévő limits
és requests
is. A JVM nem módosítja dinamikusan a futtatókörnyezetét, például a GC-t és más szálkészleteket. A JVM csak indítási idő alatt olvassa be a rendelkezésre álló processzorok számát.
Borravaló
Állítsa be ugyanazt az értéket a CPU-kérésekhez és a CPU-korlátokhoz.
containers:
- image: myimage
name: myapp
resources:
limits:
cpu: "2"
requests:
cpu: "2"
Az elérhető JVM-processzorok ismertetése
Amikor az OpenJDK-ban a HotSpot JVM azonosítja, hogy egy tárolóban fut, olyan értékeket használ, mint a cpu_quota
és a cpu_period
annak meghatározásához, hogy hány processzor érhető el. Általánosságban elmondható, hogy a 1000m
millicore értékig minden érték egyetlen processzorgépként van azonosítva. A 1001m
és 2000m
közötti bármely érték kettős processzoros gépként van azonosítva, és így tovább. Ezek az információk elérhetők az API-n keresztül: Runtime.getRuntime().availableProcessors(). Az egyidejűleg használt számítógépek némelyike ezt az értéket is használhatja a szálak konfigurálásához. Más API-k, kódtárak és keretrendszerek is használhatják ezeket az információkat a szálkészletek konfigurálásához.
A Kubernetes CPU-kvótái a folyamat processzorban töltött idejéhez kapcsolódnak, és nem a folyamat számára elérhető CPU-k számához. A többszálas futtatókörnyezetek, például a JVM, egyszerre több processzort is használhatnak, több szállal. Még akkor is, ha egy tároló legfeljebb egy vCPU-ra van korlátozva, a JVM-nek két vagy több elérhető processzort kell látnia.
Ha tájékoztatni szeretné a JVM-et arról, hogy pontosan hány processzort kell látnia Egy Kubernetes-környezetben, használja a következő JVM-jelzőt:
-XX:ActiveProcessorCount=N
Memóriakérelmek és -korlátok beállítása
Állítsa be a memóriakorlátokat a korábban meghatározott mennyiségre. Győződjön meg arról, hogy a memóriakorlátok száma a tárolómemória, és NEM a JVM halommemória értéke.
Borravaló
Állítsa be a memóriakorlátokkal egyenlő memóriakérelmeket.
containers:
- name: myimage
image: myapp
resources:
limits:
memory: "4Gi"
requests:
memory: "4Gi"
A JVM-argumentumok beállítása az üzembehelyezési fájlban
Ne felejtse el beállítani a JVM halommemóriát a korábban meghatározott mennyiségre. Azt javasoljuk, hogy adja át ezt az értéket környezeti változóként, így egyszerűen módosíthatja anélkül, hogy újra kellene építenie a tárolólemezképet.
containers:
- name: myimage
image: myapp
env:
- name: JAVA_OPTS
value: "-XX:+UseParallelGC -XX:MaxRAMPercentage=75"
Következő lépések
- Java-konténerizálási stratégiák
- Jakarta EE az Azure tároló futtatókörnyezetei
- Oracle WebLogic-kiszolgáló
- IBM WebSphere Liberty, Open Liberty és hagyományos WebSphere