機械翻訳について

6 Kubernetesファイル

podman kubeコマンドを使用して、PodmanとKubernetesの両方で使用できるYAMLファイルを生成して使用し、ポッド、コンテナ、ボリュームおよびその他のオブジェクトを2つのコンテナ・プラットフォーム間で移動します。

Kubernetes YAMLファイルを使用すると、次のようないくつかの利点があります:

  • 移植性: PodmanとKubernetesの間でポッドを移動したり、両方のコンテナ・プラットフォームで同じコンテナとポッドを実行できます。

  • 可読性: YAMLファイルをプログラミング言語で使用できます。

  • 利便性: YAMLファイルには、ポッドまたはコンテナに必要なすべての構成情報を含めることができます。 したがって、Podmanコマンドを発行するときに異なるパラメータを指定する必要はありません。

Kubernetes YAMLファイルを操作するには、次のPodmanコマンドを使用できます:

podman kube generate

既存のポッドのKubernetes YAMLファイルを生成します。 YAMLファイルには、多数のコンテナ、ボリュームまたはその他のオブジェクトを含むことができるPodmanポッドの説明が含まれています。 このYAMLファイルを使用して、PodmanまたはKubernetesにポッドを作成できます。

podman kube play

Kubernetes YAMLファイルに基づいて、Podmanにポッドをデプロイします。

podman kube apply

Kubernetes YAMLファイルに基づいて、ポッドをKubernetesクラスタにデプロイします。

podman kube down

ポッド内のコンテナを停止し、Kubernetes YAMLファイルを使用してPodmanのポッドを削除します。

これらのコマンドの詳細は、コマンドの発行時に--helpフラグを使用してください。 podman-kube(1)マニュアル・ページを参照することもできます。

この項の例では、PodmanでKubernetes YAMLファイルを生成し、PodmanとKubernetesの両方でYAMLファイルを使用する方法を示します。

ヒント:

Oracle Linux 8およびOracle Linux 9システムの場合、Oracle Cloud Native Environment libvirtプロバイダは、Kubernetes YAMLファイルのテストに役立ちます。 詳細は、リリース2のOracle Cloud Native Environmentクイック・スタートを参照してください。

この項の例では、Kubernetes CLI (kubectl)を使用してKubernetesクラスタと対話します。 kubectlソフトウェア・パッケージをローカル・システムにインストールし、Kubernetes構成ファイル(kubeconfigファイル)を使用してクラスタに接続できます。 kubectlのインストールに関する情報は、Oracle Cloud Native EnvironmentのドキュメントまたはアップストリームKubernetesのドキュメントで入手できます。

Podmanには、Kubernetes YAMLファイルを生成してKubernetesクラスタにデプロイするコマンドがありますが、Kubernetesオブジェクト(ポッドやボリュームなど)をさらに管理するには、kubectlコマンドを使用して行う必要があります。 kubectlコマンドとその使用方法の詳細は、Kubernetesアップストリーム・ドキュメントを参照してください。

例6-1 Kubernetes YAMLファイルの作成と使用

この例では、Podmanポッドを作成し、ポッドからKubernetes YAMLファイルを作成し、YAMLファイルを使用してポッドをPodmanとKubernetesの両方にデプロイします。

  1. ポッドを作成し、ポッドにNGINXコンテナを追加します。

    podman run --pod new:mypod -dt --name nginxcontainer quay.io/libpod/alpine_nginx:latest
  2. ポッドとコンテナの作成を確認します。

    すべてのポッドをリストします:

    podman pod list

    出力は次のようになります:

    POD ID        NAME        STATUS      CREATED        INFRA ID      # OF CONTAINERS
    8f7088f859da  mypod       Running     2 minutes ago  d2bb22029ec9  2

    ポッドにコンテナを表示します。

    podman pod ps --ctr-names --filter name=mypod

    出力には、ポッド内のコンテナ名がリストされ、次のように表示されます。

    POD ID        NAME        STATUS      CREATED         INFRA ID      NAMES
    8f7088f859da  mypod       Running     13 minutes ago  d2bb22029ec9  8f7088f859da-infra,nginxcontainer

    infraおよびnginxcontainerがポッドにリストされます。

  3. ポッドからKubernetes YAMLファイルを作成します。

    podman generate kube mypod --filename mypod.yaml
  4. YAMLファイルの内容を確認します。 mypod.yamlファイルは次のようになります。

    # Save the output of this file and use kubectl create -f to import
    # it into Kubernetes.
    #
    # Created with podman-5.4.0
    apiVersion: v1
    kind: Pod
    metadata:
      annotations:
        io.kubernetes.cri-o.SandboxID/nginxcontainer: d2bb22029ec98f7...
      creationTimestamp: "2025-07-15T02:18:18Z"
      labels:
        app: mypod
      name: mypod
    spec:
      containers:
      - env:
        - name: TERM
          value: xterm
        image: quay.io/libpod/alpine_nginx:latest
        name: nginxcontainer
        tty: true
  5. PodmanでこのYAMLファイルを実行する前に、コンテナおよびポッドを削除します:

    podman stop nginxcontainer
    podman rm nginxcontainer
    podman pod rm mypod
  6. PodmanでYAMLを実行して、ポッドとそのコンテナをデプロイします:

    podman kube play mypod.yaml

    ポッドが表示され、前述のステップを使用してコンテナが実行されていることを確認できます。 たとえば:

    podman pod list
    podman pod ps --ctr-names --filter name=mypod
  7. YAMLファイルを使用してPodmanポッドを停止します。

    podman kube down mypod.yaml
  8. KubernetesでYAMLファイルを実行して、ポッドをデプロイします。

    Kubernetesクラスタのkubeconfigファイルがある場合は、podman kube applyコマンドを使用できます。 たとえば:

    podman kube apply --kubeconfig mykubeconfig --file mypod.yaml 

    Kubernetesクラスタへのアクセス権がある場合は、YAMLファイルをKubernetes CLIにアクセスできるシステムにコピーし、kubectl createコマンドを使用してポッドをデプロイできます。 たとえば:

    kubectl create -f mypod.yaml
  9. ポッドがKubernetesで実行されていることを確認するには、次のコマンドを実行します:

    kubectl get pods
  10. Kubernetesポッドを削除するには、次のコマンドを実行します:

    kubectl delete pod mypod

