Note:
- Este tutorial está disponible en un entorno de laboratorio gratuito proporcionado por Oracle.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos de su entorno en la nube.
Despliegue de cargas de trabajo de Kubernetes mediante Podman con Oracle Cloud Native Environment
Introducción
Podman kube proporciona a los desarrolladores y administradores una forma de probar las cargas de trabajo de Kubernetes mediante Podman antes de desplegarlas en un cluster de Kubernetes. El comando podman kube
se utiliza para generar YAML compatible con Kubernetes a partir de contenedores Podman existentes o pods, o para crear contenedores/pods a partir de un archivo YAML de Kubernetes. Esto proporciona una forma conveniente de realizar la transición fácilmente entre los entornos de Podman y Kubernetes, aprovechando así lo mejor de ambos ecosistemas para reducir los ciclos de desarrollo y prueba.
Nota: El comando podman kube play
lee cualquier archivo YAML de Kubernetes válido e inicia los pods, contenedores o volúmenes definidos en el archivo YAML en la instancia de Podman en ejecución local. Sin embargo, no todos los tipos de archivos YAML de Kubernetes están soportados; los tipos de Kubernetes soportados actualmente son:
- Pod
- Despliegue
- PersistentVolumeClaim
- ConfigMap
- Secreto
- DaemonSet
- Trabajo
Aquí encontrará una lista más detallada de los campos de YAML de Kubernetes soportados actualmente por el comando podman kube play
.
Podman puede aplicar archivos YAML de Kubernetes soportados a un cluster de Kubernetes mediante el comando podman kube apply
. Estos pasos funcionan con cualquier cluster de Kubernetes. Sin embargo, recomendamos Oracle Cloud Native Environment como opción de despliegue de Kubernetes. Para obtener más información, consulte la documentación de Oracle Cloud Native Environment.
Nota: En este tutorial se muestra el uso de Podman para generar archivos YAML de Kubernetes y, posteriormente, cómo desplegarlos en un cluster de Kubernetes. Cualquier gestión posterior de los objetos desplegados debe completarse con los comandos kubectl
. Para obtener más información sobre el uso de kubectl
, consulte la documentación de flujo ascendente.
Objetivos
En este tutorial, aprenderá a:
- Crear y ejecutar un pod en Podman mediante Kubernetes YAML.
- Utilice Podman para generar Kubernetes YAML.
- Utilice Podman Kube para desplegar un archivo YAML de Kubernetes en un cluster de Kubernetes.
Requisitos
- Instalación de Oracle Cloud Native Environment (Oracle CNE)
- Un único nodo de control y un nodo de trabajador
- Podman instalado
Configurar Oracle Cloud Native Environment
Nota: Si se ejecuta en su propio arrendamiento, lea el proyecto linux-virt-labs
GitHub README.md y complete los requisitos antes de desplegar el entorno de prácticas.
-
Abra un terminal en Luna Desktop.
-
Clone el proyecto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Cambie al directorio de trabajo.
cd linux-virt-labs/ocne2
-
Instale las recopilaciones necesarias.
ansible-galaxy collection install -r requirements.yml
-
Despliegue el entorno de prácticas.
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'"
El entorno de prácticas libres necesita la variable adicional
local_python_interpreter
, que defineansible_python_interpreter
para las reproducciones que se ejecutan en localhost. Esta variable es necesaria porque el entorno instala el paquete RPM para el SDK para Python de Oracle Cloud Infrastructure, que se encuentra en los módulos python3.6.La unidad de despliegue por defecto utiliza la CPU AMD y Oracle Linux 8. Para utilizar una CPU Intel u Oracle Linux 9, agregue
-e instance_shape="VM.Standard3.Flex"
o-e os_version="9"
al comando de despliegue.Importante: Espere a que el cuaderno de estrategias se ejecute correctamente y alcance la tarea de pausa. En esta etapa del manual, se ha completado la instalación del CNE de Oracle y las instancias están listas. Tome nota de la reproducción anterior, que imprime las direcciones IP públicas y privadas de los nodos que despliega y cualquier otra información de despliegue necesaria al ejecutar el ejercicio práctico.
Acceso al cluster de Kubernetes
-
Abra un terminal y conéctese mediante SSH a la instancia de ocne.
ssh oracle@<ip_address_of_instance>
-
Espere a que el cluster se estabilice y todos los pods informen de que se están ejecutando.
watch kubectl get pods -A
Una vez que todos los pods muestren un STATUS de Running, escriba
Ctrl-C
para salir del comandowatch
. -
Confirme cuántos nodos están presentes.
kubectl get nodes
Confirmar trabajos de Podman
-
Compruebe la versión de Podman.
podman -v
-
Confirme que la CLI de Podman esté funcionando.
podman run quay.io/podman/hello
Salida de ejemplo:
[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
Crear los archivos YAML de Kubernetes
La función Podman Kube puede funcionar con archivos YAML de Kubernetes generados por Podman o con archivos YAML nativos de Kubernetes. Veamos ambos a su vez.
Creación de un pod Podman con un contenedor y generación de YAML de Kubernetes
En primer lugar, despliega un contenedor en un pod Podman localmente. A continuación, utilice el despliegue para generar un archivo YAML de Kubernetes que se pueda desplegar en un cluster de Kubernetes.
-
Cree un pod con un servidor Nginx que asigne el puerto 8081 al host.
podman run -dt --pod new:my-nginx --name nginx-container -p 8081:80 ghcr.io/oracle/oraclelinux9-nginx:1.20
Esto crea un nuevo pod llamado 'my-nginx', despliega un contenedor Nginx dentro del pod y asigna el contenedor al puerto 8081 en el host.
-
Verifique que se haya creado el pod.
podman pod ps
Salida de ejemplo:
[oracle@ocne ~]$ podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e5248f6968b3 my-nginx Running 48 seconds ago 5e41ad85e232 2
-
Confirme que puede acceder al nuevo pod y su contenedor desde el host.
curl http://localhost:8081
-
Genere un archivo de Kubernetes YAML desde el pod en ejecución.
podman kube generate my-nginx --type pod > nginx-pod.yaml
El comando Podman generate crea un archivo compatible con Kubernetes a partir de un pod Podman en ejecución con contenedores. Al hacerlo muy útil para la creación de prototipos locales y, posteriormente, para crear un archivo de manifiesto compatible con Kubernetes, puede desplegarlo en un cluster de Kubernetes.
-
Revise el archivo generado.
cat nginx-pod.yaml
Salida de ejemplo:
[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
Eliminación de pod y contenedores desplegados mediante Podman Kube
Los pods y sus contenedores asociados se pueden quitar fácilmente una vez que haya terminado de trabajar con ellos.
-
Suprima el pod my-nginx.
podman kube down nginx-pod.yaml
-
Confirme que ambos pods se han suprimido.
podman pod ps
Salida de ejemplo:
[oracle@ocne ~]$ podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
Esto confirma que el archivo YAML de Kubernetes generado por Podman que ha creado anteriormente es válido.
Uso de Podman Kube para desplegar YAML de Kubernetes en un cluster de Kubernetes
Podman solo se puede desplegar en un cluster de Kubernetes si el host tiene un archivo kubeconfig
válido ubicado en el directorio $HOME/.kube
.
Confirme que el entorno es válido
-
Confirme que se ha definido la variable de entorno
KUBECONFIG
.env | grep KUBE
Salida de ejemplo:
[oracle@ocne ~]$ env | grep KUBE KUBECONFIG=/home/oracle/.kube/kubeconfig.ocne.local
Información: si tiene instalado
kubectl
y hay varios archivos de configuración en el directorio${HOME}/.kube
, ejecute este comando para confirmar qué archivo de configuración está siendo utilizado actualmente porkubectl
:kubectl get pod -v6 2>&1 | awk '/Config loaded from file:/{print $NF}'
Salida de ejemplo:
[oracle@ocne ~]$ kubectl get pod -v6 2>&1 | awk '/Config loaded from file:/{print $NF}' /home/oracle/.kube/kubeconfig.ocne.local
Nota: Ejecute cualquier comando
kubectl
converbosity
definido en el nivel 6 o superior, y elkubeconfig
actual que se está utilizando se incluye en la salida.
Despliegue de un archivo YAML de Kubernetes válido
-
Crear un archivo YAML de 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
-
Utilice Podman para desplegar el archivo
testpod.yaml
en el cluster de Kubernetes.podman kube apply -f testpod.yaml
Salida de ejemplo:
[oracle@ocne ~]$ podman kube apply -f testpod.yaml Deploying to cluster... Successfully deployed workloads to cluster!
Nota: Se despliega en el espacio de nombres por defecto por defecto.
-
Confirme que el pod se ha desplegado en el cluster.
kubectl get pods
Salida de ejemplo:
[oracle@ocne ~]$ kubectl get pods NAME READY STATUS RESTARTS AGE my-pod 1/1 Running 0 23s
Esto confirma que el podman desplegó un pod denominado 'my-pod' en el cluster.
-
Confirme que Nginx se ha desplegado como se esperaba.
kubectl describe pods/my-pod
Salida de ejemplo:
[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
Esto confirma que el comando
podman kube play
ha utilizado el archivo YAML de Kubernetes para desplegar un pod directamente en un cluster de Kubernetes.
Despliegue de YAML de Kubernetes generado por Podman en un cluster de Kubernetes
Despliegue el archivo YAML de Kubernetes generado por Podman que creó al inicio del tutorial en un cluster de Kubernetes.
-
Despliegue el archivo
nginx-pod.yaml
en el cluster de Kubernetes.podman kube apply -f nginx-pod.yaml
Salida de ejemplo:
[oracle@ocne ~]$ podman kube apply -f nginx-pod.yaml Deploying to cluster... Successfully deployed workloads to cluster!
-
Confirme que el pod se ha desplegado en el cluster.
kubectl get pods
Salida de ejemplo:
[oracle@ocne ~]$ kubectl get pods NAME READY STATUS RESTARTS AGE my-nginx 1/1 Running 0 1m59s my-pod 1/1 Running 0 5m12s
-
Confirme que Nginx se ha desplegado como se esperaba.
kubectl describe pods/my-nginx
Esto confirma que Podman ha desplegado correctamente un YAML de Kubernetes generado por podman denominado 'my-nginx' en el cluster de Kubernetes.
Pasos Siguientes
En este tutorial se ha demostrado cómo utilizar Podman para desplegar cargas de trabajo de Kubernetes en un cluster de Kubernetes con Oracle Cloud Native Environment. Consulte la estación de formación de Oracle Linux para obtener tutoriales y contenido adicionales.
Enlaces relacionados
- Documentación de Oracle Cloud Native Environment
- Circuito de Oracle Cloud Native Environment
- Oracle Linux Training Station
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Deploy Kubernetes Workloads using Podman with Oracle Cloud Native Environment.
G42337-01