- FAQ
- Inhalt
- Was kann ich tun, wenn ein nscale Standard Container nicht startet?
- Wie kann ich Netzwerk Problem im Cluster debuggen?
- Wie kann ich die Zeitzone ändern?
- Wie kann ich Java Startoptionen (JAVA_OPTS) setzen?
- Wie kann ich die Java Heap Size anpassen?
- Wie kann ich die Microsoft Windows Schriftarten (Microsoft TrueType Fonts) verwenden?
- Wie kann ich mit Kustomize Änderungen an der Kubernetes-Konfiguration vornehmen?
- Wie kann ich den ContextPath der Web Anwendungen ändern?
Wenn ein nscale Standard Container nicht startet, kann es dafür viele Gründe geben. Um den Start eines nscale Standard Containers genauer zu untersuchen, können Sie wie folgt vorgehen:
- Starten Sie den jeweiligen nscale Standard Container, ohne dabei die eigentliche Applikation zu starten.
Jeder nscale Standard Container verwendet einen
ENTRYPOINTund einCMD. DieCMD-Eigenschaft kann leicht übersteuert werden, sodass der Start der eigentlichen Applikation verhindert werden kann.
Weitere Informationen zu CMD und ENTRYPOINT:
- https://docs.docker.com/engine/reference/builder/#cmd
- https://docs.docker.com/engine/reference/builder/#entrypoint
- Nun können Sie den Start der Applikation durch einen direkten Aufruf in der
bashuntersuchen. Die jeweilige nscale Standard Container Applikation wird über einrun.sh-Script in dem jeweiligenWORKDIRgestartet.
Beispiel Docker:
docker run -it nscale/[container-image]:[container-version] [optionen] bashBeispiel Docker Compose:
Ändern Sie Ihre docker compose.yaml so ab, dass ein sleep infinity ausgeführt wird.
Anschließend haben Sie die Möglichkeit, sich mit docker compose exec [service name] bash auf den Container aufzuschalten.
command: ["sleep", "infinity"]Weitere Informationen: https://docs.docker.com/compose/compose-file/compose-file-v3/#command
Beispiel Kubernetes:
Ändern Sie die Datei [container].yaml so ab, dass ein sleep infinity ausgeführt wird.
Anschließend haben Sie die Möglichkeit, sich mit kubectl exec -it [pod-name] -n [namespace] -- bash auf den Container aufzuschalten.
containers:
...
command:
- "sleep"
- "infinity"Unsere nscale Standard Container dürfen aus Gründen der Sicherheit keine Linux Tools zum Debuggen der Laufzeitumgebung enthalten. Für diesen Zweck bieten sich Open Source Images wie z.B. netshoot an.
Zum Debugging im Kubernetes Cluster empfiehlt sich die Verwendung von debug Container.
(Debugging with an ephemeral debug container).
Die nscale Standard Container verwenden UTC als Zeitzone.
Sie können die Zeitzone für den jeweiligen Container mit der Umgebungsvariable TZ setzen.
Beispiel Docker:
docker run -e TZ=Europe/Berlin [image]Beispiel Docker Compose:
environment:
- TZ=Europe/BerlinBeispiel Kubernetes:
- name: TZ
value: "Europe/Berlin"Weitere Informationen: https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
Einige nscale Komponenten sind in Java implementiert.
Je nach Installation und Anwendungsszenario kann es notwendig sein, Java Startoptionen anzupassen.
Alle nscale Standard Container, die eine Java-Applikation beinhalten, können über die Umgebungsvariable JAVA_OPTS angepasst werden.
Folgende nscale Standard Container beinhalten Java-Applikationen:
- nscale/application-layer
- nscale/application-layer-web
- nscale/cmis-connector
- nscale/erp-cmis-connector
- nscale/console
- nscale/erp-ilm-connector
- nscale/monitoring-console
- nscale/rendition-server
- nscale/webdav-connector
Beispiel Docker:
docker run -e JAVA_OPTS=-Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true [image]Beispiel Docker Compose:
environment:
- JAVA_OPTS=-Dcom.sun.jndi.ldap.object.disableEndpointIdentification=trueBeispiel Kubernetes:
- name: JAVA_OPTS
value: "-Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true"Je nach Installation und Anwendungsszenario kann es notwendig sein, die Java Heap Size zu vergrößern.
Die Java Heap Size können Sie über die Umgebungsvariable JAVA_OPTS anpassen.
Weitere Informationen:
https://docs.oracle.com/javase/7/docs/technotes/tools/solaris/java.html
Beispiel Docker:
docker run -e JAVA_OPTS=-Xmx3g [image]In diesem Beispiel wurde die Java Heap Size so gewählt, dass 3 Gigabyte im Container verwendet werden.
Beispiel Docker Compose:
environment:
- JAVA_OPTS=-Xmx3gIn diesem Beispiel wurde die Java Heap Size so gewählt, dass 3 Gigabyte im Container verwendet werden.
Beispiel Kubernetes:
- name: JAVA_OPTS
value: "-XX:MaxRAMPercentage=50.0"In diesem Beispiel wurde die Java Heap Size so gewählt, dass 85% des im Container verfügbaren Speichers verwendet wird.
Beachten Sie, dass die Eigenschaft resources.requests in der Container-Definition Auswirkungen auf die Berechnung hat.
Weitere Informationen: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers
Die Microsoft Windows Schriftarten werden nicht mitgeliefert.
Eine Installationsanleitung finden Sie hier:
In diesem Beispiel wird gezeigt, wie Sie mit Hilfe von kustomize die Konfiguration von nscale Server Storage Layer anpassen können.
Es werden neue Umgebungsvariablen hinzugefügt, um einen neuen Archivtyp und ein Harddisk-Device zu definieren.
Außerdem soll die Konfiguration default verwendet werden, damit automatisch PVCund PV erzeugt werden.
Weitere Informationen zu Kustomize finden Sie hier:
https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/
-
Legen Sie im Ordner
kubernetes/kustomize/nscale/overlaysden Ordnercustoman. -
Wechseln Sie in den Ordner
kubernetes/kustomize/nscale/overlays/custom -
Erstellen Sie eine Datei
kustomization.yamlmit folgendem Inhalt:
bases:
- ../default
patchesStrategicMerge:
- storage-layer-env.yaml- Erzeugen Sie eine Datei
storage-layer-env.yamlmit folgendem Inhalt:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: storage-layer
spec:
template:
spec:
containers:
- name: storage-layer
env:
- name: NSTL_ARCHIVETYPE_900_NAME
value: "DEMOARCHIVETYPE"
- name: NSTL_ARCHIVETYPE_900_ID
value: "900"
- name: NSTL_ARCHIVETYPE_900_LOCALMIGRATION
value: "0"
- name: NSTL_ARCHIVETYPE_900_LOCALMIGRATIONTYPE
value: "HD"
- name: NSTL_ARCHIVETYPE_900_HARDDISK
value: "1"
- name: NSTL_HarddiskDevice_0_ARCHIVETYPES
value: "DEMOARCHIVETYPE"
- name: NSTL_HarddiskDevice_0_INDEX
value: "1"
- name: NSTL_HarddiskDevice_0_NAME
value: "HD"
- name: NSTL_HarddiskDevice_0_PATH
value: "/mnt"
- name: NSTL_HarddiskDevice_0_PERMANENTMIGRATION
value: "1"- Starten Sie alle Komponenten mit folgendem Kommando:
kubectl apply -k . -n nscale- Prüfen Sie mit folgendem Kommando, ob die Umgebungsvariablen korrekt gesetzt wurden:
kubectl describe pod/storage-layer-0 -n nscaleLeider ist es noch nicht möglich den ContextPath der Container über den Proxy zu ändern. Deshalb müssen die jeweiligen Komponenten einzeln konfiguriert werden wenn der ContextPath geändert werden soll.
| Komponente | Erläuterung |
|---|---|
| application-layer-web | In der nscale_web.xml muss der Wert Context@path angepasst werden und entsprechend diesem Namen die WAR Datei umbenannt werden (u.U auf ROOT.war um keinen ContextPath zu verwenden.) |