Kubernetes YAMLファイルの作成

podman kube generateコマンドを使用して、Podmanコンテナ、ポッドまたはボリュームのKubernetes YAMLファイルを生成します。

YAMLファイルは、Kubernetes環境で使用して、ポッド、サービスまたはPersistentVolumeClaimを起動できます。 また、Podmanで使用して、Kubernetesオブジェクトが正しく作成されたことをテストすることもできます。

Kubernetesで開始するボリューム・マウントを含むポッドの場合、PersistentVolumeClaimの適切な構成でKubernetesにStorageClassを設定する必要があります。 StorageClassが設定されている場合、ポッドの実行時にボリュームが自動的に作成されます。

podman kube generateコマンドの詳細は、podman-kube-generate(1)マニュアル・ページを参照してください。

例6-2コンテナからのYAMLファイルの作成

  1. Podmanコンテナを作成します。

    podman create --name myoracle oraclelinux:9-slim
  2. コンテナのKubernetes YAMLファイルを生成します:

    podman generate kube myoracle --filename myoracle.yaml
  3. 結果のmyoracle.yamlファイルが次のようになっていることを確認します。

    # Save the output of this file and use kubectl create -f to import
    # it into Kubernetes.
    #
    # Created with podman-5.4.0
    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: "2025-07-14T07:09:20Z"
      labels:
        app: myoracle-pod
      name: myoracle-pod
    spec:
      containers:
      - image: container-registry.oracle.com/os/oraclelinux:9-slim
        name: myoracle

例6-3ボリューム・マウントを使用したコンテナからのYAMLファイルの作成

  1. ボリューム・マウントを含むPodmanコンテナを作成します。

    podman run --name myvolumepod --volume mydata:/data oraclelinux:9-slim
  2. コンテナのKubernetes YAMLファイルを生成します:

    podman generate kube myvolumepod --filename myvolumepod.yaml
  3. 結果のmyvolumepod.yamlファイルが次のようになっていることを確認します。

    # Save the output of this file and use kubectl create -f to import
    # it into Kubernetes.
    #
    # Created with podman-5.4.0
    
    # NOTE: If you generated this yaml from an unprivileged and rootless podman container on an SELinux
    # enabled system, check the podman generate kube manual page for steps to follow to ensure that your pod/container
    # has the right permissions to access the volumes added.
    ---
    apiVersion: v1
    kind: Pod
    metadata:
      creationTimestamp: "2025-07-14T07:12:40Z"
      labels:
        app: myvolumepod-pod
      name: myvolumepod-pod
    spec:
      containers:
      - image: container-registry.oracle.com/os/oraclelinux:9-slim
        name: myvolumepod
        volumeMounts:
        - mountPath: /data
          name: mydata-pvc
      volumes:
      - name: mydata-pvc
        persistentVolumeClaim:
          claimName: mydata

