0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Podman から Kubernetes への移行

0
Last updated at Posted at 2025-11-02

Podman から Kubernetes への移行では、Podman のコマンドや構成ファイルを Kubernetes のマニフェスト(YAML形式)に変換する必要があります。
特に podman generate kube を活用することで、移行がスムーズになります。基本的な移行ステップ

1. Podman で動作していた Pod を確認

Podman で作成した Pod やコンテナを確認します。]

podman pod ps
podman ps --pod

2. Kubernetes 用 YAML を生成

Podman には Kubernetes マニフェストを生成する機能があります。

podman generate kube <pod名> > pod.yaml

3. Kubernetes に適用

生成した YAML を Kubernetes クラスタに適用します。

kubectl apply -f pod.yaml

コマンド対応表(Podman → Kubernetes)

Podman コマンド例 Kubernetes での対応 備考
podman run -d --name myapp myimage kubectl apply -f deployment.yaml Deployment を使ってコンテナを起動・管理
podman pod create --name mypod kubectl apply -f pod.yaml Pod リソースとして YAML で管理
podman generate kube mypod > pod.yaml kubectl apply -f pod.yaml Podman の構成を YAML に変換
podman ps kubectl get pods 実行中の Pod 一覧を表示
podman ps -a kubectl get pods --all-namespaces 全 Pod(終了済み含む)を表示
podman images kubectl get pods -o jsonpath='{.items[*].spec.containers[*].image}' 使用中のイメージ一覧を取得
podman logs mycontainer kubectl logs mypod Pod のログを表示
podman exec -it mycontainer bash kubectl exec -it mypod -- bash Pod 内でコマンドを実行
podman stop mycontainer kubectl delete pod mypod Pod を停止(削除)
podman rm mycontainer kubectl delete pod mypod Pod を削除
podman rmi myimage Kubernetes では不要 イメージ管理はレジストリ側で行う
podman inspect mycontainer kubectl describe pod mypod Pod の詳細情報を表示
podman stats kubectl top pod Pod のリソース使用状況を表示(metrics-server 必須)
podman build -t myimage . docker build → レジストリへ push Kubernetes 自体はビルド機能を持たない
podman login kubectl create secret docker-registry プライベートレジストリ用の認証情報を作成
podman-compose up kubectl apply -f + kustomize など Compose は手動で YAML に変換が必要

注意点と補足

  • Podman の Pod 概念は Kubernetes の Pod と似ていますが、Kubernetes では Pod は基本的に Deployment や StatefulSet などのリソースで管理されます。

  • podman generate kube で生成される YAML は Pod リソースのみなので、本番運用では Deployment に変換することが推奨されます。

  • コンテナイメージの指定は image: フィールドで行います。Podman で使っていたイメージ名をそのまま使えます。

  • 環境変数やボリュームマウントなども YAML に記述可能です。

Python スクリプトでの Podman → Kubernetes 移行ガイド

1. Podman を subprocess で呼び出していた場合

import subprocess
# Podman でコンテナ起動
subprocess.run(["podman", "run", "--name", "myapp", "-d", "myimage"])

Kubernetes での置き換え(kubectl 経由):

import subprocess
# 事前に作成した deployment.yaml を適用
subprocess.run(["kubectl", "apply", "-f", "deployment.yaml"])

表はこのような置き換えの参考になるが、Kubernetes では「コンテナを起動する」というより「マニフェストを適用して管理する」スタイルです。

2. Podman の状態確認やログ取得をしていた場合

Podman コマンド Kubernetes での対応 Python での例
podman ps kubectl get pods subprocess.run(["kubectl", "get", "pods"])
podman logs myapp kubectl logs myapp-pod subprocess.run(["kubectl", "logs", "myapp-pod"])

✅ まとめ:表が参考になる場面・ならない場面

項目 表が参考になるか 補足
Podman コマンドを subprocess で呼び出していた ✅ はい kubectl コマンドに置き換えることで対応可能
Podman API を使っていた ❌ 要調整 Kubernetes API に書き換える必要がある
コンテナの起動・停止・ログ取得など ✅ はい 対応する kubectl コマンドに変換可能
Podman Compose を使っていた ⚠️ 一部参考 YAML を手動で Deployment や Service に分割・変換する必要がある
動的に Pod を作成・削除していた ❌ 要再設計 Kubernetes は宣言的管理が基本。動的操作は API または Job で対応可能

参考リンク

Podman で Kubernetes native なアプリ開発の Innter loop から Outer loop への移行をスムーズに

Podmanで推す OpenShift Kubernetes入門

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?