Vérifier les paramètres Java dans les pods Kubernetes

Il y a une pierre d'achoppement unique à k8s (ou Docker) lors de la vérification des paramètres de Java fonctionnant sur Kubernetes, je vais donc partager la méthode qui a fonctionné.

Modification du Dockerfile

Normalement, le PID du processus démarré par Docker sera 1, mais jcmd et jinfo décrits plus loin ne peuvent pas être attachés au processus avec le PID 1, il est donc nécessaire de changer le PID.

Pour changer le PID, nous allons introduire un package appelé Tini. Définissez également ENTRYPOINT sur tini et transmettez l'application que vous souhaitez réellement démarrer en tant que paramètre.

Dockerfile


FROM openjdk:8-jdk-alpine
LABEL MAINTAINER="[email protected]"
WORKDIR /opt/docker
ADD --chown=daemon:daemon opt /opt
USER daemon
ENTRYPOINT ["/sbin/tini", "--", "/opt/docker/your/app/entrypoint"]
CMD []
USER root
RUN apk --update add bash
RUN apk add --no-cache tini
USER daemon
EXPOSE 9000

Si vous utilisez une distorsion autre qu'Alpine, veuillez vous référer au GitHub de Tini pour les instructions d'installation. https://github.com/krallin/tini

Connectez-vous au pod

La connexion au pod est la même que la manière habituelle.

$ kubectl get pod
NAME                                             READY     STATUS             RESTARTS   AGE
pod-name-xxxxxxxxxx-xxxxx                        1/1       Running            0          10h
$ kubectl exec -it pod-name-xxxxxxxxxx-xxxxx bash

Vérifiez la valeur par défaut du paramètre

$ java -XX:+PrintFlagsFinal -version
[Global flags]
     intx ActiveProcessorCount                      = -1                                  {product}
    uintx AdaptiveSizeDecrementScaleFactor          = 4                                   {product}
    uintx AdaptiveSizeMajorGCDecayTimeScale         = 10                                  {product}
...

Vérifiez les paramètres du programme Java en cours d'exécution

Vérifiez le PID du processus cible avec la commande jps.

$ jps -v
7 ProdServerStart -Duser.dir=/opt/docker
142 Jps -Dapplication.home=/usr/lib/jvm/java-1.8-openjdk -Xms8m

Vous pouvez afficher une liste de paramètres valides en spécifiant le PID vérifié avec la commande jcmd.

$ jcmd 7 VM.flags -all
7:
[Global flags]
     intx ActiveProcessorCount                      = -1                                  {product}
    uintx AdaptiveSizeDecrementScaleFactor          = 4                                   {product}
    uintx AdaptiveSizeMajorGCDecayTimeScale         = 10                                  {product}
...

Utilisez la commande jinfo pour voir les paramètres d'un paramètre particulier. Voici un exemple de vérification de la valeur maximale de la mémoire du tas.

$ jinfo -flag MaxHeapSize 7
-XX:MaxHeapSize=1960837120

Site de référence relatif aux paramètres Java

https://docs.oracle.com/javase/jp/8/docs/technotes/tools/unix/java.html http://etc9.hatenablog.com/entry/2016/05/11/012037 https://x1.inkenkun.com/archives/367 https://qiita.com/kaikusakari/items/9f96ffd3a6dd71dfd914

Recommended Posts

Vérifier les paramètres Java dans les pods Kubernetes
Vérifiez la connexion https avec Java
Arrêtez l'application (Pod) sur Kubernetes
Partition en Java
Vérification de la version Java
Changements dans Java 11
Janken à Java
Processus de vérification Java
Taux circonférentiel à Java
FizzBuzz en Java
Vérifier le comportement statique et public dans les méthodes Java
Lire JSON en Java
Implémentation de l'interpréteur par Java
Application Janken en Java
Programmation par contraintes en Java
Mettez java8 dans centos7
NVL-ish guy en Java
Joindre des tableaux en Java
"Hello World" en Java
Interface appelable en Java
Commentaires dans la source Java
Formater XML en Java
Simple htmlspecialchars en Java
Implémentation Boyer-Moore en Java
Hello World en Java
Utiliser OpenCV avec Java
Mémorandum WebApi avec Java
Détermination de type en Java
Exécuter des commandes en Java (ping)
Divers threads en java
Implémentation du tri de tas (en java)
[Java] Arguments et paramètres
API Zabbix en Java
Art ASCII à Java
Comparer des listes en Java
POST JSON en Java
Exprimer l'échec en Java
Créer JSON en Java
Manipulation de la date dans Java 8
Nouveautés de Java 8
Vérifiez la couverture avec Codecov dans la configuration Java + Gradle + Wercker
Utiliser PreparedStatement en Java
Nouveautés de Java 9,10,11
Exécution parallèle en Java
Mémo: [Java] Comment vérifier groupId etc. décrit dans pom.xml
Un moyen simple de vérifier la liste des méthodes / champs dans Java REPL
Lire des fichiers binaires en Java 1
Évitez l'erreur que Yuma a donnée en Java
[Neta] Sleep Sort en Java
Modifier ini en Java: ini4j
L'histoire de Java dans ce monde
Segfo Java en 6 lignes
Essayez d'appeler JavaScript en Java
Essayez de développer Spresense avec Java (1)
Activer des paramètres forts dans la conception
J'ai fait une roulette à Java.
Implémentation de l'authentification en deux étapes en Java
Refactoring: faire du Blackjack en Java