例6-4ポッドからのYAMLファイルの作成

  1. ポッドを作成し、ポッドにNGINXコンテナを追加します。

    podman run --pod new:mypod -dt --name nginxcontainer quay.io/libpod/alpine_nginx:latest
  2. ポッドからKubernetes YAMLファイルを作成します。

    podman generate kube mypod --filename mypod.yaml
  3. 結果のmypod.yamlファイルが次のようになっていることを確認します。

    # Save the output of this file and use kubectl create -f to import
    # it into Kubernetes.
    #
    # Created with podman-5.4.0
    apiVersion: v1
    kind: Pod
    metadata:
      annotations:
        io.kubernetes.cri-o.SandboxID/nginxcontainer: d2bb22029ec98f7...
      creationTimestamp: "2025-07-15T02:18:18Z"
      labels:
        app: mypod
      name: mypod
    spec:
      containers:
      - env:
        - name: TERM
          value: xterm
        image: quay.io/libpod/alpine_nginx:latest
        name: nginxcontainer
        tty: true

Kubernetes YAMLファイルの実行

podman kube playコマンドを使用して、PodmanでKubernetes YAMLファイルを実行します。 これは、ファイルが正しく生成されたことを確認するのに役立ちます。

podman kube playコマンドを使用して、PodmanでKubernetes YAMLファイルを実行します。

podman kube playコマンドの詳細は、podman-kube-play(1)マニュアル・ページを参照してください。

例6-5 PodmanでのKubernetes YAMLファイルの実行

podman kube play mypod.yaml

次のようなpodman podコマンドを使用して、ポッドおよびコンテナが実行されていることを確認できます:

podman pod list
podman pod ps --ctr-names --filter name=mypod

Kubernetes YAMLファイルを使用したポッドの削除

podman kube downコマンドを使用して、Kubernetes YAMLファイルを使用してPodmanポッドを停止および削除します。

この例では、podman kube generateコマンドを使用して生成されたYAMLファイルを使用して作成されたPodmanポッドを停止および削除する方法を示します。 podman kube downコマンドは、Kubernetes YAMLファイルのテスト時にpodman kube playコマンドとともに使用される可能性が高くなります。 podman kube downコマンドは、シークレットやボリュームなど、YAMLファイルにリストされているポッドおよび関連オブジェクトを停止および削除します。

podman kube downコマンドの詳細は、podman-kube-down(1)マニュアル・ページを参照してください。

例6-6 YAMLファイルを使用したポッドの停止および削除

podman kube down mypod.yaml

Kubernetesクラスタへのデプロイ

podman kube applyコマンドを使用して、Kubernetes YAMLファイルを実行し、Kubernetesクラスタにポッドおよび関連オブジェクトを作成します。

podman kube applyコマンドを使用して、Podmanで生成されたYAMLファイルを実行します。

この例では、Podmanで生成されたYAMLファイルを実行して、Kubernetesクラスタにポッドおよびコンテナを作成する方法を示します。 これは、Kubernetesクラスタを設定していることを前提としています。 宛先クラスタのKubernetes構成ファイル(kubeconfigファイル)を指定する必要があります。これは、Kubernetesクラスタからローカル・システムにコピーできます。 また、Kubernetesを実行しているサーバーでKubernetes Server APIポートが開いていることも確認する必要があります。

YAMLファイルをKubernetesクラスタにデプロイすると、ポッドはPodmanではなくそのクラスタで実行されるため、Kubernetesオブジェクトの管理はkubectlを使用して行う必要があります。 YAMLファイルをデプロイするために、Kubernetesクラスタ内のオブジェクトを管理するために使用できるPodmanコマンド(ここに示す以外)はありません。

podman kube applyコマンドの詳細は、podman-kube-apply(1)マニュアル・ページを参照してください。

例6-7 KubernetesクラスタへのYAMLファイルのデプロイ

podman kube apply --kubeconfig mykubeconfig --file mypod.yaml

Kubernetesクラスタにアクセスできる場合は、Kubernetes CLI (kubectl)を使用して、次を使用してポッドが作成されていることを確認します:

kubectl get pods 

kubectlを使用したKubernetesクラスタへのデプロイ

Kubernetes CLI (kubectl)を使用して、Kubernetes YAMLファイルをKubernetesクラスタにデプロイします。

この例では、Podmanで生成されたYAMLファイルを実行して、Kubernetesクラスタにポッドおよび関連オブジェクトを作成する方法を示します。 これは、Kubernetesクラスタが設定されており、クラスタにアクセスするようにKubernetes CLI (kubectl)が構成されていることを前提としています。

  1. YAMLファイルを、クラスタにアクセスするためにkubectlが設定されているシステムにコピーします。
  2. kubectl createコマンドを使用して、Podmanで生成されたYAMLファイルを実行します。

    たとえば:

    kubectl create -f mypod.yaml
  3. ポッドが作成されたことを確認します。
    kubectl get pods