Hinweis:
- Dieses Tutorial ist in einer von Oracle bereitgestellten kostenlosen Übungsumgebung verfügbar.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. In der Übung ersetzen Sie diese Werte durch die Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Kubernetes-Workloads mit Podman und Oracle Cloud Native Environment bereitstellen
Einführung
Mit Podman kube können Entwickler und Administratoren Kubernetes-Workloads mit Podman testen, bevor sie in einem Kubernetes-Cluster bereitgestellt werden. Mit dem Befehl podman kube
wird Kubernetes-konforme YAML aus vorhandenen Podman-Containern oder -Pods generiert oder Container/Pods aus einer Kubernetes-YAML-Datei erstellt. Auf diese Weise können Sie problemlos zwischen Podman- und Kubernetes-Umgebungen wechseln und das Beste aus beiden Ökosystemen nutzen, um die Entwicklungs- und Testzyklen zu reduzieren.
Hinweis: Der Befehl podman kube play
liest eine beliebige gültige Kubernetes-YAML-Datei und startet die Pods, Container oder Volumes, die in der YAML-Datei in der lokal ausgeführten Podman-Instanz definiert sind. Es werden jedoch nicht alle Kubernetes-YAML-Dateitypen unterstützt. Die derzeit unterstützten Kubernetes-Typen sind:
- Pod
- Deployment
- PersistentVolumeClaim
- ConfigMap
- Geheimer Schlüssel
- DaemonSet
- Job
Eine ausführlichere Liste der Kubernetes-YAML-Felder, die derzeit vom Befehl podman kube play
unterstützt werden, finden Sie hier.
Podman kann unterstützte Kubernetes-YAML-Dateien mit dem Befehl podman kube apply
auf ein Kubernetes-Cluster anwenden. Diese Schritte funktionieren mit jedem Kubernetes-Cluster. Wir empfehlen Oracle Cloud Native Environment jedoch als Kubernetes-Deployment-Option. Weitere Informationen finden Sie in der Dokumentation zu Oracle Cloud Native Environment.
Hinweis: In diesem Tutorial wird die Verwendung von Podman zum Generieren von Kubernetes-YAML-Dateien veranschaulicht. Anschließend wird gezeigt, wie Sie diese in einem Kubernetes-Cluster bereitstellen. Jede weitere Verwaltung der bereitgestellten Objekte muss mit kubectl
-Befehlen abgeschlossen werden. Weitere Informationen zur Verwendung von kubectl
finden Sie in der Upstream-Dokumentation.
Ziele
In diesem Tutorial lernen Sie:
- Erstellen Sie mit Kubernetes YAML einen Pod auf Podman, und führen Sie ihn aus.
- Verwenden Sie Podman, um Kubernetes YAML zu generieren.
- Mit Podman Kube können Sie eine Kubernetes-YAML-Datei in einem Kubernetes-Cluster bereitstellen.
Voraussetzungen
- Installation von Oracle Cloud Native Environment (Oracle CNE)
- Ein einzelner Kontrollknoten und ein Worker-Knoten
- Podman installiert
Oracle Cloud Native Environment konfigurieren
Hinweis: Wenn Sie in Ihrem eigenen Mandanten ausgeführt werden, lesen Sie das Projekt linux-virt-labs
GitHub README.md, und schließen Sie die Voraussetzungen ab, bevor Sie die Übungsumgebung bereitstellen.
-
Öffnen Sie ein Terminal auf dem Luna Desktop.
-
Klonen Sie das Projekt
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Wechseln Sie in das Arbeitsverzeichnis.
cd linux-virt-labs/ocne2
-
Installieren Sie die erforderlichen Sammlungen.
ansible-galaxy collection install -r requirements.yml
-
Bereitstellen der Übungsumgebung.
ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6" -e use_podman=true -e install_ocne_rpm=true -e create_ocne_cluster=true -e "ocne_cluster_node_options='-n 1 -w 1'"
Die kostenlose Übungsumgebung erfordert die zusätzliche Variable
local_python_interpreter
, dieansible_python_interpreter
für Wiedergaben festlegt, die auf localhost ausgeführt werden. Diese Variable ist erforderlich, da die Umgebung das RPM-Package für das Oracle Cloud Infrastructure-SDK für Python unter den python3.6-Modulen installiert.Die Standard-Deployment-Ausprägung verwendet AMD-CPU und Oracle Linux 8. Um eine Intel CPU oder Oracle Linux 9 zu verwenden, fügen Sie dem Deployment-Befehl
-e instance_shape="VM.Standard3.Flex"
oder-e os_version="9"
hinzu.Wichtig: Warten Sie, bis das Playbook erfolgreich ausgeführt wird, und erreichen Sie die Unterbrechungsaufgabe. In dieser Phase des Playbooks ist die Installation von Oracle CNE abgeschlossen, und die Instanzen sind bereit. Notieren Sie sich die vorherige Wiedergabe, in der die öffentlichen und privaten IP-Adressen der bereitgestellten Knoten und alle anderen Deployment-Informationen gedruckt werden, die während der Ausführung der Übung erforderlich sind.
Auf Kubernetes-Cluster zugreifen
-
Öffnen Sie ein Terminal, und stellen Sie eine SSH-Verbindung zur ocne-Instanz her.
ssh oracle@<ip_address_of_instance>
-
Warten Sie, bis sich das Cluster stabilisiert hat, und alle Pods melden, dass sie ausgeführt werden.
watch kubectl get pods -A
Wenn alle Pods den STATUS Wird ausgeführt aufweisen, geben Sie
Ctrl-C
ein, um den Befehlwatch
zu beenden. -
Prüfen Sie, wie viele Knoten vorhanden sind.
kubectl get nodes
Podman-Arbeiten bestätigen
-
Prüfen Sie die Podman-Version.
podman -v
-
Stellen Sie sicher, dass die Podman-CLI funktioniert.
podman run quay.io/podman/hello
Beispielausgabe:
[oracle@ol-server ~]$ podman run quay.io/podman/hello Trying to pull quay.io/podman/hello:latest... Getting image source signatures Copying blob f82b04e85914 done Copying config dbd85e09a1 done Writing manifest to image destination Storing signatures !... Hello Podman World ...! .--"--. / - - \ / (O) (O) \ ~~~| -=(,Y,)=- | .---. /` \ |~~ ~/ o o \~~~~.----. ~~ | =(X)= |~ / (O (O) \ ~~~~~~~ ~| =(Y_)=- | ~~~~ ~~~| U |~~ Project: https://github.com/containers/podman Website: https://podman.io Documents: https://docs.podman.io Twitter: @Podman_io
Kubernetes-YAML-Dateien erstellen
Das Podman-Kube-Feature kann entweder mit von Podman generierten Kubernetes-YAML-Dateien oder mit nativen Kubernetes-YAML-Dateien verwendet werden. Schauen wir uns beides an.
Podman-Pod mit einem Container erstellen und Kubernetes-YAML generieren
Stellen Sie zunächst einen Container lokal in einem Podman-Pod bereit. Generieren Sie dann mit dem Deployment eine Kubernetes-YAML-Datei, die in einem Kubernetes-Cluster bereitgestellt werden kann.
-
Erstellen Sie einen Pod mit einem Nginx-Server, der Port 8081 dem Host zuordnet.
podman run -dt --pod new:my-nginx --name nginx-container -p 8081:80 ghcr.io/oracle/oraclelinux9-nginx:1.20
Dadurch wird ein neuer Pod mit dem Namen 'my-nginx' erstellt, ein Nginx-Container im Pod bereitgestellt und der Container Port 8081 auf dem Host zugeordnet.
-
Prüfen Sie, ob der Pod erstellt wurde.
podman pod ps
Beispielausgabe:
[oracle@ocne ~]$ podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e5248f6968b3 my-nginx Running 48 seconds ago 5e41ad85e232 2
-
Bestätigen Sie, dass Sie vom Host aus auf den neuen Pod und den zugehörigen Container zugreifen können.
curl http://localhost:8081
-
Generieren Sie eine Kubernetes-Datei YAML aus dem ausgeführten Pod.
podman kube generate my-nginx --type pod > nginx-pod.yaml
Der Befehl Podman generate erstellt eine Kubernetes-konforme Datei aus einem ausgeführten Podman-Pod mit Containern. Sie ist sehr nützlich für das lokale Prototyping und das anschließende Erstellen einer Kubernetes-kompatiblen Manifestdatei. Sie können sie in einem Kubernetes-Cluster bereitstellen.
-
Prüfen Sie die generierte Datei.
cat nginx-pod.yaml
Beispielausgabe:
[oracle@ocne ~]$ cat nginx-pod.yaml # Save the output of this file and use kubectl create -f to import # it into Kubernetes. # # Created with podman-4.9.4-rhel apiVersion: v1 kind: Pod metadata: creationTimestamp: "2025-08-11T14:08:13Z" labels: app: my-nginx name: my-nginx spec: containers: - env: - name: TERM value: xterm image: ghcr.io/oracle/oraclelinux9-nginx:1.20 name: zenbardeen ports: - containerPort: 80 hostPort: 8081 tty: true
Mit Podman Kube bereitgestellte Pod- und Container entfernen
Pods und die zugehörigen Container können einfach entfernt werden, sobald Sie die Arbeit mit ihnen abgeschlossen haben.
-
Löschen Sie den Pod my-nginx.
podman kube down nginx-pod.yaml
-
Vergewissern Sie sich, dass beide Pods gelöscht wurden.
podman pod ps
Beispielausgabe:
[oracle@ocne ~]$ podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
Dadurch wird bestätigt, dass die von Podman generierte Kubernetes-YAML-Datei, die Sie zuvor erstellt haben, gültig ist.
Mit Podman-Kube Kubernetes-YAML in einem Kubernetes-Cluster bereitstellen
Podman kann nur in einem Kubernetes-Cluster bereitgestellt werden, wenn Ihr Host über eine gültige Datei kubeconfig
im Verzeichnis $HOME/.kube
verfügt.
Bestätigen Sie, dass Ihre Umgebung gültig ist
-
Stellen Sie sicher, dass die Umgebungsvariable
KUBECONFIG
festgelegt ist.env | grep KUBE
Beispielausgabe:
[oracle@ocne ~]$ env | grep KUBE KUBECONFIG=/home/oracle/.kube/kubeconfig.ocne.local
Informationen: Wenn
kubectl
installiert ist und mehrere Konfigurationsdateien im Verzeichnis${HOME}/.kube
vorhanden sind, führen Sie diesen Befehl aus, um zu bestätigen, welche Konfigurationsdatei derzeit vonkubectl
verwendet wird:kubectl get pod -v6 2>&1 | awk '/Config loaded from file:/{print $NF}'
Beispielausgabe:
[oracle@ocne ~]$ kubectl get pod -v6 2>&1 | awk '/Config loaded from file:/{print $NF}' /home/oracle/.kube/kubeconfig.ocne.local
Hinweis: Führen Sie einen beliebigen
kubectl
-Befehl aus, wobeiverbosity
auf Ebene 6 oder höher gesetzt ist und der aktuellekubeconfig
, der verwendet wird, in der Ausgabe enthalten ist.
Gültige Kubernetes-YAML-Datei bereitstellen
-
Erstellen Sie eine Kubernetes YAML-Datei.
cat << EOF | tee testpod.yaml > /dev/null apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: test-container image: ghcr.io/oracle/oraclelinux9-nginx:1.20 ports: - containerPort: 8080 EOF
-
Verwenden Sie Podman, um die Datei
testpod.yaml
in Ihrem Kubernetes-Cluster bereitzustellen.podman kube apply -f testpod.yaml
Beispielausgabe:
[oracle@ocne ~]$ podman kube apply -f testpod.yaml Deploying to cluster... Successfully deployed workloads to cluster!
Hinweis: Dieser wird standardmäßig im Standard-Namespace bereitgestellt.
-
Vergewissern Sie sich, dass der Pod in Ihrem Cluster bereitgestellt ist.
kubectl get pods
Beispielausgabe:
[oracle@ocne ~]$ kubectl get pods NAME READY STATUS RESTARTS AGE my-pod 1/1 Running 0 23s
Dadurch wird bestätigt, dass Podman einen Pod mit dem Namen "my-pod" im Cluster bereitgestellt hat.
-
Stellen Sie sicher, dass Nginx wie erwartet bereitgestellt wird.
kubectl describe pods/my-pod
Beispielausgabe:
[oracle@ocne ~]$ kubectl describe pods/my-pod Name: my-pod Namespace: default Priority: 0 Service Account: default Node: ocne-worker-1/192.168.122.122 Start Time: Wed, 06 Aug 2025 15:09:55 +0000 Labels: <none> Annotations: <none> Status: Running IP: 10.244.1.6 IPs: IP: 10.244.1.6 Containers: test-container: Container ID: cri-o://c2ea59274a702f9cdb044d92869b63da27249370a0c55bef2994f49a092e527a Image: ghcr.io/oracle/oraclelinux9-nginx:1.20 Image ID: ghcr.io/oracle/oraclelinux9-nginx@sha256:16b15a609a172059f9e66ae412dde3b9febe0b0fdd4eb1084eac2783088de6f1 Port: 8080/TCP Host Port: 0/TCP State: Running ... ... ... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 48m default-scheduler Successfully assigned default/my-pod to ocne-worker-1 Normal Pulling 48m kubelet Pulling image "ghcr.io/oracle/oraclelinux9-nginx:1.20" Normal Pulled 48m kubelet Successfully pulled image "ghcr.io/oracle/oraclelinux9-nginx:1.20" in 10.66s (10.66s including waiting). Image size: 267010601 bytes. Normal Created 48m kubelet Created container: test-container Normal Started 48m kubelet Started container test-container
Dadurch wird bestätigt, dass der Befehl
podman kube play
die Kubernetes-YAML-Datei verwendet hat, um einen Pod direkt in einem Kubernetes-Cluster bereitzustellen.
Von Podman generierte Kubernetes-YAML in einem Kubernetes-Cluster bereitstellen
Stellen Sie die Podman-generierte Kubernetes-YAML-Datei bereit, die Sie zu Beginn des Tutorials erstellt haben, in einem Kubernetes-Cluster.
-
Stellen Sie die Datei
nginx-pod.yaml
in Ihrem Kubernetes-Cluster bereit.podman kube apply -f nginx-pod.yaml
Beispielausgabe:
[oracle@ocne ~]$ podman kube apply -f nginx-pod.yaml Deploying to cluster... Successfully deployed workloads to cluster!
-
Vergewissern Sie sich, dass der Pod in Ihrem Cluster bereitgestellt ist.
kubectl get pods
Beispielausgabe:
[oracle@ocne ~]$ kubectl get pods NAME READY STATUS RESTARTS AGE my-nginx 1/1 Running 0 1m59s my-pod 1/1 Running 0 5m12s
-
Stellen Sie sicher, dass Nginx wie erwartet bereitgestellt wird.
kubectl describe pods/my-nginx
Dadurch wird bestätigt, dass Podman erfolgreich eine vom Podman generierte Kubernetes-YAML namens 'my-nginx' im Kubernetes-Cluster bereitgestellt hat.
Nächste Schritte
In diesem Tutorial wurde gezeigt, wie Sie Podman verwenden, um Kubernetes-Workloads in einem Kubernetes-Cluster mit Oracle Cloud Native Environment bereitzustellen. Weitere Tutorials und Inhalte finden Sie in der Oracle Linux-Schulungsstation.
Verwandte Links
- Oracle Cloud Native Environment-Dokumentation
- Oracle Cloud Native Environment-Track
- Oracle Linux-Schulungsstation
Weitere Lernressourcen
Sehen Sie sich weitere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem education.oracle.com/learning-explorer, um ein Oracle Learning Explorer zu werden.
Die Produktdokumentation finden Sie im Oracle Help Center.
Deploy Kubernetes Workloads using Podman with Oracle Cloud Native Environment.
G42328-01