第5章 VRF へのセカンダリーネットワークの割り当て


クラスター管理者は、CNI VRF プラグインを使用して、Virtual Routing and Forwarding (VRF) ドメインのセカンダリーネットワークを設定できます。このプラグインが作成する仮想ネットワークは、指定した物理インターフェイスに関連付けられます。

VRF インスタンスでセカンダリーネットワークを使用すると、次の利点があります。

ワークロードの分離
セカンダリーネットワークの VRF インスタンスを設定して、ワークロードトラフィックを分離します。
セキュリティーの向上
VRF ドメイン内の分離されたネットワークパスを通じて、セキュリティーを向上させます。
マルチテナンシーのサポート
各テナントの VRF ドメイン内で、一意のルーティングテーブルを使用したネットワークセグメンテーションを通じて、マルチテナントをサポートします。
注記

VRF を使用するアプリケーションは、特定のデバイスに対してバインドする必要があります。一般的な使用方法として、ソケットに SO_BINDTODEVICE オプションを使用できます。SO_BINDTODEVICE オプションは、渡されたインターフェイス名 (例: eth1) で指定されたデバイスにソケットをバインドします。SO_BINDTODEVICE オプションを使用するには、アプリケーションに CAP_NET_RAW 機能が必要です。

ip vrf exec コマンドを使用した VRF の使用は、OpenShift Container Platform Pod ではサポートされません。VRF を使用するには、アプリケーションを VRF インターフェイスに直接バインドします。

5.1. CNI VRF プラグインを使用してセカンダリーネットワークアタッチメントを作成する

Cluster Network Operator (CNO) は、セカンダリーネットワークの定義を管理します。クラスタースコープの Network カスタムリソース (CR) でセカンダリーネットワークを指定すると、CNO によって NetworkAttachmentDefinition CR が自動的に作成されます。

注記

Cluster Network Operator が管理する NetworkAttachmentDefinition CR は編集しないでください。これを行うと、セカンダリーネットワーク上のネットワークトラフィックが中断される可能性があります。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • cluster-admin 権限を持つユーザーとしてクラスターにログインしている。

手順

  1. 追加のネットワークアタッチメント用の Network CR を作成し、セカンダリーネットワークの rawCNIConfig 設定を挿入します。additional-network-attachment.yaml ファイルとして保存します。

    apiVersion: operator.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      additionalNetworks:
        - name: test-network-1
          namespace: additional-network-1
          type: Raw
          rawCNIConfig: '{
            "cniVersion": "0.3.1",
            "name": "macvlan-vrf",
            "plugins": [
            {
              "type": "macvlan",
              "master": "eth1",
              "ipam": {
                  "type": "static",
                  "addresses": [
                  {
                      "address": "191.168.1.23/24"
                  }
                  ]
              }
            },
            {
              "type": "vrf",
              "vrfname": "vrf-1",
              "table": 1001
            }]
          }'
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

    plugins
    リストを指定する必要があります。リストの最初の項目は、VRF ネットワークのベースとなるセカンダリーネットワークである必要があります。一覧の 2 つ目の項目は、VRF プラグイン設定です。
    type
    このパラメーターは vrf に設定する必要があります。
    vrfname
    インターフェイスが割り当てられる VRF の名前。Pod 内に VRF が存在しない場合は、CNI によって VRF が作成されます。
    table

    オプションのパラメーター。ルーティングテーブルの ID を指定します。デフォルトで、tableid パラメーターが使用されます。テーブル ID を指定しない場合は、CNI によって空きルーティングテーブル ID が VRF に割り当てられます。

    注記

    VRF は、リソースが netdevice タイプの場合にのみ正常に機能します。

  2. Network リソースを作成します。

    $ oc create -f additional-network-attachment.yaml
    Copy to Clipboard Toggle word wrap
  3. 以下のコマンドを実行して、CNO が NetworkAttachmentDefinition CR を作成していることを確認します。<namespace> を、ネットワーク割り当ての設定時に指定した namespace に置き換えます (例: additional-network-1)。予想される出力には、NAD CR の名前と作成後の経過時間 (分) が表示されます。

    $ oc get network-attachment-definitions -n <namespace>
    Copy to Clipboard Toggle word wrap
    注記

    CNO が CR を作成するまでに時間がかかる場合があります。

検証

  1. Pod を作成し、VRF プラグイン設定を含むセカンダリーネットワークにその Pod を割り当てます。

    1. 次の pod-additional-net.yaml ファイルに示すように、Pod リソースを定義する YAML ファイルを作成します。

      apiVersion: v1
      kind: Pod
      metadata:
       name: pod-additional-net
       annotations:
         k8s.v1.cni.cncf.io/networks: '[
             {
                     "name": "test-network-1" 
      1
      
             }
       ]'
      spec:
       containers:
       - name: example-pod-1
         command: ["/bin/bash", "-c", "sleep 9000000"]
         image: centos:8
      Copy to Clipboard Toggle word wrap

      ここでは、以下のようになります。

      name
      VRF プラグイン設定を含むセカンダリーネットワークの名前を指定します。
    2. 次のコマンドを実行して、Pod リソースを作成します。予想される出力には、Pod リソースの名前と作成期間 (分) が表示されます。

      $ oc create -f pod-additional-net.yaml
      Copy to Clipboard Toggle word wrap
  2. Pod ネットワークアタッチメントが VRF セカンダリーネットワークに接続されていることを確認します。Pod とのリモートセッションを開始し、次のコマンドを実行します。予想される出力には、VRF インターフェイスの名前とルーティングテーブル内の一意の ID が表示されます。

    $ ip vrf show
    Copy to Clipboard Toggle word wrap
  3. 次のコマンドを入力して、VRF インターフェイスがセカンダリーインターフェイスのコントローラーであることを確認します。

    $ ip link
    Copy to Clipboard Toggle word wrap
    5: net1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master red state UP mode
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat