Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Kubernetes'te dağıtım için Java uygulamalarınızı kapsayıcıya alma işlemleri açıklanmaktadır. Kapsayıcı belleği, JVM yığın belleği, çöp toplayıcıları (GC) ve vCPU çekirdekleri hakkında yönergeler için bkz. Java uygulamalarınızıkapsayıcıya alma.
Kubernetes düğüm havuzu için uygun VM SKU'su belirleme
Kubernetes düğüm havuzunun veya kümeniz için kullanılabilir havuzların kullanmayı planladığınız kapsayıcı belleğine ve vCPU çekirdeklerine sığıp sığmayacağını belirleyin. Düğüm havuzu uygulamayı barındırabiliyorsa devam edin. Aksi takdirde, kapsayıcı belleği miktarına ve hedeflediğiniz vCPU çekirdeği sayısına uygun bir düğüm havuzu sağlayın.
VM SKU'sunun maliyeti çekirdek sayısı ve bellek miktarıyla orantılıdır. Bir kapsayıcı örneği için başlangıç noktanızı vCPU'lar ve bellek açısından belirledikten sonra, yalnızca yatay ölçeklendirme ile uygulamanızın gereksinimlerini karşılayıp karşılayamayacağınızı belirleyin. Güvenilir, her zaman açık sistemler için en az iki çoğaltma kullanılabilir olmalıdır. Gerektiğinde ölçeği artırma ve genişletme.
CPU isteklerini ve sınırlarını ayarlama
CPU'yu sınırlamanız gerekiyorsa, dağıtım dosyasındaki hem limits hem de requests için aynı değeri uyguladığınıza emin olun. JVM, GC ve diğer iş parçacığı havuzları gibi çalışma zamanını dinamik olarak ayarlamaz. JVM, yalnızca başlangıç zamanında kullanılabilen işlemci sayısını okur.
İpucu
CPU istekleri ve CPU sınırları için aynı değeri ayarlayın.
containers:
- image: myimage
name: myapp
resources:
limits:
cpu: "2"
requests:
cpu: "2"
JVM kullanılabilir işlemcilerini anlama
OpenJDK'daki HotSpot JVM kapsayıcı içinde çalıştığını belirlediğinde, kullanabileceği işlemci sayısını belirlemek için cpu_quota ve cpu_period gibi değerleri kullanır. Genel olarak, 1000m milicore'a kadar olan tüm değerler tek bir işlemci makinesi olarak tanımlanır.
1001m ile 2000m arasındaki tüm değerler çift işlemcili makine olarak tanımlanır ve bu şekilde devam eder. Bu bilgiler,
Kubernetes CPU kotaları, işlemin CPU'da harcadığı süreyle ilgilidir ve işlem için kullanılabilir CPU sayısıyla ilgili değildir. JVM gibi çok iş parçacıklı çalışma zamanları, birden çok iş parçacığıyla aynı anda birden çok işlemci kullanmaya devam edebilir. Kapsayıcının bir vCPU sınırı olsa bile, JVM'ye iki veya daha fazla kullanılabilir işlemci görmesi talimatı verilmektedir.
Bir Kubernetes ortamında görmesi gereken işlemci sayısını JVM'ye bildirmek için aşağıdaki JVM bayrağını kullanın:
-XX:ActiveProcessorCount=N
Bellek isteği ve sınırları ayarlama
Bellek sınırlarını daha önce belirlediğiniz miktara ayarlayın. Bellek sınırı değerinin, kapsayıcı belleği ifade ettiğinden ve JVM yığın bellek değeri olmadığından emin olun.
İpucu
Bellek isteklerini bellek sınırlarına eşit olarak ayarlayın.
containers:
- name: myimage
image: myapp
resources:
limits:
memory: "4Gi"
requests:
memory: "4Gi"
Dağıtım dosyasında JVM bağımsız değişkenlerini ayarlayın.
JVM yığın belleğini daha önce belirlediğiniz miktara ayarlamayı unutmayın. Kapsayıcı görüntüsünü yeniden oluşturmanıza gerek kalmadan kolayca değiştirebilmeniz için bu değeri ortam değişkeni olarak geçirmenizi öneririz.
containers:
- name: myimage
image: myapp
env:
- name: JAVA_OPTS
value: "-XX:+UseParallelGC -XX:MaxRAMPercentage=75"
Java için Azure Komut Başlatıcısı ile JVM ayarlamayı basitleştirme
Yukarıdaki bölümler JVM bayrakları aracılığıyla işlemci sayısını, yığın boyutunu ve GC'yi el ile ayarlar. Bu ayarları korumak istemiyorsanız, Java () jaz sizin için bulutta yerel varsayılan değerler uygulayabilir. Başlangıçta kapsayıcının cgroup belleğini ve CPU sınırlarını okur ve ardından en uygun yığın boyutlandırma ve GC bayraklarını otomatik olarak seçer.
Aracı kullanmak için, kapsayıcınızın başlatma komutunda java komutunu jaz ile değiştirin. Araç, Microsoft Build OpenJDK kapsayıcı görüntülerine eklendiğinden ek kurulum gerekmez:
# 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"]
Yükleme seçenekleri, desteklenen ortamlar ve yapılandırma ayrıntıları için bkz. Java için Azure Komut Başlatıcısı.
Sonraki adımlar
- java kapsayıcılama stratejilerini
- Java için Azure Komut Başlatıcısı
- Azure kapsayıcı çalışma zamanlarında Jakarta EE
- Oracle WebLogic Server
- IBM WebSphere Liberty, Open Liberty ve geleneksel WebSphere