3.3. CLI を使用したサンドボックスコンテナー Operator のインストール

CLI から Operator をインストールし、ワークロードを表示できます。

3.3.1. CLI を使用したサンドボックスコンテナー Operator のインストール

OpenShift Container Platform CLI から OpenShift サンドボックスコンテナー Operator をインストールできます。

前提条件

  • OpenShift Container Platform 4.8 をお使いのクラスターがインストールされている。
  • OpenShift CLI (oc) がインストールされている。
  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。
  • OpenShift サンドボックスコンテナーカタログにサブスクライブしている。

    注記

    OpenShift サンドボックスコンテナーカタログにサブスクライブすると、openshift-sandboxed-containers-operator namespace の OpenShift サンドボックスコンテナー Operator にアクセスできるようになります。

手順

  1. 以下のマニフェストを含む YAML ファイルを作成します。

    apiVersion: v1
    kind: Namespace
    metadata:
      name: openshift-sandboxed-containers-operator
    ---
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: openshift-sandboxed-containers-kataconfig-group
      namespace: openshift-sandboxed-containers-operator
    spec:
      targetNamespaces:
        - openshift-sandboxed-containers-operator
    ---
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: sandboxed-containers-operatorhub
      namespace: openshift-sandboxed-containers-operator
    spec:
      source: redhat-operators
      sourceNamespace: openshift-marketplace
      name: sandboxed-containers-operator
      startingCSV: sandboxed-containers-operator.v1.0.0
      channel: "preview-1.0"
      approval: "Automatic"
    注記

    preview-1.0 チャネルを使用することで、OpenShift Container Platform バージョンと互換性のある OpenShift Virtualization のバージョンをインストールできます。

  2. OpenShift サンドボックスコンテナーに必要な NamespaceOperatorGroup、および Subscription オブジェクトを作成します。

    $ oc create -f <file name>.yaml
  3. Operator が正常にインストールされていることを確認します。

    $ oc get csv -n openshift-sandboxed-containers-operator

    出力例

    NAME                             DISPLAY                                  VERSION  REPLACES                    PHASE
    openshift-sandboxed-containers   openshift-sandboxed-containers-operator  1.0.0    <csv-of-previous-version>   Succeeded

  4. 利用可能なデプロイメントを表示します。

    $ oc get deployments -n openshift-sandboxed-containers-operator

    出力例

    NAME                                        READY  UP-TO-DATE   AVAILABLE   AGE
    openshift-sandboxed-containers-operator                         1/111       9m48s

検証

  • KataConfig リソースを作成してインストールをトリガーできるように Operator が稼働していることを確認します。

    $ oc get deployments -n openshift-sandboxed-containers-operator

    出力例

    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    openshift-sandboxed-containers-controller-manager   1/1     1            1           40d

3.3.1.1. Kata ランタイムのインストールのトリガー

OpenShift サンドボックスコンテナー Operator をトリガーするために KataConfig カスタムリソース (CR) を 1 つ作成する必要があります。

  • QEMU および kata-containers など、必要な RHCOS 拡張を RHCOS ノードにインストールします。
  • ランタイム CRI-O が正しい Kata ランタイムハンドラーで設定されていることを確認します。
  • 仮想化が原因となる追加のオーバーヘッドおよび必須の追加プロセスに必要な設定を使用して RuntimeClass カスタムリソースを作成します。

前提条件

  • OpenShift Container Platform 4.8 をお使いのクラスターがインストールされている。
  • OpenShift CLI (oc) がインストールされている。
  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。

手順

  1. KataConfig リソースを作成します。

    $ oc create -f <file name>.yaml

    apiVersion: kataconfiguration.openshift.io/v1
    kind: KataConfig
    metadata:
      name: cluster-kataconfig

  2. インストールの進捗を監視します。

    • KataConfig インストールを記述できます。

      $ oc describe kataconfig
      • ステータスの Completed nodes フィールドを確認します。
      • Completed nodes の値がワーカーノードの数と一致する場合に、インストールは完了します。ステータスには、インストールが完了したノードの一覧も含まれます。
    • KataConfig リソースを監視して、インストールの進捗を確認できます。

      $ watch -n 10 oc describe kataconfig

      または、KataConfig リソースのステータスを確認することもできます。これには、oc get KataConfig <name> -oyaml を実行して、出力の status フィールドを検査します。

Kata ランタイムがクラスターにインストールされ、セカンダリーランタイムとして使用できるようになりました。クラスターの Kata 用に新たに作成された RuntimeClass が表示されることを確認します。

