4.2. コマンドラインを使用したワークロードの展開


コマンドラインを使用して、OpenShift Sandboxed Containers のワークロードをデプロイできます。

4.2.1. libvirt ボリュームの設定

KVM ホストに libvirt ボリュームを設定する必要があります。ピア Pod は、Cloud API アダプターの libvirt プロバイダーを使用して仮想マシンを作成および管理します。

前提条件

  • OpenShift Container Platform Web コンソールまたはコマンドラインを使用して、OpenShift Container Platform クラスターに OpenShift sandboxed containers Operator をインストールしている。
  • KVM ホストの管理者権限がある。
  • KVM ホストに podman がインストールされている。
  • KVM ホストに virt-customize がインストールされている。

手順

  1. KVM ホストにログインします。
  2. 次のコマンドを実行して、libvirt プールの名前を設定します。

    $ export LIBVIRT_POOL=<libvirt_pool>
    Copy to Clipboard Toggle word wrap

    libvirt プロバイダーのシークレットを作成するには、LIBVIRT_POOL 値が必要です。

  3. 次のコマンドを実行して、libvirt プールの名前を設定します。

    $ export LIBVIRT_VOL_NAME=<libvirt_volume>
    Copy to Clipboard Toggle word wrap

    libvirt プロバイダーのシークレットを作成するには、LIBVIRT_VOL_NAME 値が必要です。

  4. 次のコマンドを実行して、デフォルトのストレージプールの場所のパスを設定します。

    $ export LIBVIRT_POOL_DIRECTORY=<target_directory> 
    1
    Copy to Clipboard Toggle word wrap
    1
    libvirt に読み取りおよび書き込みアクセス権限があることを確認するには、libvirt ストレージディレクトリーのサブディレクトリーを使用します。デフォルトは /var/lib/libvirt/images/ です。
  5. 次のコマンドを実行して、libvirt プールを作成します。

    $ virsh pool-define-as $LIBVIRT_POOL --type dir --target "$LIBVIRT_POOL_DIRECTORY"
    Copy to Clipboard Toggle word wrap
  6. 次のコマンドを実行して、libvirt プールを開始します。

    $ virsh pool-start $LIBVIRT_POOL
    Copy to Clipboard Toggle word wrap
  7. 次のコマンドを実行して、プールの libvirt ボリュームを作成します。

    $ virsh -c qemu:///system \
      vol-create-as --pool $LIBVIRT_POOL \
      --name $LIBVIRT_VOL_NAME \
      --capacity 20G \
      --allocation 2G \
      --prealloc-metadata \
      --format qcow2
    Copy to Clipboard Toggle word wrap

4.2.2. KVM ゲストイメージの作成

KVM ゲストイメージを作成し、libvirt ボリュームにアップロードする必要があります。

前提条件

  • IBM z15 以降、または IBM® LinuxONE III 以降。
  • KVM を備えた RHEL 9 以降で実行している少なくとも 1 つの LPAR。

