Nota
- Questa esercitazione è disponibile in un ambiente di esercitazione pratica gratuito fornito da Oracle.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Quando completi il tuo laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Implementa i carichi di lavoro Kubernetes utilizzando Podman con Oracle Cloud Native Environment
Introduzione
Podman kube offre a sviluppatori e amministratori un modo per testare i carichi di lavoro Kubernetes utilizzando Podman prima di distribuirli in un cluster Kubernetes. Il comando podman kube
viene utilizzato per generare YAML conforme a Kubernetes da container o pod Podman esistenti o per creare container/pod da un file YAML Kubernetes. Ciò offre un modo conveniente per eseguire facilmente la transizione tra ambienti Podman e Kubernetes, sfruttando in tal modo il meglio di entrambi gli ecosistemi per ridurre i cicli di sviluppo e test.
Nota: il comando podman kube play
legge qualsiasi file YAML Kubernetes valido e avvia i pod, i container o i volumi definiti nel file YAML nell'istanza Podman in esecuzione locale. Tuttavia, non tutti i tipi di file YAML Kubernetes sono supportati; i tipi di file Kubernetes attualmente supportati sono:
- POD
- Distribuzione
- PersistentVolumeClaim
- ConfigMap
- Segreto
- DaemonSet
- Job
Un elenco più dettagliato dei campi YAML Kubernetes attualmente supportati dal comando podman kube play
si trova qui.
Podman può applicare i file YAML Kubernetes supportati a un cluster Kubernetes utilizzando il comando podman kube apply
. Questi passi funzionano con qualsiasi cluster Kubernetes. Tuttavia, consigliamo Oracle Cloud Native Environment come opzione di distribuzione Kubernetes. Per ulteriori informazioni, consulta la documentazione di Oracle Cloud Native Environment.
Nota: questa esercitazione illustra l'uso di Podman per generare file YAML Kubernetes e, successivamente, mostra come distribuirli in un cluster Kubernetes. Qualsiasi ulteriore gestione degli oggetti distribuiti deve essere completata utilizzando i comandi kubectl
. Per ulteriori informazioni sull'uso di kubectl
, consultare la documentazione a monte.
Obiettivi
In questo tutorial imparerai a:
- Crea ed esegui un pod su Podman utilizzando Kubernetes YAML.
- Utilizza Podman per generare Kubernetes YAML.
- Utilizzare Podman Kube per distribuire un file YAML Kubernetes in un cluster Kubernetes.
Prerequisiti
- Installazione di Oracle Cloud Native Environment (Oracle CNE)
- Un singolo nodo di controllo e un nodo di lavoro
- Podman installato
Configura Oracle Cloud Native Environment
Nota: se è in esecuzione nella propria tenancy, leggere il progetto linux-virt-labs
GitHub README.md e completare i prerequisiti prima di distribuire l'ambiente di laboratorio.
-
Aprire un terminale sul Luna Desktop.
-
Duplicare il progetto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Passare alla directory di lavoro.
cd linux-virt-labs/ocne2
-
Installare le raccolte richieste.
ansible-galaxy collection install -r requirements.yml
-
Implementare l'ambiente di laboratorio.
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'"
L'ambiente di esercitazione pratica gratuito richiede l'aggiunta della variabile
local_python_interpreter
, che impostaansible_python_interpreter
per le riproduzioni eseguite su localhost. Questa variabile è necessaria perché l'ambiente installa il pacchetto RPM per l'SDK Oracle Cloud Infrastructure per Python, situato sotto i moduli python3.6.La forma di distribuzione predefinita utilizza la CPU AMD e Oracle Linux 8. Per utilizzare una CPU Intel o Oracle Linux 9, aggiungere
-e instance_shape="VM.Standard3.Flex"
o-e os_version="9"
al comando di distribuzione.Importante: attendere che il playbook venga eseguito correttamente e raggiungere il task di sospensione. In questa fase del playbook, l'installazione di Oracle CNE è completa e le istanze sono pronte. Prendi nota del gioco precedente, che stampa gli indirizzi IP pubblici e privati dei nodi che distribuisce e qualsiasi altra informazione di distribuzione necessaria durante l'esecuzione del laboratorio.
Accedi al cluster Kubernetes
-
Aprire un terminale e connettersi tramite SSH all'istanza ocne.
ssh oracle@<ip_address_of_instance>
-
Attendere che il cluster si stabilizzi e che tutti i pod segnalino che sono in esecuzione.
watch kubectl get pods -A
Dopo che tutti i pod mostrano uno STATUS di In esecuzione, digitare
Ctrl-C
per uscire dal comandowatch
. -
Confermare il numero di nodi presenti.
kubectl get nodes
Conferma funzionamento Podman
-
Verificare la versione di Podman.
podman -v
-
Verificare che l'interfaccia CLI Podman sia funzionante.
podman run quay.io/podman/hello
Output di esempio:
[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
Creare i file YAML Kubernetes
La funzione Podman Kube può funzionare con i file YAML Kubernetes generati da Podman o con i file YAML Kubernetes nativi. Diamo un'occhiata a entrambi a loro volta.
Crea un pod Podman con un container e genera Kubernetes YAML
Prima di tutto, distribuisci un contenitore in un pod Podman localmente. Quindi utilizza la distribuzione per generare un file YAML Kubernetes che può essere distribuito in un cluster Kubernetes.
-
Crea un pod con un server Nginx che mappa la porta 8081 all'host.
podman run -dt --pod new:my-nginx --name nginx-container -p 8081:80 ghcr.io/oracle/oraclelinux9-nginx:1.20
Questo crea un nuovo pod chiamato 'my-nginx', distribuisce un contenitore Nginx all'interno del pod e mappa il contenitore alla porta 8081 sull'host.
-
Verificare che il pod sia stato creato.
podman pod ps
Output di esempio:
[oracle@ocne ~]$ podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e5248f6968b3 my-nginx Running 48 seconds ago 5e41ad85e232 2
-
Confermare che è possibile accedere al nuovo pod e al relativo contenitore dall'host.
curl http://localhost:8081
-
Genera un file Kubernetes YAML dal pod in esecuzione.
podman kube generate my-nginx --type pod > nginx-pod.yaml
Il comando Podman generate crea un file conforme a Kubernetes da un pod Podman in esecuzione con container. Rendendolo molto utile per la creazione di prototipi locali e, successivamente, la creazione di un file manifest conforme a Kubernetes, puoi distribuirlo in un cluster Kubernetes.
-
Rivedere il file generato.
cat nginx-pod.yaml
Output di esempio:
[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
Rimuovi pod e container distribuiti utilizzando Podman Kube
I pod e i relativi contenitori associati possono essere rimossi facilmente una volta terminato il lavoro con loro.
-
Eliminare il pod my-nginx.
podman kube down nginx-pod.yaml
-
Confermare che entrambi i pod sono stati eliminati.
podman pod ps
Output di esempio:
[oracle@ocne ~]$ podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
Ciò conferma che il file YAML Kubernetes generato da Podman creato in precedenza è valido.
Utilizzare Podman Kube per distribuire Kubernetes YAML in un cluster Kubernetes
Podman può essere distribuito in un cluster Kubernetes solo se l'host dispone di un file kubeconfig
valido situato nella directory $HOME/.kube
.
Conferma validità ambiente
-
Verificare che la variabile di ambiente
KUBECONFIG
sia impostata.env | grep KUBE
Output di esempio:
[oracle@ocne ~]$ env | grep KUBE KUBECONFIG=/home/oracle/.kube/kubeconfig.ocne.local
Informazioni: se è installato
kubectl
e sono presenti più file di configurazione nella directory${HOME}/.kube
, eseguire questo comando per confermare quale file di configurazione è attualmente utilizzato dakubectl
:kubectl get pod -v6 2>&1 | awk '/Config loaded from file:/{print $NF}'
Output di esempio:
[oracle@ocne ~]$ kubectl get pod -v6 2>&1 | awk '/Config loaded from file:/{print $NF}' /home/oracle/.kube/kubeconfig.ocne.local
Nota: eseguire qualsiasi comando
kubectl
converbosity
impostato sul livello 6 o superiore e ilkubeconfig
corrente utilizzato è incluso nell'output.
Distribuire un file YAML Kubernetes valido
-
Creare un file YAML Kubernetes.
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
-
Utilizzare Podman per distribuire il file
testpod.yaml
nel cluster Kubernetes.podman kube apply -f testpod.yaml
Output di esempio:
[oracle@ocne ~]$ podman kube apply -f testpod.yaml Deploying to cluster... Successfully deployed workloads to cluster!
Nota: questa opzione viene distribuita nello spazio di nomi predefinito per impostazione predefinita.
-
Confermare che il pod è stato distribuito nel cluster.
kubectl get pods
Output di esempio:
[oracle@ocne ~]$ kubectl get pods NAME READY STATUS RESTARTS AGE my-pod 1/1 Running 0 23s
Ciò conferma che podman ha distribuito un pod denominato 'my-pod' nel cluster.
-
Confermare la distribuzione di Nginx come previsto.
kubectl describe pods/my-pod
Output di esempio:
[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
Ciò conferma che il comando
podman kube play
ha utilizzato il file YAML Kubernetes per distribuire un pod direttamente in un cluster Kubernetes.
Distribuisci YAML Kubernetes generato da Podman in un cluster Kubernetes
Distribuisci il file YAML Kubernetes generato da Podman creato all'inizio dell'esercitazione in un cluster Kubernetes.
-
Distribuire il file
nginx-pod.yaml
nel cluster Kubernetes.podman kube apply -f nginx-pod.yaml
Output di esempio:
[oracle@ocne ~]$ podman kube apply -f nginx-pod.yaml Deploying to cluster... Successfully deployed workloads to cluster!
-
Confermare che il pod è stato distribuito nel cluster.
kubectl get pods
Output di esempio:
[oracle@ocne ~]$ kubectl get pods NAME READY STATUS RESTARTS AGE my-nginx 1/1 Running 0 1m59s my-pod 1/1 Running 0 5m12s
-
Confermare la distribuzione di Nginx come previsto.
kubectl describe pods/my-nginx
Ciò conferma che Podman ha implementato con successo un YAML Kubernetes generato da podman denominato 'my-nginx' nel cluster Kubernetes.
Passi successivi
Questa esercitazione ha illustrato come utilizzare Podman per distribuire i carichi di lavoro Kubernetes in un cluster Kubernetes con Oracle Cloud Native Environment. Controlla la stazione di formazione Oracle Linux per ulteriori esercitazioni e contenuti.
Collegamenti correlati
- Documentazione di Oracle Cloud Native Environment
- Oracle Cloud Native Environment Track
- Stazione di formazione Oracle Linux
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti di formazione gratuiti sul canale YouTube di Oracle Learning. Inoltre, visitare education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione del prodotto, visitare Oracle Help Center.
Deploy Kubernetes Workloads using Podman with Oracle Cloud Native Environment.
G42331-01