Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje, jak kontejnerizovat aplikace Java pro nasazení v Kubernetes. Pokyny k paměti kontejneru, paměti haldy JVM, paměti uvolňování paměti (GC) a jader vCPU najdete v tématu Kontejnerizace aplikací v Javě.
Stanovení vhodného typu virtuálního počítače pro fond uzlů Kubernetes
Určete, jestli fond uzlů Kubernetes nebo fondy, které jsou pro váš cluster dostupné, odpovídají paměti kontejneru a jádrům virtuálních procesorů, které chcete použít. Pokud fond uzlů může hostovat aplikaci, pokračujte. Jinak zřiďte fond uzlů, který je vhodný pro velikost paměti kontejneru a počet jader vCPU, na která cílíte.
Náklady na skladovou položku virtuálního počítače jsou úměrné počtu jader a množství paměti. Jakmile určíte výchozí bod z hlediska virtuálních procesorů a paměti pro jednu instanci kontejneru, určete, jestli můžete vyhovět potřebám vaší aplikace pouze horizontálním škálováním. V případě spolehlivých systémů always-on musí být k dispozici minimálně dvě repliky. Rozšiřte kapacitu a množství podle potřeby.
Nastavení požadavků a omezení procesoru
Pokud je nutné omezit využití procesoru, ujistěte se, že v souboru nasazení použijete stejnou hodnotu pro limits i requests. Prostředí JVM dynamicky neupravuje své nastavení za běhu, například GC a další vlákna. Prostředí JVM čte počet procesorů, které jsou k dispozici pouze během spouštění.
Spropitné
Nastavte stejnou hodnotu pro požadavky procesoru a omezení procesoru.
containers:
- image: myimage
name: myapp
resources:
limits:
cpu: "2"
requests:
cpu: "2"
Vysvětlení dostupných procesorů JVM
Když hotSpot JVM v OpenJDK identifikuje, že běží uvnitř kontejneru, používá hodnoty, jako je cpu_quota a cpu_period k určení, kolik procesorů je k dispozici. Obecně platí, že jakákoli hodnota až 1000m milicores se identifikuje jako stroj s jedním procesorem. Jakákoli hodnota mezi 1001m a 2000m je identifikována jako počítač se dvěma procesory atd. Tyto informace jsou k dispozici prostřednictvím rozhraní API Runtime.getRuntime().availableProcessors(). Některé souběžné GCS můžou také tuto hodnotu použít ke konfiguraci jejich vláken. Další rozhraní API, knihovny a architektury můžou také tyto informace použít ke konfiguraci fondů vláken.
Kvóty procesoru Kubernetes se vztahují k množství času stráveného procesem v procesoru, a ne počtu procesorů dostupných pro tento proces. Běhová prostředí s podporou více vláken, jako je JVM, mohou paralelně využívat více procesorů. I když má kontejner limit jednoho virtuálního procesoru, může být JVM instruován, aby viděl dva nebo více dostupných procesorů.
Pokud chcete JVM informovat o přesném počtu procesorů, které by měl rozpoznat v prostředí Kubernetes, použijte následující příznak:
-XX:ActiveProcessorCount=N
Nastavení požadavků na paměť a omezení
Nastavte limity paměti na množství, které jste určili dříve. Ujistěte se, že číslo omezení paměti je paměť kontejneru a NE hodnota paměti haldy JVM.
Spropitné
Nastavte požadavky na paměť, které se rovnají limitům paměti.
containers:
- name: myimage
image: myapp
resources:
limits:
memory: "4Gi"
requests:
memory: "4Gi"
Nastavení argumentů JVM v souboru nasazení
Nezapomeňte nastavit paměť haldy JVM na částku, kterou jste určili dříve. Tuto hodnotu doporučujeme předat jako proměnnou prostředí, abyste ji mohli snadno změnit, aniž byste museli znovu sestavit image kontejneru.
containers:
- name: myimage
image: myapp
env:
- name: JAVA_OPTS
value: "-XX:+UseParallelGC -XX:MaxRAMPercentage=75"
Zjednodušení ladění prostředí JVM pomocí spouštěče příkazů Azure pro Java
Předchozí části nastavují počet procesorů, velikost haldy a GC ručně prostřednictvím příznaků JVM. Pokud nechcete tato nastavení udržovat, může spouštěč příkazů Azure pro Java (jaz) použít výchozí nastavení nativní pro cloud. Při spuštění přečte limity paměti a CPU kontejneru v cgroup a poté automaticky vybere nejvhodnější velikost heapu a příznaky GC.
Chcete-li nástroj použít, nahraďte v příkazu pro spuštění kontejneru příkaz java příkazem jaz. Nástroj je součástí imagí kontejneru pro Microsoft Build pro OpenJDK, takže není nutné nic dalšího nastavit:
# Use any Microsoft Build of OpenJDK base image
FROM mcr.microsoft.com/openjdk/jdk:25-ubuntu
# Add your application.jar
COPY application.jar /application.jar
# Use jaz to launch your Java application
CMD ["jaz", "-jar", "application.jar"]
Podrobnosti o možnostech instalace, podporovaných prostředích a konfiguraci najdete v Azure spouštěči příkazů pro Java.
Další kroky
- strategie kontejnerizace Java
- spouštěč příkazů Azure pro Java
- Jakarta EE v modulech runtime kontejnerů Azure
- Oracle WebLogic Server
- IBM WebSphere Liberty, Open Liberty a tradiční WebSphere