10.8. 仮想マシンコンソールへのアクセス

OpenShift Virtualization は、異なる製品タスクを実現するために使用できる異なる仮想マシンコンソールを提供します。これらのコンソールには、OpenShift Container Platform Web コンソールから、また CLI コマンドを使用してアクセスできます。

注記

単一の仮想マシンに対する同時 VNC 接続の実行は、現在サポートされていません。

10.8.1. OpenShift Container Platform Web コンソールでの仮想マシンコンソールへのアクセス

OpenShift Container Platform Web コンソールでシリアルコンソールまたは VNC コンソールを使用して、仮想マシンに接続できます。

OpenShift Container Platform Web コンソールで、RDP (リモートデスクトッププロトコル) を使用するデスクトップビューアーコンソールを使用して、Windows 仮想マシンに接続できます。

10.8.1.1. シリアルコンソールへの接続

Web コンソールの VirtualMachine details ページにある Console タブから、実行中の仮想マシンのシリアルコンソールに接続します。

手順

  1. OpenShift Container Platform コンソールで、サイドメニューから VirtualizationVirtualMachines をクリックします。
  2. 仮想マシンを選択して、VirtualMachine details ページを開きます。
  3. Console タブをクリックします。VNC コンソールがデフォルトで開きます。
  4. 一度に 1 つのコンソール セッションのみが開かれるようにするには、Disconnect をクリックします。それ以外の場合、VNC コンソール セッションはバックグラウンドでアクティブなままになります。
  5. VNC Console ドロップダウンリストをクリックし、Serial Console を選択します。
  6. Disconnect をクリックして、コンソールセッションを終了します。
  7. オプション: Open Console in New Window をクリックして、別のウィンドウでシリアルコンソールを開きます。

10.8.1.2. VNC コンソールへの接続

Web コンソールの VirtualMachine details ページにある Console タブから、実行中の仮想マシンの VNC コンソールに接続します。

手順

  1. OpenShift Container Platform コンソールで、サイドメニューから VirtualizationVirtualMachines をクリックします。
  2. 仮想マシンを選択して、VirtualMachine details ページを開きます。
  3. Console タブをクリックします。VNC コンソールがデフォルトで開きます。
  4. オプション: Open Console in New Window をクリックして、別のウィンドウで VNC コンソールを開きます。
  5. オプション: Send Key をクリックして、キーの組み合わせを仮想マシンに送信します。
  6. コンソールウィンドウの外側をクリックし、Disconnect をクリックしてセッションを終了します。

10.8.1.3. RDP を使用した Windows 仮想マシンへの接続

Remote Desktop Protocol (RDP) を使用する Desktop viewer コンソールは、Windows 仮想マシンに接続するためのより使いやすいコンソールを提供します。

RDP を使用して Windows 仮想マシンに接続するには、Web コンソールの VirtualMachine 詳細 ページの Console タブから仮想マシンの console.rdp ファイルをダウンロードし、優先する RDP クライアントに提供します。

前提条件

  • QEMU ゲストエージェントがインストールされた実行中の Windows 仮想マシン。qemu-guest-agent は VirtIO ドライバーに含まれています。
  • Windows 仮想マシンと同じネットワーク上のマシンにインストールされた RDP クライアント。

手順

  1. OpenShift Container Platform コンソールで、サイドメニューから VirtualizationVirtualMachines をクリックします。
  2. Windows 仮想マシンをクリックして、VirtualMachine details ページを開きます。
  3. Console タブをクリックします。
  4. コンソールのリストから、Desktop viewer を選択します。
  5. Launch Remote Desktop をクリックし、 console.rdp ファイルをダウンロードします。
  6. 優先する RDP クライアントで console.rdp ファイルを参照して、Windows 仮想マシンに接続します。

10.8.1.4. 仮想マシンの表示の切り替え

Windows 仮想マシン (VM) に vGPU が接続されている場合、Web コンソールを使用してデフォルトのディスプレイと vGPU ディスプレイを切り替えることができます。

前提条件

  • 仲介されたデバイスは、HyperConverged カスタムリソースで設定され、仮想マシンに割り当てられます。
  • 仮想マシンは実行中です。

