6.11. 仮想マシンのネットワーク


6.11.1. 仮想マシンのデフォルト Pod ネットワークの使用

Container-native Virtualization でデフォルトの Pod ネットワークを使用できます。これを実行するには、masquerade バインディングメソッドを使用する必要があります。これは、デフォルトの Pod ネットワークを使用する場合にのみ推奨されるバインディングメソッドです。デフォルト以外のネットワークには、masquerade モードを使用しないでください。

注記

セカンダリーネットワークの場合は、bridge バインディングメソッドを使用します。

6.11.1.1. コマンドラインでのマスカレードモードの設定

マスカレードモードを使用し、仮想マシンの送信トラフィックを Pod IP アドレスの背後で非表示にすることができます。マスカレードモードは、ネットワークアドレス変換 (NAT) を使用して仮想マシンを Linux ブリッジ経由で Pod ネットワークバックエンドに接続します。

仮想マシンの設定ファイルを編集して、マスカレードモードを有効にし、トラフィックが仮想マシンに到達できるようにします。

前提条件

  • 仮想マシンは、IPv4 アドレスを取得するために DHCP を使用できるように設定される必要があります。以下の例では、DHCP を使用するように設定されます。

手順

  1. 仮想マシン設定ファイルの interfaces 仕様を編集します。

    kind: VirtualMachine
    spec:
      domain:
        devices:
          interfaces:
            - name: red
              masquerade: {} 1
              ports:
                - port: 80 2
      networks:
      - name: red
        pod: {}
    1
    マスカレードモードを使用した接続
    2
    ポート 80 での受信トラフィックの許可
  2. 仮想マシンを作成します。

    $ oc create -f <vm-name>.yaml

6.11.1.2. バインディング方法の選択

Container-native Virtualization Web コンソールウィザードから仮想マシンを作成する場合、Networking 画面で必要なバインディングメソッドを選択します。

6.11.1.2.1. ネットワークフィールド
NameDescription

Name

ネットワークインターフェースの名前。

Model

ネットワークインターフェースカードのドライバー、またはネットワークインターフェースカードのモデル

Network

利用可能な NetworkAttachmentDefinition オブジェクトの一覧。

Type

利用可能なバインディングメソッドの一覧。デフォルトの Pod ネットワークについては、masquerade が唯一の推奨されるバインディングメソッドになります。セカンダリーネットワークの場合は、bridge バインディングメソッドを使用します。masquerade メソッドは、デフォルト以外のネットワークではサポートされません。

MAC Address

ネットワークインターフェースの MAC アドレス。MAC アドレスが指定されていない場合、セッションの一時アドレスが生成されます。

6.11.1.3. デフォルトネットワーク用の仮想マシン設定の例

6.11.1.3.1. テンプレート: 仮想マシンの設定ファイル
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachine
metadata:
  name: example-vm
  namespace: default
spec:
  running: false
  template:
    spec:
      domain:
        devices:
          disks:
            - name: containerdisk
              disk:
                bus: virtio
            - name: cloudinitdisk
              disk:
                bus: virtio
          interfaces:
          - masquerade: {}
            name: default
        resources:
          requests:
            memory: 1024M
      networks:
        - name: default
          pod: {}
      volumes:
        - name: containerdisk
          containerDisk:
            image: kubevirt/fedora-cloud-container-disk-demo
        - name: cloudinitdisk
          cloudInitNoCloud:
            userData: |
              #!/bin/bash
              echo "fedora" | passwd fedora --stdin
6.11.1.3.2. テンプレート: Windows 仮想マシンインスタンスの設定ファイル
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachineInstance
metadata:
  labels:
    special: vmi-windows
  name: vmi-windows
spec:
  domain:
    clock:
      timer:
        hpet:
          present: false
        hyperv: {}
        pit:
          tickPolicy: delay
        rtc:
          tickPolicy: catchup
      utc: {}
    cpu:
      cores: 2
    devices:
      disks:
      - disk:
          bus: sata
        name: pvcdisk
      interfaces:
      - masquerade: {}
        model: e1000
        name: default
    features:
      acpi: {}
      apic: {}
      hyperv:
        relaxed: {}
        spinlocks:
          spinlocks: 8191
        vapic: {}
    firmware:
      uuid: 5d307ca9-b3ef-428c-8861-06e72d69f223
    machine:
      type: q35
    resources:
      requests:
        memory: 2Gi
  networks:
  - name: default
    pod: {}
  terminationGracePeriodSeconds: 0
  volumes:
  - name: pvcdisk
    persistentVolumeClaim:
      claimName: disk-windows

6.11.2. 仮想マシンの複数ネットワークへの割り当て

Container-native Virtualization は、仮想マシンの複数ネットワークへの接続を可能にする layer-2 vNIC ネットワーク機能を提供します。複数インターフェースへのアクセスによって異なる既存のワークロードを持つ仮想マシンをインポートできます。また、仮想マシンをネットワーク経由で起動できるように PXE ネットワークを設定することもできます。

まず、ネットワーク管理者は Web コンソールまたは CLI で namespace のブリッジ NetworkAttachmentDefinition を設定します。次に、ユーザーは NIC を作成し、その namespace 内の Pod および仮想マシンをブリッジネットワークに割り当てることができます。

6.11.2.1. Container-native Virtualization ネットワークの用語集

Container-native Virtualization は、カスタムリソースおよびプラグインを使用して高度なネットワーク機能を提供します。

以下の用語は、Container-native Virtualization ドキュメント全体で使用されています。

Container Network Interface (CNI)
コンテナーのネットワーク接続に重点を置く Cloud Native Computing Foundation プロジェクト。Container-native Virtualization は CNI プラグインを使用して基本的な Kubernetes ネットワーク機能を強化します。
Multus
複数の CNI の存在を可能にし、Pod または仮想マシンが必要なインターフェースを使用できるようにする「メタ」 CNI プラグイン。
カスタムリソース定義 (CRD、Customer Resource Definition)
カスタムリソースの定義を可能にする Kubernetes API リソース、または CRD API リソースを使用して定義されるオブジェクト。
NetworkAttachmentDefinition
Pod、仮想マシン、および仮想マシンインスタンスを 1 つ以上のネットワークに割り当てることを可能にする Multus プロジェクトによって導入される CRD。
PXE (Preboot eXecution Environment)
管理者がネットワーク経由でサーバーからクライアントマシンを起動できるようにするインターフェース。ネットワークのブートにより、オペレーティングシステムおよび他のソフトウェアをクライアントにリモートでロードできます。

6.11.2.2. NetworkAttachmentDefinition の作成

6.11.2.2.1. Web コンソールでの Linux ブリッジ NetworkAttachmentDefinition の作成

NetworkAttachmentDefinition は、layer-2 デバイスを Container-native Virtualization クラスターの特定の namespace に公開するカスタムリソースです。

ネットワーク管理者は、NetworkAttachmentDefinition を作成して既存の layer-2 ネットワークを Pod および仮想マシンに提供できます。

前提条件

  • Container-native Virtualization 2.2 以降がクラスターにインストールされていること。
  • Linux ブリッジはすべてのノードで設定され、適切な Network Interface Card (NIC) に割り当てられる必要があります。
  • VLAN を使用する場合、vlan_filtering はブリッジで有効にされる必要があります。
  • NIC はすべての関連する VLAN に対してタグ付けされる必要があります。

    • 例: bridge vlan add dev bond0 vid 1-4095 master

手順

  1. Web コンソールで、Networking Network Attachment Definitions をクリックします。
  2. Create Network Attachment Definition をクリックします。
  3. 一意の Name およびオプションの Description を入力します。
  4. Network Type 一覧をクリックし、CNV Linux bridge を選択します。
  5. Bridge Name フィールドにブリッジの名前を入力します。
  6. (オプション) リソースに VLAN ID が設定されている場合、 VLAN Tag Number フィールドに ID 番号を入力します。
  7. Create をクリックします。
6.11.2.2.2. CLI での Linux ブリッジ NetworkAttachmentDefinition の作成

ネットワーク管理者は、タイプ cnv-bridge の NetworkAttachmentDefinition を、レイヤー 2 ネットワークを Pod および仮想マシンに提供するように設定できます。

注記

NetworkAttachmentDefinition は Pod または仮想マシンと同じ namespace にある必要があります。

前提条件

  • Container-native Virtualization 2.0 以降
  • Linux ブリッジはすべてのノードで設定され、適切な Network Interface Card に割り当てられる必要があります。
  • VLAN を使用する場合、vlan_filtering はブリッジで有効にされる必要があります。
  • NIC はすべての関連する VLAN に対してタグ付けされる必要があります。

    • 例: bridge vlan add dev bond0 vid 1-4095 master

手順

  1. 任意のローカルディレクトリーで NetworkAttachmentDefinition の新規ファイルを作成します。このファイルには、お使いの設定に合わせて変更された以下の内容が含まれる必要があります。

    apiVersion: "k8s.cni.cncf.io/v1"
    kind: NetworkAttachmentDefinition
    metadata:
      name: a-bridge-network
      annotations:
        k8s.v1.cni.cncf.io/resourceName: bridge.network.kubevirt.io/br0 1
    spec:
      config: '{
        "cniVersion": "0.3.1",
        "name": "cnv-bridge-conf", 2
        "plugins": [
          {
            "type": "cnv-bridge", 3
            "bridge": "br0" 4
          },
          {
            "type": "cnv-tuning" 5
          }
        ]
      }'
    1
    このアノテーションを NetworkAttachmentDefinition に追加する場合、仮想マシンインスタンスは br0 ブリッジが接続されているノードでのみ実行されます。
    2
    必須。設定の名前。
    3
    この NetworkAttachmentDefinition のネットワークを提供する Container Network Interface (CNI) プラグインの実際の名前。異なる CNI を使用するのでない限り、このフィールドは変更しないでください。
    4
    ブリッジの名前が br0 でない場合、ブリッジの実際の名前に置き換える必要があります。
    5
    必須。これにより、MAC プールマネージャーが接続に固有の MAC アドレスを割り当てます。
    $ oc create -f <resource_spec.yaml>
  2. ブリッジネットワークに接続する必要のある仮想マシンまたは仮想マシンインスタンスの設定を編集します。

    apiVersion: v1
    kind: VirtualMachine
    metadata:
      name: example-vm
      annotations:
        k8s.v1.cni.cncf.io/networks: a-bridge-network 1
    spec:
    ...
    1
    NetworkAttachmentDefinition の実際の name 値に置き換える必要があります。
  3. 設定ファイルをリソースに適用します。

    $ oc create -f <local/path/to/network-attachment-definition.yaml>
注記

次のセクションで vNIC を定義する際に、NETWORK の値が直前のセクションで作成した NetworkAttachmentDefinition のブリッジネットワーク名であることを確認します。

6.11.2.3. 仮想マシンの NIC の作成

Web コンソールから追加の NIC を作成し、これを仮想マシンに割り当てます。

手順

  1. Container-native Virtualization コンソールの適切なプロジェクトで、Workloads Virtual Machines をクリックします。
  2. 仮想マシンを選択します。
  3. Network Interfaces をクリックし、仮想マシンにすでに割り当てられている NIC を表示します。
  4. Create Network Interface をクリックし、一覧に新規スロットを作成します。
  5. 新規 NIC の NameModelNetworkType、および MAC Address を入力します。
  6. ボタンをクリックして NIC を保存し、これを仮想マシンに割り当てます。

6.11.2.4. ネットワークフィールド

NameDescription

Name

ネットワークインターフェースの名前。

Model

ネットワークインターフェースカードのドライバー、またはネットワークインターフェースカードのモデル

Network

利用可能な NetworkAttachmentDefinition オブジェクトの一覧。

Type

利用可能なバインディングメソッドの一覧。デフォルトの Pod ネットワークについては、masquerade が唯一の推奨されるバインディングメソッドになります。セカンダリーネットワークの場合は、bridge バインディングメソッドを使用します。masquerade メソッドは、デフォルト以外のネットワークではサポートされません。

MAC Address

ネットワークインターフェースの MAC アドレス。MAC アドレスが指定されていない場合、セッションの一時アドレスが生成されます。

仮想マシンにオプションの QEMU ゲストエージェントをインストールし、ホストが追加のネットワークについての関連情報を表示できるようにします。

6.11.3. QEMU ゲストエージェントの仮想マシンへのインストール

QEMU ゲストエージェントは仮想マシンで実行されるデーモンです。エージェントは仮想マシン上で、追加ネットワークの IP アドレスなどのネットワーク情報をホストに渡します。

6.11.3.1. 前提条件

  • 以下のコマンドを実行して、ゲストエージェントがインストールされており、実行中であることを確認します。

    $ systemctl status qemu-guest-agent

6.11.3.2. QEMU ゲストエージェントの Linux 仮想マシンへのインストール

qemu-guest-agent は広く利用されており、Red Hat 仮想マシンでデフォルトで利用できます。このエージェントをインストールし、サービスを起動します。

手順

  1. コンソールのいずれか、または SSH を使用して仮想マシンのコマンドラインにアクセスします。
  2. QEMU ゲストエージェントを仮想マシンにインストールします。

    $ yum install -y qemu-guest-agent
  3. QEMU ゲストエージェントサービスを起動します。

    $ systemctl start qemu-guest-agent
  4. サービスに永続性があることを確認します。

    $ systemctl enable qemu-guest-agent

Web コンソールで仮想マシンまたは仮想マシンテンプレートのいずれかを作成する際に、ウィザードの cloud-init セクションの custom script フィールドを使用して QEMU ゲストエージェントをインストールし、起動することもできます。

6.11.3.3. QEMU ゲストエージェントの Windows 仮想マシンへのインストール

Windows 仮想マシンの場合、QEMU ゲストエージェントは、以下の手順のいずれかを使用してインストールできる VirtIO ドライバーに含まれています。

6.11.3.3.1. VirtIO ドライバーの既存 Windows 仮想マシンへのインストール

VirtIO ドライバーを、割り当てられた SATA CD ドライブから既存の Windows 仮想マシンにインストールします。

注記

この手順では、ドライバーを Windows に追加するための汎用的なアプローチを使用しています。このプロセスは Windows のバージョンごとに若干異なる可能性があります。特定のインストール手順については、お使いの Windows バージョンについてのインストールドキュメントを参照してください。

手順

  1. 仮想マシンを起動し、グラフィカルコンソールに接続します。
  2. Windows ユーザーセッションにログインします。
  3. Device Manager を開き、Other devices を拡張して、Unknown device を一覧表示します。

    1. Device Properties を開いて、不明なデバイスを特定します。デバイスを右クリックし、Properties を選択します。
    2. Details タブをクリックし、Property リストで Hardware Ids を選択します。
    3. Hardware IdsValue をサポートされる VirtIO ドライバーと比較します。
  4. デバイスを右クリックし、Update Driver Software を選択します。
  5. Browse my computer for driver software をクリックし、VirtIO ドライバーが置かれている割り当て済みの SATA CD ドライブの場所に移動します。ドライバーは、ドライバーのタイプ、オペレーティングシステム、および CPU アーキテクチャー別に階層的に編成されます。
  6. Next をクリックしてドライバーをインストールします。
  7. 必要なすべての VirtIO ドライバーに対してこのプロセスを繰り返します。
  8. ドライバーのインストール後に、Close をクリックしてウィンドウを閉じます。
  9. 仮想マシンを再起動してドライバーのインストールを完了します。
6.11.3.3.2. Windows インストール時の VirtIO ドライバーのインストール

Windows のインストール時に割り当てられた SATA CD ドライバーから VirtIO ドライバーをインストールします。

注記

この手順では、Windows インストールの汎用的なアプローチを使用しますが、インストール方法は Windows のバージョンごとに異なる可能性があります。インストールする Windows のバージョンについてのドキュメントを参照してください。

手順

  1. 仮想マシンを起動し、グラフィカルコンソールに接続します。
  2. Windows インストールプロセスを開始します。
  3. Advanced インストールを選択します。
  4. ストレージの宛先は、ドライバーがロードされるまで認識されません。Load driver をクリックします。
  5. ドライバーは SATA CD ドライブとして割り当てられます。OK をクリックし、CD ドライバーでロードするストレージドライバーを参照します。ドライバーは、ドライバーのタイプ、オペレーティングシステム、および CPU アーキテクチャー別に階層的に編成されます。
  6. 必要なすべてのドライバーについて直前の 2 つの手順を繰り返します。
  7. Windows インストールを完了します。

6.11.4. vNIC の IP アドレスの仮想マシンへの表示

QEMU ゲストエージェントは仮想マシンで実行され、割り当てられた NIC の IP アドレスをホストに渡します。 これにより、Web コンソールおよび oc クライアントの両方から IP アドレスを表示できます。

6.11.4.1. 前提条件

  1. 以下のコマンドを実行して、ゲストエージェントがインストールされており、実行中であることを確認します。

    $ systemctl status qemu-guest-agent
  2. ゲストエージェントがインストールされておらず、実行されていない場合は、仮想マシン上でゲストエージェントをインストールし、実行します

6.11.4.2. CLI での仮想マシンインターフェースの IP アドレスの表示

ネットワークインターフェース設定は oc describe vmi <vmi_name> コマンドに含まれます。

IP アドレス情報は、仮想マシン上で ip addr を実行するか、または oc get vmi <vmi_name> -o yaml を実行して表示することもできます。

手順

  • oc describe コマンドを使用して、仮想マシンインターフェース設定を表示します。

    $ oc describe vmi <vmi_name>
    
    ...
    Interfaces:
       Interface Name:  eth0
       Ip Address:      10.244.0.37/24
       Ip Addresses:
         10.244.0.37/24
         fe80::858:aff:fef4:25/64
       Mac:             0a:58:0a:f4:00:25
       Name:            default
       Interface Name:  v2
       Ip Address:      1.1.1.7/24
       Ip Addresses:
         1.1.1.7/24
         fe80::f4d9:70ff:fe13:9089/64
       Mac:             f6:d9:70:13:90:89
       Interface Name:  v1
       Ip Address:      1.1.1.1/24
       Ip Addresses:
         1.1.1.1/24
         1.1.1.2/24
         1.1.1.4/24
         2001:de7:0:f101::1/64
         2001:db8:0:f101::1/64
         fe80::1420:84ff:fe10:17aa/64
       Mac:             16:20:84:10:17:aa

6.11.4.3. Web コンソールでの仮想マシンインターフェースの IP アドレスの表示

IP 情報は、仮想マシンの Virtual Machine Overview 画面に表示されます。

手順

  1. Container-native Virtualization コンソールで Workloads Virtual Machinesをクリックします。
  2. 仮想マシンの名前をクリックして、Virtual Machine Overview 画面を開きます。

それぞれの割り当てられた NIC の情報は IP ADDRESSES の下に表示されます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.