Remarques :
- Ce tutoriel est disponible dans un environnement d'atelier gratuit fourni par Oracle.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Déployer des charges de travail Kubernetes à l'aide de Podman avec Oracle Cloud Native Environment
Introduction
Podman kube offre aux développeurs et aux administrateurs un moyen de tester les charges de travail Kubernetes à l'aide de Podman avant de les déployer vers un cluster Kubernetes. La commande podman kube
est utilisée pour générer des YAML conformes à Kubernetes à partir de conteneurs ou pods Podman existants ou pour créer des conteneurs/pods à partir d'un fichier YAML Kubernetes. Il s'agit d'un moyen pratique de passer facilement d'un environnement Podman à un environnement Kubernetes, en tirant parti du meilleur des deux écosystèmes pour réduire les cycles de développement et de test.
Remarque : la commande podman kube play
lit tout fichier YAML Kubernetes valide et démarre les pods, conteneurs ou volumes définis dans le fichier YAML sur votre instance Podman en cours d'exécution locale. Cependant, tous les types de fichier YAML Kubernetes ne sont pas pris en charge ; les types Kubernetes actuellement pris en charge sont les suivants :
- Pod
- Déploiement
- PersistentVolumeClaim
- ConfigMap
- Phrase secrète
- DaemonSet
- Job
Une liste plus détaillée des champs YAML Kubernetes actuellement pris en charge par la commande podman kube play
est disponible ici.
Podman peut appliquer les fichiers YAML Kubernetes pris en charge à un cluster Kubernetes à l'aide de la commande podman kube apply
. Ces étapes fonctionnent avec n'importe quel cluster Kubernetes. Cependant, nous recommandons Oracle Cloud Native Environment comme option de déploiement Kubernetes. Pour plus d'informations, reportez-vous à la documentation Oracle Cloud Native Environment.
Remarque : ce tutoriel présente l'utilisation de Podman pour générer des fichiers YAML Kubernetes, puis explique comment les déployer vers un cluster Kubernetes. Toute gestion ultérieure des objets déployés doit être effectuée à l'aide des commandes kubectl
. Pour plus d'informations sur l'utilisation de kubectl
, reportez-vous à la documentation en amont.
Objectifs
Dans ce tutoriel, vous allez apprendre à :
- Créez et exécutez un pod sur Podman à l'aide de Kubernetes YAML.
- Utilisez Podman pour générer Kubernetes YAML.
- Utilisez Podman Kube pour déployer un fichier YAML Kubernetes vers un cluster Kubernetes.
Prérequis
- Installation d'Oracle Cloud Native Environment (Oracle CNE)
- Un noeud de contrôle unique et un noeud de processus actif
- Podman installé
Configuration d'Oracle Cloud Native Environment
Remarque : si vous êtes en cours d'exécution dans votre propre location, lisez le projet linux-virt-labs
GitHub README.md et complétez les prérequis avant de déployer l'environnement d'exercice.
-
Ouvrez un terminal sur le bureau Luna.
-
Clonez le projet
linux-virt-labs
GitHub.git clone https://github.com/oracle-devrel/linux-virt-labs.git
-
Accédez au répertoire de travail.
cd linux-virt-labs/ocne2
-
Installez les ensembles requis.
ansible-galaxy collection install -r requirements.yml
-
Déployez l'environnement d'exercice.
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'environnement d'exercice libre requiert la variable supplémentaire
local_python_interpreter
, qui définitansible_python_interpreter
pour les lectures exécutées sur localhost. Cette variable est nécessaire car l'environnement installe le package RPM pour le kit SDK Oracle Cloud Infrastructure pour Python, situé sous les modules python3.6.La forme de déploiement par défaut utilise l'UC AMD et Oracle Linux 8. Pour utiliser une CPU Intel ou Oracle Linux 9, ajoutez
-e instance_shape="VM.Standard3.Flex"
ou-e os_version="9"
à la commande de déploiement.Important : attendez que le guide de lecture s'exécute correctement et atteignez la tâche de pause. A ce stade du manuel, l'installation du CNE Oracle est terminée et les instances sont prêtes. Prenez note de la lecture précédente, qui affiche les adresses IP publiques et privées des noeuds qu'elle déploie et toutes les autres informations de déploiement nécessaires lors de l'exécution de l'exercice.
Accéder au cluster Kubernetes
-
Ouvrez un terminal et connectez-vous via SSH à l'instance ocne.
ssh oracle@<ip_address_of_instance>
-
Attendez que le cluster se stabilise et que tous les pods signalent leur exécution.
watch kubectl get pods -A
Une fois que tous les pods affichent le STATUS de Running, saisissez
Ctrl-C
pour quitter la commandewatch
. -
Vérifiez le nombre de noeuds présents.
kubectl get nodes
Confirmer le fonctionnement de Podman
-
Vérification de la version de Podman.
podman -v
-
Vérifiez que l'interface de ligne de commande Podman fonctionne.
podman run quay.io/podman/hello
Exemple de résultat :
[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
Créer les fichiers YAML Kubernetes
La fonctionnalité Podman Kube peut fonctionner avec des fichiers YAML Kubernetes générés par Podman ou avec des fichiers YAML Kubernetes natifs. Regardons les deux à leur tour.
Création d'un pod Podman avec un conteneur et génération de Kubernetes YAML
Tout d'abord, déployez un conteneur dans un pod Podman localement. Utilisez ensuite le déploiement pour générer un fichier YAML Kubernetes qui peut être déployé sur un cluster Kubernetes.
-
Créez un pod avec un serveur Nginx qui mappe le port 8081 avec l'hôte.
podman run -dt --pod new:my-nginx --name nginx-container -p 8081:80 ghcr.io/oracle/oraclelinux9-nginx:1.20
Cela crée un pod nommé 'my-nginx', déploie un conteneur Nginx à l'intérieur du pod et met en correspondance le conteneur avec le port 8081 sur l'hôte.
-
Vérifiez que le pod a été créé.
podman pod ps
Exemple de résultat :
[oracle@ocne ~]$ podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS e5248f6968b3 my-nginx Running 48 seconds ago 5e41ad85e232 2
-
Vérifiez que vous pouvez accéder au nouveau pod et à son conteneur à partir de l'hôte.
curl http://localhost:8081
-
Générez un fichier Kubernetes YAML à partir du pod en cours d'exécution.
podman kube generate my-nginx --type pod > nginx-pod.yaml
La commande Podman generate crée un fichier compatible Kubernetes à partir d'un pod Podman en cours d'exécution avec des conteneurs. Le rendant très utile pour le prototypage local, puis la création d'un fichier manifeste compatible Kubernetes, vous pouvez le déployer vers un cluster Kubernetes.
-
Vérifiez le fichier généré.
cat nginx-pod.yaml
Exemple de résultat :
[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
Suppression du pod et des conteneurs déployés à l'aide de Podman Kube
Les pods et leurs conteneurs associés peuvent être enlevés facilement une fois que vous avez fini de travailler avec eux.
-
Supprimez le pod my-nginx.
podman kube down nginx-pod.yaml
-
Vérifiez que les deux pods ont été supprimés.
podman pod ps
Exemple de résultat :
[oracle@ocne ~]$ podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS
Cela confirme que le fichier YAML Kubernetes généré par Podman que vous avez créé précédemment est valide.
Utilisation de Podman Kube pour déployer Kubernetes YAML sur un cluster Kubernetes
Podman ne peut être déployé vers un cluster Kubernetes que si votre hôte dispose d'un fichier kubeconfig
valide situé dans le répertoire $HOME/.kube
.
Confirmer la validité de votre environnement
-
Vérifiez que la variable d'environnement
KUBECONFIG
est définie.env | grep KUBE
Exemple de résultat :
[oracle@ocne ~]$ env | grep KUBE KUBECONFIG=/home/oracle/.kube/kubeconfig.ocne.local
Informations : si
kubectl
est installé et que le répertoire${HOME}/.kube
contient plusieurs fichiers de configuration, exécutez cette commande pour confirmer quel fichier de configuration est actuellement utilisé parkubectl
:kubectl get pod -v6 2>&1 | awk '/Config loaded from file:/{print $NF}'
Exemple de résultat :
[oracle@ocne ~]$ kubectl get pod -v6 2>&1 | awk '/Config loaded from file:/{print $NF}' /home/oracle/.kube/kubeconfig.ocne.local
Remarque : exécutez n'importe quelle commande
kubectl
avecverbosity
défini sur le niveau 6 ou supérieur, et le fichierkubeconfig
en cours d'utilisation est inclus dans la sortie.
Déployer un fichier YAML Kubernetes valide
-
Créez un fichier 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
-
Utilisez Podman pour déployer le fichier
testpod.yaml
vers votre cluster Kubernetes.podman kube apply -f testpod.yaml
Exemple de résultat :
[oracle@ocne ~]$ podman kube apply -f testpod.yaml Deploying to cluster... Successfully deployed workloads to cluster!
Remarque : cette option est déployée vers l'espace de noms default par défaut.
-
Vérifiez que le pod est déployé sur votre cluster.
kubectl get pods
Exemple de résultat :
[oracle@ocne ~]$ kubectl get pods NAME READY STATUS RESTARTS AGE my-pod 1/1 Running 0 23s
Cela confirme que podman a déployé un pod appelé 'my-pod' sur le cluster.
-
Vérifiez que Nginx est déployé comme prévu.
kubectl describe pods/my-pod
Exemple de résultat :
[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
Cela confirme que la commande
podman kube play
a utilisé le fichier YAML Kubernetes pour déployer un pod directement vers un cluster Kubernetes.
Déployer le YAML Kubernetes généré par Podman sur un cluster Kubernetes
Déployez le fichier YAML Kubernetes généré par Podman que vous avez créé au début du tutoriel sur un cluster Kubernetes.
-
Déployez le fichier
nginx-pod.yaml
sur le cluster Kubernetes.podman kube apply -f nginx-pod.yaml
Exemple de résultat :
[oracle@ocne ~]$ podman kube apply -f nginx-pod.yaml Deploying to cluster... Successfully deployed workloads to cluster!
-
Vérifiez que le pod est déployé sur votre cluster.
kubectl get pods
Exemple de résultat :
[oracle@ocne ~]$ kubectl get pods NAME READY STATUS RESTARTS AGE my-nginx 1/1 Running 0 1m59s my-pod 1/1 Running 0 5m12s
-
Vérifiez que Nginx est déployé comme prévu.
kubectl describe pods/my-nginx
Cela confirme que Podman a déployé un YAML Kubernetes généré par podman appelé 'my-nginx' vers le cluster Kubernetes.
Etapes suivantes
Ce tutoriel a démontré comment utiliser Podman pour déployer des charges de travail Kubernetes vers un cluster Kubernetes avec Oracle Cloud Native Environment. Consultez le module de formation Oracle Linux pour obtenir des tutoriels et du contenu supplémentaires.
Liens connexes
- Documentation Oracle Cloud Native Environment
- Parcours Oracle Cloud Native Environment
- Centre de formation Oracle Linux
Ressources de formation supplémentaires
Explorez d'autres ateliers sur le site docs.oracle.com/learn ou accédez à d'autres contenus d'apprentissage gratuits sur le canal Oracle Learning YouTube. En outre, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, consultez Oracle Help Center.
Deploy Kubernetes Workloads using Podman with Oracle Cloud Native Environment.
G42330-01