手順

  1. OpenShift Container Platform コンソールで、VirtualizationVirtualMachines をクリックします。
  2. Windows 仮想マシンを選択して Overview 画面を開きます。
  3. Console タブをクリックします。
  4. コンソールのリストから、VNC console を選択します。
  5. Send Key リストから適切なキーの組み合わせを選択します。

    1. デフォルトの仮想マシン表示にアクセスするには、Ctl + Alt+ 1 を選択します。
    2. vGPU ディスプレイにアクセスするには、Ctl + Alt + 2 を選択します。

10.8.1.5. Web コンソールを使用した SSH コマンドのコピー

コマンドをコピーして、SSH 経由で仮想マシン (VM) ターミナルに接続します。

手順

  1. OpenShift Container Platform コンソールで、サイドメニューから VirtualizationVirtualMachines をクリックします。
  2. オプション メニューをクリック kebab 仮想マシンの SSH コマンドのコピー を選択します。
  3. ターミナルに貼り付け、仮想マシンにアクセスします。

10.8.2. CLI コマンドの使用による仮想マシンコンソールへのアクセス

10.8.2.1. virtctl を使用して SSH 経由で仮想マシンにアクセスする

virtctl ssh コマンドを使用して、ローカル SSH クライアントを使用して SSH トラフィックを仮想マシン (VM) に転送できます。仮想マシンで SSH キー認証を設定している場合は、手順 1 は必要ないため、手順 2 に進んでください。

注記

コントロールプレーンの SSH トラフィックが多いと、API サーバーの速度が低下する可能性があります。定期的に多数の接続が必要な場合は、専用の Kubernetes Service オブジェクトを使用して仮想マシンにアクセスします。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • virtctl クライアントをインストールしました。
  • アクセスする仮想マシンが実行されています。
  • 仮想マシンと同じプロジェクトにいます。

手順

  1. SSH キー認証を設定します。

    1. ssh-keygen コマンドを使用して、SSH 公開鍵ペアを生成します。

      $ ssh-keygen -f <key_file> 1
      1
      キーを格納するファイルを指定します。
    2. 仮想マシンにアクセスするための SSH 公開鍵を含む SSH 認証シークレットを作成します。

      $ oc create secret generic my-pub-key --from-file=key1=<key_file>.pub
    3. VirtualMachine マニフェストにシークレットへの参照を追加します。以下に例を示します。

      apiVersion: kubevirt.io/v1
      kind: VirtualMachine
      metadata:
        name: testvm
      spec:
        running: true
        template:
          spec:
            accessCredentials:
            - sshPublicKey:
                source:
                  secret:
                    secretName: my-pub-key 1
                propagationMethod:
                  configDrive: {} 2
      # ...
      1
      SSH 認証 Secret オブジェクトへの参照。
      2
      SSH 公開鍵は、configDrive プロバイダーを使用して cloud-init メタデータとして仮想マシンに挿入されます。
    4. 仮想マシンを再起動して変更を適用します。
  2. SSH 経由で仮想マシンに接続します。

    1. 次のコマンドを実行して、SSH 経由で仮想マシンにアクセスします。

      $ virtctl ssh -i <key_file> <vm_username>@<vm_name>
    2. オプション: 仮想マシンとの間でファイルを安全に転送するには、次のコマンドを使用します。

      マシンから仮想マシンにファイルをコピーする

      $ virtctl scp -i <key_file> <filename> <vm_username>@<vm_name>:

      仮想マシンからマシンにファイルをコピーする

      $ virtctl scp -i <key_file> <vm_username@<vm_name>:<filename> .

10.8.2.2. OpenSSH および virtctl port-forward の使用

ローカルの OpenSSH クライアントと virtctl port-forward コマンドを使用して、実行中の仮想マシン (VM) に接続できます。Ansible でこの方法を使用すると、VM の設定を自動化できます。

ポート転送トラフィックはコントロールプレーン経由で送信されるため、この方法はトラフィックの少ないアプリケーションに推奨されます。ただし、API サーバーに負荷が大きいため、Rsync や Remote Desktop Protocol などのトラフィックの高いアプリケーションには推奨されません。

前提条件

  • virtctl クライアントをインストールしている。
  • アクセスする仮想マシンが実行されている。
  • virtctl ツールがインストールされている環境には、仮想マシンへのアクセスに必要なクラスターパーミッションがある。たとえば、oc login を実行するか、KUBECONFIG 環境変数を設定します。

手順

  1. 以下のテキストをクライアントマシンの ~/.ssh/config ファイルに追加します。

    Host vm/*
      ProxyCommand virtctl port-forward --stdio=true %h %p
  2. 次のコマンドを実行して、仮想マシンに接続します。

    $ ssh <user>@vm/<vm_name>.<namespace>

10.8.2.3. 仮想マシンインスタンスのシリアルコンソールへのアクセス

virtctl console コマンドは、指定された仮想マシンインスタンスへのシリアルコンソールを開きます。

前提条件

  • virt-viewer パッケージがインストールされていること。
  • アクセスする仮想マシンインスタンスが実行中であること。

手順

  • virtctl でシリアルコンソールに接続します。

    $ virtctl console <VMI>

10.8.2.4. VNC を使用した仮想マシンインスタンスのグラフィカルコンソールへのアクセス

virtctl クライアントユーティリティーは remote-viewer 機能を使用し、実行中の仮想マシンインスタンスに対してグラフィカルコンソールを開くことができます。この機能は virt-viewer パッケージに組み込まれています。

前提条件

  • virt-viewer パッケージがインストールされていること。
  • アクセスする仮想マシンインスタンスが実行中であること。
注記

リモートマシンで SSH 経由で virtctl を使用する場合、X セッションをマシンに転送する必要があります。

手順

  1. virtctl ユーティリティーを使用してグラフィカルインターフェイスに接続します。

    $ virtctl vnc <VMI>
  2. コマンドが失敗した場合には、トラブルシューティング情報を収集するために -v フラグの使用を試行します。

    $ virtctl vnc <VMI> -v 4

10.8.2.5. RDP コンソールの使用による Windows 仮想マシンへの接続

ローカルのリモートデスクトッププロトコル (RDP) クライアントを使用して、Windows 仮想マシン (VM) に接続するための Kubernetes Service オブジェクトを作成します。

前提条件

  • QEMU ゲストエージェントがインストールされた実行中の Windows 仮想マシン。qemu-guest-agent オブジェクトは VirtIO ドライバーに含まれています。
  • ローカルマシンにインストールされた RDP クライアント。

手順

  1. VirtualMachine マニフェストを編集して、サービス作成のラベルを追加します。

    apiVersion: kubevirt.io/v1
    kind: VirtualMachine
    metadata:
      name: vm-ephemeral
      namespace: example-namespace
    spec:
      running: false
      template:
        metadata:
          labels:
            special: key 1
    # ...
    1
    ラベル special: keyspec.template.metadata.labels セクションに追加します。
    注記

    仮想マシンのラベルは Pod に渡されます。special: キー ラベルは、Service マニフェストの spec.selector 属性のラベルと一致する必要があります。

  2. VirtualMachine マニフェストファイルを保存して変更を適用します。
  3. 仮想マシンを公開するための Service マニフェストを作成します。

    apiVersion: v1
    kind: Service
    metadata:
      name: rdpservice 1
      namespace: example-namespace 2
    spec:
      ports:
      - targetPort: 3389 3
        protocol: TCP
      selector:
        special: key 4
      type: NodePort 5
    # ...
    1
    Service オブジェクトの名前。
    2
    Service オブジェクトが存在する namespace。これは VirtualMachine マニフェストの metadata.namespace フィールドと同じである必要があります。
    3
    サービスによって公開される仮想マシンポート。ポートリストが仮想マシンマニフェストに定義されている場合は、オープンポートを参照する必要があります。
    4
    VirtualMachine マニフェストの spec.template.metadata.labels スタンザに追加したラベルへの参照。
    5
    サービスのタイプ。
  4. サービス マニフェストファイルを保存します。
  5. 以下のコマンドを実行してサービスを作成します。

    $ oc create -f <service_name>.yaml
  6. 仮想マシンを起動します。仮想マシンがすでに実行中の場合は、再起動します。
  7. Service オブジェクトをクエリーし、これが利用可能であることを確認します。

    $ oc get service -n example-namespace

    NodePort サービスの出力例

    NAME        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)            AGE
    rdpservice   NodePort    172.30.232.73   <none>       3389:30000/TCP    5m

  8. 以下のコマンドを実行して、ノードの IP アドレスを取得します。

    $ oc get node <node_name> -o wide

    出力例

    NAME    STATUS   ROLES   AGE    VERSION  INTERNAL-IP      EXTERNAL-IP
    node01  Ready    worker  6d22h  v1.24.0  192.168.55.101   <none>

  9. 優先する RDP クライアントでノード IP アドレスと割り当てられたポートを指定します。
  10. Windows 仮想マシンに接続するためのユーザー名とパスワードを入力します。