Observação:
- Este tutorial está disponível em um ambiente de laboratório gratuito fornecido pela Oracle.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Implantar Cargas de Trabalho do Kubernetes usando o Podman com o Oracle Cloud Native Environment
Introdução
O Podman kube fornece aos desenvolvedores e administradores uma maneira de testar cargas de trabalho do Kubernetes usando o Podman antes de implantá-las em um cluster do Kubernetes. O comando podman kube
é usado para gerar YAML compatível com Kubernetes a partir de contêineres Podman existentes ou Pods, ou para criar contêineres/pods a partir de um arquivo YAML do Kubernetes. Isso fornece uma maneira conveniente de fazer a transição facilmente entre os ambientes Podman e Kubernetes, aproveitando o melhor dos dois ecossistemas para reduzir os ciclos de desenvolvimento e teste.
Observação: O comando podman kube play
lê qualquer arquivo YAML do Kubernetes válido e inicia os pods, contêineres ou volumes definidos no arquivo YAML na sua instância do Podman em execução localmente. No entanto, nem todos os tipos de arquivo YAML do Kubernetes são suportados; os tipos de Kubernetes suportados no momento são:
- Pod
- Implantação
- PersistentVolumeClaim
- ConfigMap
- Secreto
- DaemonSet
- Job
Uma lista mais detalhada dos campos do Kubernetes YAML atualmente suportados pelo comando podman kube play
está localizada aqui.
O Podman pode aplicar arquivos YAML suportados do Kubernetes a um cluster do Kubernetes usando o comando podman kube apply
. Essas etapas funcionam com qualquer cluster do Kubernetes. No entanto, recomendamos o Oracle Cloud Native Environment como uma opção de implantação do Kubernetes. Para obter mais informações, consulte a documentação do Oracle Cloud Native Environment.
Observação: Este tutorial demonstra o uso do Podman para gerar arquivos YAML do Kubernetes e, posteriormente, mostra como implantá-los em um cluster do Kubernetes. Qualquer gerenciamento adicional dos objetos implantados deve ser concluído usando os comandos kubectl
. Para obter mais informações sobre como usar o kubectl
, consulte a documentação upstream.
Objetivos
Neste tutorial, você aprenderá a:
- Criar e executar um Pod no Podman usando o Kubernetes YAML.
- Usar o Podman para gerar o Kubernetes YAML.
- Use o Podman Kube para implantar um arquivo YAML do Kubernetes em um cluster do Kubernetes.
Pré-requisitos
- Instalação do Oracle Cloud Native Environment (Oracle CNE)
- Um único nó de controle e um nó de trabalho
- Podman instalado
Configurar o Oracle Cloud Native Environment
Observação: Se estiver em execução na sua própria tenancy, leia o projeto linux-virt-labs
GitHub README.md e conclua os pré-requisitos antes de implantar o ambiente de laboratório.
-
Abra um terminal no Luna Desktop.
-
Clone o projeto
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Altere para o diretório de trabalho.
cd linux-virt-labs/ocne2
-
Instale as coleções necessárias.
ansible-galaxy collection install -r requirements.yml
-
Implante o ambiente de laboratório.
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'"
O ambiente de laboratório gratuito requer a variável extra
local_python_interpreter
, que defineansible_python_interpreter
para reproduções em execução no localhost. Essa variável é necessária porque o ambiente instala o pacote RPM do Oracle Cloud Infrastructure SDK para Python, localizado nos módulos python3.6.A forma de implantação padrão usa a CPU AMD e o Oracle Linux 8. Para usar uma CPU Intel ou um Oracle Linux 9, adicione
-e instance_shape="VM.Standard3.Flex"
ou-e os_version="9"
ao comando de implantação.Importante: Aguarde a execução bem-sucedida do playbook e atinja a tarefa de pausa. Neste estágio do playbook, a instalação do Oracle CNE está concluída e as instâncias estão prontas. Anote o jogo anterior, que imprime os endereços IP públicos e privados dos nós que ele implanta e quaisquer outras informações de implantação necessárias durante a execução do laboratório.
Acessar o Cluster do Kubernetes
-
Abra um terminal e conecte-se via SSH à instância do ocne.
ssh oracle@<ip_address_of_instance>
-
Aguarde a estabilização do cluster e todos os pods reportem que estão em execução.
watch kubectl get pods -A
Depois que todos os pods mostrarem um STATUS de Em Execução, digite
Ctrl-C
para sair do comandowatch
. -
Confirme quantos nós estão presentes.
kubectl get nodes
Confirmar Funcionamento do Podman
-
Verifique a versão do Podman.
podman -v
-
Confirme se a CLI do Podman está funcionando.
podman run quay.io/podman/hello
Exemplo de Saída:
[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
Criar os arquivos YAML do Kubernetes
O recurso Podman Kube pode funcionar com arquivos YAML do Kubernetes gerados pelo Podman ou com arquivos YAML do Kubernetes nativos. Vejamos os dois por sua vez.
Criar um Podman com um Contêiner e Gerar o Kubernetes YAML
Primeiro, implante um contêiner em um pod Podman localmente. Em seguida, use a implantação para gerar um arquivo YAML do Kubernetes que possa ser implantado em um cluster do Kubernetes.
-
Crie um pod com um servidor Nginx que mapeie a porta 8081 para o host.
podman run -dt --pod new:my-nginx --name nginx-container -p 8081:80 ghcr.io/oracle/oraclelinux9-nginx:1.20
Isso cria um novo pod chamado 'my-nginx', implanta um contêiner Nginx dentro do pod e mapeia o contêiner para a porta 8081 no host.
-
Verifique se o Pod foi criado.
podman pod ps
Exemplo de Saída:
[oracle@ocne ~]$ podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e5248f6968b3 my-nginx Running 48 seconds ago 5e41ad85e232 2
-
Confirme se você pode acessar o novo pod e seu contêiner pelo host.
curl http://localhost:8081
-
Gerar um arquivo YAML do Kubernetes com base no pod em execução.
podman kube generate my-nginx --type pod > nginx-pod.yaml
O comando Podman generate cria um arquivo compatível com o Kubernetes de um pod Podman em execução com contêineres. Tornando-o muito útil para prototipagem local e, posteriormente, criando um arquivo de manifesto compatível com o Kubernetes, você pode implantar em um cluster do Kubernetes.
-
Revise o arquivo gerado.
cat nginx-pod.yaml
Exemplo de Saída:
[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
Remover Pod e Contêineres Implantados usando o Podman Kube
Os pods e seus contêineres associados podem ser removidos facilmente depois que você terminar de trabalhar com eles.
-
Exclua o pod my-nginx.
podman kube down nginx-pod.yaml
-
Confirme se os dois pods foram excluídos.
podman pod ps
Exemplo de Saída:
[oracle@ocne ~]$ podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
Isso confirma que o arquivo YAML do Kubernetes gerado pelo Podman que você criou anteriormente é válido.
Usar o Podman Kube para Implantar o Kubernetes YAML em um Cluster do Kubernetes
O Podman só poderá implantar em um cluster do Kubernetes se seu host tiver um arquivo kubeconfig
válido localizado no diretório $HOME/.kube
.
Confirme se Seu Ambiente é Válido
-
Confirme se a variável de ambiente
KUBECONFIG
está definida.env | grep KUBE
Exemplo de Saída:
[oracle@ocne ~]$ env | grep KUBE KUBECONFIG=/home/oracle/.kube/kubeconfig.ocne.local
Informações: Se você tiver o
kubectl
instalado e houver vários arquivos de configuração no diretório${HOME}/.kube
, execute este comando para confirmar qual arquivo de configuração está sendo usado no momento pelokubectl
:kubectl get pod -v6 2>&1 | awk '/Config loaded from file:/{print $NF}'
Exemplo de Saída:
[oracle@ocne ~]$ kubectl get pod -v6 2>&1 | awk '/Config loaded from file:/{print $NF}' /home/oracle/.kube/kubeconfig.ocne.local
Observação: Execute qualquer comando
kubectl
comverbosity
definido como nível 6 ou superior, e okubeconfig
atual que está sendo usado está incluído na saída.
Implantar um arquivo YAML do Kubernetes válido
-
Criar um arquivo YAML do 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
-
Use o Podman para implantar o arquivo
testpod.yaml
no seu cluster do Kubernetes.podman kube apply -f testpod.yaml
Exemplo de Saída:
[oracle@ocne ~]$ podman kube apply -f testpod.yaml Deploying to cluster... Successfully deployed workloads to cluster!
Observação: por padrão, isso é implantado no namespace padrão.
-
Confirme se o Pod está implantado no seu cluster.
kubectl get pods
Exemplo de Saída:
[oracle@ocne ~]$ kubectl get pods NAME READY STATUS RESTARTS AGE my-pod 1/1 Running 0 23s
Isso confirma que o podman implantou um pod chamado 'my-pod' no cluster.
-
Confirme se o Nginx foi implantado conforme esperado.
kubectl describe pods/my-pod
Exemplo de Saída:
[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
Isso confirma que o comando
podman kube play
usou o arquivo YAML do Kubernetes para implantar um pod diretamente em um cluster do Kubernetes.
Implantar Kubernetes YAML gerado pelo Podman em um Cluster do Kubernetes
Implante o arquivo YAML do Kubernetes gerado pelo Podman que você criou no início do tutorial em um Cluster do Kubernetes.
-
Implante o arquivo
nginx-pod.yaml
no cluster do Kubernetes.podman kube apply -f nginx-pod.yaml
Exemplo de Saída:
[oracle@ocne ~]$ podman kube apply -f nginx-pod.yaml Deploying to cluster... Successfully deployed workloads to cluster!
-
Confirme se o Pod está implantado no seu cluster.
kubectl get pods
Exemplo de Saída:
[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 se o Nginx foi implantado conforme esperado.
kubectl describe pods/my-nginx
Isso confirma que o Podman implantou com sucesso uma YAML do Kubernetes gerada pelo podman chamada 'my-nginx' no cluster do Kubernetes.
Próximas Etapas
Este tutorial demonstrou como usar o Podman para implantar cargas de trabalho do Kubernetes em um cluster do Kubernetes com o Oracle Cloud Native Environment. Confira o Oracle Linux Training Station para obter tutoriais e conteúdo adicionais.
Links Relacionados
- Documentação do Oracle Cloud Native Environment
- Roteiro do Oracle Cloud Native Environment
- Oracle Linux Training Station
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal do Oracle Learning YouTube. Além disso, acesse education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Deploy Kubernetes Workloads using Podman with Oracle Cloud Native Environment.
G42334-01