Verwendung von Befehlen und Argumenten in einem Kubernetes-Pod
Hallo, Leser! Verwendung von Befehlen und Argumenten in einem Kubernetes-Pod
Dieser Artikel behandelt die Verwendung von Befehlen und Argumenten in einem Kubernetes-Pod anhand verschiedener Szenarien für ein besseres Verständnis.
Also, lasst uns beginnen!! 🙂
Verwendung von Befehlen und Argumenten – Prozessausführung
Wenn wir sagen, dass eine Anwendung innerhalb eines Kubernetes-Pods läuft, meinen wir eigentlich, dass der Container als Pod verpackt und präsentiert wird.
Ein Container bündelt alle notwendigen Abhängigkeiten und Befehle zur Ausführung von Prozessen und befindet sich innerhalb eines Pods. Bei der Erstellung eines Pods können wir Befehle und Argumente definieren, die innerhalb des Containers ausgeführt werden.
Normalerweise überschreiben die von uns in benutzerdefinierter Form definierten Befehle und Argumente den Standardbefehl und die Standardargumente des Basiscontainer-Images.
In diesem Zusammenhang werden wir uns mit Möglichkeiten befassen, Befehle und Argumente für einen Container zu erstellen und zu definieren, der als Anwendungs-Pod läuft.
Befehle und Argumente für einen Kubernetes-Pod definieren
Um ein Argument innerhalb eines Containers zu definieren, können wir das Befehlsfeld verwenden. Sobald wir Befehle definieren, benötigen wir Argumente, die an sie übergeben werden. Diese Argumente können wir dem Befehl mit dem args-Feld übergeben.
Im folgenden Beispiel haben wir den Befehl printenv an den Container übergeben, damit er die Werte für die Umgebungsvariable KUBECONFIG als Argument ausgibt.
Beispiel: pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: demo-cmd
spec:
containers:
- name: cmd-arg-demo
image: debian
command: ["printenv"]
args: ["KUBECONFIG"]
restartPolicy: OnFailure
Lassen Sie uns nun die obige Datei anwenden und einen Pod erstellen.
kubectl apply -f pod.yaml
Nachdem wir einen Pod erstellt haben, können wir die Logs des Pods und des spezifischen Containers abrufen, um das Ergebnis der Befehlsausführung zu sehen.
kubectl logs -f demo-cmd
Output:
Der Output gibt den Wert für die Befehlsausführung zurück. Das heißt, sie zeigt den Pfad der KUBECONFIG-Datei als Wert an.
/home/.kube
1. Verwendung von Umgebungsvariablen zur Definition von Argumenten
Als Variante können wir Umgebungsvariablen verwenden, um den Wert der Argumente für die Befehle zu übergeben. Schauen wir uns den folgenden Abschnitt des Codes an-
Beispiel: Beispielcode
env:
- name: data
value: "002234-willkommensnachricht"
command: ["/bin/data"]
args: ["$(data)"]
Mit dem oben stehenden Codeblock können wir den Wert der Argumente mithilfe einer Umgebungsvariablen übergeben. Hier übergeben wir den Wert des Arguments an den Befehl in Form einer Variablen namens data, deren Wert als Umgebungsvariable angegeben ist.
Neben Umgebungsvariablen können wir den Wert auch in Form einer ConfigMap und eines Secrets auf ähnliche Weise übergeben.
2. Ausführen von Befehlen innerhalb einer Shell
Manchmal, wenn wir mehrere Befehle gleichzeitig ausführen möchten, benötigen wir eine Shell, die innerhalb des Containers für die Ausführung läuft.
Dies kann durch das Ausführen einer virtuellen Shell zur Laufzeit erreicht werden.
Dafür definieren wir einen Befehl, um alle angegebenen Befehle innerhalb des Pods in der Shell auszuführen, wie unten gezeigt-
command: ["/bin/sh"]
args: ["-c", "while true; do echo Willkommen bei JournalDev; sleep 100; done"]
Als umfassender Leitfaden haben wir in diesem Beispiel den Pod angewiesen, eine Shell zu verwenden, um ein BASH-Skript auszuführen, das mehrere Befehle gleichzeitig ausführt, wie z.B. die Ausführung einer while-Loop.