Podman: Linux-Container einfach gemacht, Teil 3

Seite 5: Kubernetes, Pods und Podman

Inhaltsverzeichnis

Kubernetes ist das dominierende Tool für die Orchestrierung von Containern und entwickelt sich in einer Geschwindigkeit, die neben dem Linux-Kernel kaum ein anderes Open-Source-Projekt erreicht hat. Inzwischen hat sich Kubernetes als ein De-Facto-Standard durchgesetzt, und viele Anwender und Entwickler stehen vor der Aufgabe, Services auf Kubernetes zu migrieren und neue darauf einzusetzen. Die Entwicklung solcher Kubernetes-Deployments ist jedoch nicht immer einfach, insbesondere wenn man sie lokal testen soll. Denn Kubernetes ist kompliziert aufzusetzen und die für die Ausführung notwendigen Ressourcen stehen nicht jedem Entwicklungssystem zur Verfügung.

Um das Leben von Kubernetes-Entwicklern und -Anwendern zu erleichtern, bietet Podman den podman-play-kube-Befehl an, der Deployments in Kubernetes YAML lokal in Form von Pods und Containern zum Ausführen bringt. Darüber hinaus erlaubt das podman-generate-kube-Kommando das Generieren von Kubernetes Pod YAML basierend auf einem Container oder Pod.

Zunächst startet man beispielsweise einen nginx-Container der Podman-Entwickler:

[heise]$ podman run -dt -p 8000:80 --name heise-container quay.io/libpod/alpine_nginx:latest

[heise]$ curl http://localhost:8000
podman rulez

Basierend auf ihm lässt sich nun die Kubernetes Pod YAML generieren:

[heise]$ podman generate kube heise-container > k8s.yaml

[heise]$ cat k8s.yaml
# Generation of Kubernetes YAML is still under development!
#
# Save the output of this file and use kubectl create -f to import
# it into Kubernetes.
#
# Created with podman-1.4.2
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: "2019-07-04T15:53:32Z"
labels:
app: heise-container
name: heise-container
spec:
containers:
- command:
- nginx
- -g
- daemon off;
env:
- name: PATH
value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- name: TERM
value: xterm
- name: HOSTNAME
- name: container
value: podman
image: quay.io/libpod/alpine_nginx:latest
name: heise-container
ports:
- containerPort: 80
hostPort: 8000
protocol: TCP
resources: {}
securityContext:
allowPrivilegeEscalation: true
capabilities: {}
privileged: false
readOnlyRootFilesystem: false
tty: true
workingDir: /
status: {}

Die generierte k8s.yaml-Datei können Anwender nun lokal mit podman-play-kube oder direkt mit dem Kubernetes-Client kubectl auf einem Cluster ausführen. Die Podman-Entwickler verstehen sich dabei als Brückenbauer zwischen einer lokalen, containerisierten Entwicklungsumgebung und der Cloud-Native-Welt von Kubernetes und wollen eine einfache Migration zwischen beiden ermöglichen.