手順

  1. OpenShift Container Platform クラスターにログインします。
  2. RHEL サブスクリプションをお持ちの場合は、Red Hat Subscription Management のサブスクリプション環境変数を設定します。

    • 次のコマンドを実行して組織 ID を設定します。

      $ export ORG_ID=$(cat ~/.rh_subscription/orgid)
      Copy to Clipboard Toggle word wrap
    • 次のコマンドを実行してアクティベーションキーを設定します。

      $ export ACTIVATION_KEY=$(cat ~/.rh_subscription/activation_key)
      Copy to Clipboard Toggle word wrap
  3. RHEL サブスクリプションがない場合は、RHEL のサブスクリプション値を設定します。

    • 次のコマンドを実行して組織 ID を設定します。

      $ export ORG_ID=<RHEL_ORGID_VALUE> 
      1
      Copy to Clipboard Toggle word wrap
      1
      RHEL 組織 ID を指定します。
    • 次のコマンドを実行してアクティベーションキーを設定します。

      $ export ACTIVATION_KEY=<RHEL_ACTIVATION_KEY> 
      1
      Copy to Clipboard Toggle word wrap
      1
      RHEL アクティベーションキーを指定します。
  4. IBM Z® システムにログインします。
  5. libvirt に正しいアクセス権を付与するには、Red Hat カスタマーポータル から s390x RHEL KVM ゲストイメージを libvirt ストレージディレクトリーにダウンロードします。

    デフォルトのディレクトリーは /var/lib/libvirt/images です。このイメージは、関連するバイナリーを含むピア Pod 仮想マシンイメージを生成するために使用されます。

  6. 次のコマンドを実行して、ダウンロードしたイメージの IMAGE_URL を設定します。

    $ export IMAGE_URL=<path/to/image> 
    1
    Copy to Clipboard Toggle word wrap
    1
    KVM ゲストイメージのパスを指定します。
  7. 次のコマンドを実行して、ゲスト KVM イメージを登録します。

    $ export REGISTER_CMD="subscription-manager register --org=${ORG_ID} \
      --activationkey=${ACTIVATION_KEY}"
    Copy to Clipboard Toggle word wrap
  8. 次のコマンドを実行して、ゲスト KVM イメージをカスタマイズします。

    $ virt-customize -v -x -a ${IMAGE_URL} --run-command "${REGISTER_CMD}"
    Copy to Clipboard Toggle word wrap
  9. 次のコマンドを実行して、イメージのチェックサムを設定します。

    $ export IMAGE_CHECKSUM=$(sha256sum ${IMAGE_URL} | awk '{ print $1 }')
    Copy to Clipboard Toggle word wrap

4.2.3. ピア Pod 仮想マシンイメージのビルド

ピア Pod 仮想マシン (VM) イメージをビルドし、libvirt ボリュームにアップロードする必要があります。

手順

  1. OpenShift Container Platform クラスターにログインします。
  2. 以下のコマンドを実行して cloud-api-adaptor リポジトリーのクローンを作成します。

    $ git clone --single-branch https://github.com/confidential-containers/cloud-api-adaptor.git
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを実行して、podvm ディレクトリーに移動します。

    $ cd cloud-api-adaptor && git checkout 8577093
    Copy to Clipboard Toggle word wrap
  4. 最終的な QCOW2 イメージの生成元となるビルダーイメージを作成します。

    • サブスクライブしている RHEL システムがある場合は、次のコマンドを実行します。

      $ podman build -t podvm_builder_rhel_s390x \
        --build-arg ARCH="s390x" \
        --build-arg GO_VERSION="1.21.3" \
        --build-arg PROTOC_VERSION="25.1" \
        --build-arg PACKER_VERSION="v1.9.4" \
        --build-arg RUST_VERSION="1.72.0" \
        --build-arg YQ_VERSION="v4.35.1" \
        --build-arg YQ_CHECKSUM="sha256:4e6324d08630e7df733894a11830412a43703682d65a76f1fc925aac08268a45" \
        -f podvm/Dockerfile.podvm_builder.rhel .
      Copy to Clipboard Toggle word wrap
    • サブスクライブされていない RHEL システムがある場合は、以下のコマンドを実行します。

      $ podman build -t podvm_builder_rhel_s390x \
        --build-arg ORG_ID=$ORG_ID \
        --build-arg ACTIVATION_KEY=$ACTIVATION_KEY \
        --build-arg ARCH="s390x" \
        --build-arg GO_VERSION="1.21.3" \
        --build-arg PROTOC_VERSION="25.1" \
        --build-arg PACKER_VERSION="v1.9.4" \
        --build-arg RUST_VERSION="1.72.0" \
        --build-arg YQ_VERSION="v4.35.1" \
        --build-arg YQ_CHECKSUM="sha256:4e6324d08630e7df733894a11830412a43703682d65a76f1fc925aac08268a45" \
        -f podvm/Dockerfile.podvm_builder.rhel .
      Copy to Clipboard Toggle word wrap
  5. 次のコマンドを実行して、ピア Pod を実行するために必要なバイナリーを含む中間イメージパッケージを生成します。

    $ podman build -t podvm_binaries_rhel_s390x \
      --build-arg BUILDER_IMG="podvm_builder_rhel_s390x:latest" \
      --build-arg ARCH=s390x \
      -f podvm/Dockerfile.podvm_binaries.rhel .
    Copy to Clipboard Toggle word wrap

    このプロセスにはかなりの時間がかかります。

  6. 次のコマンドを実行して、バイナリーを抽出し、ピア Pod QCOW2 イメージを構築します。

    $ podman build -t podvm_rhel_s390x \
      --build-arg ARCH=s390x \
      --build-arg CLOUD_PROVIDER=libvirt \
      --build-arg BUILDER_IMG="localhost/podvm_builder_rhel_s390x:latest" \
      --build-arg BINARIES_IMG="localhost/podvm_binaries_rhel_s390x:latest" \
      -v ${IMAGE_URL}:/tmp/rhel.qcow2:Z \
      --build-arg IMAGE_URL="/tmp/rhel.qcow2" \
      --build-arg IMAGE_CHECKSUM=${IMAGE_CHECKSUM} \
      -f podvm/Dockerfile.podvm.rhel .
    Copy to Clipboard Toggle word wrap
  7. 次のコマンドを実行して、イメージディレクトリー環境変数を作成します。

    $ export IMAGE_OUTPUT_DIR=<image_output_directory> 
    1
    Copy to Clipboard Toggle word wrap
    1
    イメージのディレクトリーを指定します。
  8. 次のコマンドを実行してイメージディレクトリーを作成します。

    $ mkdir -p $IMAGE_OUTPUT_DIR
    Copy to Clipboard Toggle word wrap
  9. 次のコマンドを実行して、展開したピア Pod QCOW2 イメージを保存します。

    $ podman save podvm_rhel_s390x | tar -xO --no-wildcards-match-slash '*.tar' | tar -x -C ${IMAGE_OUTPUT_DIR}
    Copy to Clipboard Toggle word wrap
  10. ピア Pod QCOW2 イメージを libvirt ボリュームにアップロードします。

    $ virsh -c qemu:///system vol-upload \
      --vol $LIBVIRT_VOL_NAME \
      $IMAGE_OUTPUT_DIR/podvm-*.qcow2 \
      --pool $LIBVIRT_POOL --sparse
    Copy to Clipboard Toggle word wrap