重要

OpenShift サンドボックスコンテナーは、Kata を主なランタイムとしてではなく、クラスターでセカンダリーオプションのランタイムとしてのみインストールします。

検証

  • 以下を実行して KataConfig カスタムリソースの値をモニターできます。

    $ watch oc describe KataConfig cluster-kataconfig

関連情報

3.3.1.2. OpenShift サンドボックスコンテナーのノードの選択

特定のワーカーに Kata ランタイムを一部選択してインストールできます。

前提条件

  • OpenShift Container Platform 4.8 をお使いのクラスターがインストールされている。
  • OpenShift CLI (oc) がインストールされている。
  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。

手順

  1. ノードの選択に使用するラベルを特定します。この例では、ラベルを使用して、OpenShift サンドボックスコンテナーのワークロードで実行する候補として選択します。ノードが存在する場合は、それらが選択されます。

    1. ラベルをノードに適用するには、以下のコマンドを実行します。

      $ oc label node <worker_node_name> <label>=<value>

      これにより、ワーカーノードに値が <value><label> ラベルを付けます。

  2. ラベルセレクターを追加するには、KataConfig カスタムリソース (CR) を編集します。

    $ oc edit kataconfig

      apiVersion: kataconfiguration.openshift.io/v1
      kind: KataConfig
      metadata:
        name: cluster-kataconfig
      spec:
        kataConfigPoolSelector:
          matchLabels:
             custom-kata-machine-pool: 'true'

検証

  • machine-config-pool オブジェクトのノードが設定の更新を行うかどうかを確認できます。

    • デフォルトノードを使用している場合は、以下を実行して machine-config-pool リソースをモニターできます。

      $ watch oc get mcp worker
    • 選択したノードを使用している場合は、以下を実行して machine-config-pool リソースをモニターできます。

      $ watch oc get mcp kata-oc
  • watch oc describe kataconfig cluster-kataconfig を実行して、ノードで sandboxed-containers 拡張の失敗に関する情報を表示できます。この情報は、machine-config-pool オブジェクトのステータスから収集されます。以下を実行して情報を表示できます。

    $ oc describe mcp <machine-config-pool>

3.3.1.3. OpenShift サンドボックスコンテナーワークロードのスケジューリング

ワークロードをスケジューリングすると、OpenShift サンドボックスコンテナーで実行できます。

前提条件

  • OpenShift Container Platform 4.8 をお使いのクラスターがインストールされている。
  • OpenShift CLI (oc) がインストールされている。
  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。

手順

  1. runtimeClassName: kata を Pod でテンプレート化されたリソースに追加します。

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

Pod オブジェクトの例

  apiVersion: v1
  kind: Pod
  metadata:
   name: mypod
  spec:
    runtimeClassName: kata

Deployment オブジェクトの例

  apiVersion: apps/v1
  kind: Deployment
  metadata:
    name: mypod
    labels:
      app: mypod
  spec:
    replicas: 3
    selector:
      matchLabels:
        app: mypod
    template:
      metadata:
        labels:
          app: mypod
      spec:
        runtimeClassName: kata
        containers:
        - name: mypod
          image: myImage

Pod でテンプレート化されたリソースが runtimeClassName: kata によって作成されると、OpenShift Container Platform は OpenShift サンドボックスコンテナーでワークロードのスケジューリングを開始します。セレクターを使用しない場合には、デフォルト値がすべてのワーカーノードに設定されます。ワークロードが OpenShift サンドボックスコンテナーワークロードで実行されます。

3.3.2. CLI からの OpenShift サンドボックスコンテナーワークロードの表示

ワークロードの Pod が CLI から使用する runtimeClass を表示できます。

前提条件

  • OpenShift Container Platform 4.8 をお使いのクラスターがインストールされている。
  • OpenShift CLI (oc) がインストールされている。
  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。

手順

  • Pod の runtimeClassName フィールドを検査して、OpenShift サンドボックスコンテナーで実行している Pod と通常のコンテナーを比較します。

    • ノードでは、Pod ごとに対応する qemu プロセスがあります。

検証

  • openshift-sandboxed-containers-operator コントローラー Pod のログをチェックして、実行されているステップに関する詳細なメッセージを確認できます。

    • コントローラー Pod 名を取得するには、以下を実行します。

      $ oc get pods -n openshift-sandboxed-containers-operator | grep openshift-sandboxed-containers-operator-controller-manager

      これにより、Pod のコンテナーマネージャーのログを監視できます。