4.2.4. シークレットの作成

OpenShift Container Platform クラスターに Secret オブジェクトを作成する必要があります。

前提条件

  • LIBVIRT_POOL。KVM ホストで libvirt を設定したときに設定した値を使用します。
  • LIBVIRT_VOL_NAME。KVM ホストで libvirt を設定したときに設定した値を使用します。
  • LIBVIRT_URI。この値は、libvirt ネットワークのデフォルトのゲートウェイ IP アドレスです。この値を取得するには、libvirt ネットワーク設定を確認してください。

    注記

    libvirt がデフォルトのブリッジ仮想ネットワークを使用する場合は、以下のコマンドを実行して LIBVIRT_URI を取得できます。

    $ virtint=$(bridge_line=$(virsh net-info default | grep Bridge);  echo "${bridge_line//Bridge:/}" | tr -d [:blank:])
    
    $ LIBVIRT_URI=$( ip -4 addr show $virtint | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
    Copy to Clipboard Toggle word wrap

手順

  1. 次の例に従って peer-pods-secret.yaml マニフェストファイルを作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: peer-pods-secret
      namespace: openshift-sandboxed-containers-operator
    type: Opaque
    stringData:
      CLOUD_PROVIDER: "libvirt"
      LIBVIRT_URI: "<libvirt_gateway_uri>" 
    1
    
      LIBVIRT_POOL: "<libvirt_pool>" 
    2
    
      LIBVIRT_VOL_NAME: "<libvirt_volume>" 
    3
    Copy to Clipboard Toggle word wrap
    1
    libvirt URI を指定します。
    2
    libvirt プールを指定します。
    3
    libvirt ボリューム名を指定します。
  2. マニフェストを適用して secret オブジェクトを作成します。

    $ oc apply -f peer-pods-secret.yaml
    Copy to Clipboard Toggle word wrap
注記

ピア Pod シークレットを更新する場合は、peerpodconfig-ctrl-caa-daemon DaemonSet を再起動して変更を適用する必要があります。

シークレットを更新したら、マニフェストを適用します。次に、以下のコマンドを実行して cloud-api-adaptor Pod を再起動します。

$ oc set env ds/peerpodconfig-ctrl-caa-daemon -n openshift-sandboxed-containers-operator REBOOT="$(date)"
Copy to Clipboard Toggle word wrap

デーモンセットを再起動すると、ピア Pod が再作成されます。既存の Pod は更新されません。

4.2.5. config map の作成

libvirt プロバイダー用に OpenShift Container Platform クラスター上に config map を作成する必要があります。

手順

  1. 以下の例に従って peer-pods-cm.yaml マニフェストを作成します。

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: peer-pods-cm
      namespace: openshift-sandboxed-containers-operator
    data:
      CLOUD_PROVIDER: "libvirt"
      PROXY_TIMEOUT: "15m"
    Copy to Clipboard Toggle word wrap
  2. マニフェストを適用して config map を作成します。

    $ oc apply -f peer-pods-cm.yaml
    Copy to Clipboard Toggle word wrap

    libvirt プロバイダー用の config map が作成されます。

注記

ピア Pod config map を更新する場合、変更を適用するために peerpodconfig-ctrl-caa-daemon デーモンセットを再起動する必要があります。

config map を更新した後、マニフェストを適用します。次に、以下のコマンドを実行して cloud-api-adaptor Pod を再起動します。

$ oc set env ds/peerpodconfig-ctrl-caa-daemon -n openshift-sandboxed-containers-operator REBOOT="$(date)"
Copy to Clipboard Toggle word wrap

daemonset を再起動すると、ピア Pod が再作成されます。既存の Pod は更新されません。

4.2.6. SSH キーシークレットの作成

KVM ホスト用に SSH 鍵の secret オブジェクトを作成する必要があります。

手順

  1. OpenShift Container Platform クラスターにログインします。
  2. 次のコマンドを実行して、SSH キーペアを生成します。

    $ ssh-keygen -f ./id_rsa -N ""
    Copy to Clipboard Toggle word wrap
  3. SSH 公開鍵を KVM ホストにコピーします。

    $ ssh-copy-id -i ./id_rsa.pub <KVM_HOST_IP>
    Copy to Clipboard Toggle word wrap
  4. 以下のコマンドを実行して Secret オブジェクトを作成します。

    $ oc create secret generic ssh-key-secret \
        -n openshift-sandboxed-containers-operator \
        --from-file=id_rsa.pub=./id_rsa.pub \
        --from-file=id_rsa=./id_rsa
    Copy to Clipboard Toggle word wrap

    SSH キーシークレットが作成されます。

  5. 作成した SSH 鍵を削除します。

    $ shred -remove id_rsa.pub id_rsa
    Copy to Clipboard Toggle word wrap

4.2.7. KataConfig カスタムリソースの作成

ワーカーノードに kata-remote をランタイムクラスとしてインストールするには、KataConfig カスタムリソース (CR) を作成する必要があります。

KataConfig CR を作成すると、OpenShift Sandboxed Containers Operator がトリガーされ、以下が実行されます。

  • デフォルト設定で kata-remote という名前の RuntimeClass CR を作成します。これにより、RuntimeClassName フィールドの CR を参照して、kata-remote をランタイムとして使用するようにワークロードを設定できるようになります。この CR は、ランタイムのリソースオーバーヘッドも指定します。

OpenShift Sandboxed Containers は、kata-remote をプライマリーランタイムとしてではなく、クラスター上の セカンダリーオプション のランタイムとしてインストールします。

重要

KataConfig CR を作成すると、ワーカーノードが自動的に再起動します。再起動には 10 分から 60 分以上かかる場合があります。再起動時間を妨げる要因は次のとおりです。

  • より多くのワーカーノードを持つ大規模な OpenShift Container Platform デプロイメント。
  • BIOS および診断ユーティリティーが有効である。
  • SSD ではなくハードディスクドライブにデプロイしている。
  • 仮想ノードではなく、ベアメタルなどの物理ノードにデプロイしている。
  • CPU とネットワークが遅い。

前提条件

  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。

手順

  1. 次の例に従って cluster-kataconfig.yaml マニフェストファイルを作成します。

    apiVersion: kataconfiguration.openshift.io/v1
    kind: KataConfig
    metadata:
      name: cluster-kataconfig
    spec:
      enablePeerPods: true
      logLevel: info
    Copy to Clipboard Toggle word wrap
  2. オプション: 選択したノードに kata-remote をインストールするには、次の例に従ってノードラベルを指定します。

    apiVersion: kataconfiguration.openshift.io/v1
    kind: KataConfig
    metadata:
      name: cluster-kataconfig
    spec:
      kataConfigPoolSelector:
        matchLabels:
          <label_key>: '<label_value>' 
    1
    
    # ...
    Copy to Clipboard Toggle word wrap
    1
    選択したノードのラベルを指定します。
  3. KataConfig CR を作成します。

    $ oc create -f cluster-kataconfig.yaml
    Copy to Clipboard Toggle word wrap

    新しい KataConfig CR が作成され、ワーカーノードに kata-remote がランタイムクラスとしてインストールされます。

    インストールを確認する前に、kata-remote のインストールが完了し、ワーカーノードが再起動するまで待ちます。

検証

  • 次のコマンドを実行して、インストールの進行状況を監視します。

    $ watch "oc describe kataconfig | sed -n /^Status:/,/^Events/p"
    Copy to Clipboard Toggle word wrap

    kataNodes の下にあるすべてのワーカーのステータスが installed で、理由を指定せずに InProgress の条件が False の場合、kata はクラスターにインストールされます。

詳細は、KataConfig ステータスメッセージ を参照してください。

4.2.8. オプション: ノードあたりのピア Pod 仮想マシン数の変更

peerpodConfig カスタムリソース (CR) を編集することで、ノードあたりのピア Pod 仮想マシン (VM) の制限を変更できます。

手順

  1. 次のコマンドを実行して、現在の制限を確認します。

    $ oc get peerpodconfig peerpodconfig-openshift -n openshift-sandboxed-containers-operator \
    -o jsonpath='{.spec.limit}{"\n"}'
    Copy to Clipboard Toggle word wrap
  2. 次のコマンドを実行して、peerpodConfig CR の limit 属性を変更します。

    $ oc patch peerpodconfig peerpodconfig-openshift -n openshift-sandboxed-containers-operator \
    --type merge --patch '{"spec":{"limit":"<value>"}}' 
    1
    Copy to Clipboard Toggle word wrap
    1
    <value> は、定義する制限に置き換えます。

4.2.9. ワークロードオブジェクトの設定

次の Pod テンプレートされたオブジェクトのランタイムクラスとして kata-remote を設定して、OpenShift Sandboxed Containers のワークロードをデプロイします。

  • Pod オブジェクト
  • ReplicaSet オブジェクト
  • ReplicationController オブジェクト
  • StatefulSet オブジェクト
  • Deployment オブジェクト
  • DeploymentConfig オブジェクト
重要

ワークロードを openshift-sandboxed-containers-operator namespace にデプロイしないでください。これらのリソース専用の namespace を作成します。

前提条件

  • プロバイダーのシークレットオブジェクトを作成している。
  • プロバイダーの config map を作成している。
  • KataConfig カスタムリソース (CR) を作成している。

手順

  1. 次の例のように、各 Pod テンプレート化されたワークロードオブジェクトのマニフェストに spec.runtimeClassName: kata-remote を追加します。

    apiVersion: v1
    kind: <object>
    # ...
    spec:
      runtimeClassName: kata-remote
    # ...
    Copy to Clipboard Toggle word wrap

    OpenShift Container Platform はワークロードオブジェクトを作成し、スケジュールを開始します。

検証

  • Pod テンプレートオブジェクトの spec.runtimeClassName フィールドを検査します。値が kata-remote の場合、ワークロードはピア Pod を使用して OpenShift Sandboxed Containers で実行されています。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat