第5章 namespace SR-IOV リソースの設定


namespace 付き SriovNetwork リソースを使用すると、アプリケーション所有者は、共有 Operator namespace でクラスター管理者に依存するのではなく、namespace 内で直接独自の SriovNetwork リソースを作成および管理できます。この方法により、権限が簡素化され、セキュリティーが向上し、アプリケーション間の分離が強化されます。

5.1. namespace 付き SriovNetwork リソースの概要

SR-IOV ネットワークは、アプリケーション namespace 内で直接作成および管理できます。この機能により、アプリケーション所有者はネットワーク設定をきめ細かく制御できるようになり、ワークフローが簡素化されます。

このアプローチには、ユーザーエクスペリエンスを向上させるいくつかの重要な利点があります。

  • 自律性と制御性の向上: アプリケーション所有者はネットワーク設定を直接制御できるため、クラスター管理者が代わりに SriovNetwork オブジェクトを作成する必要がなくなります。
  • 強化されたセキュリティー: ユーザーが独自の namespace 内のリソースを管理できるようにすることで、セキュリティーが向上し、アプリケーション間の分離が強化されます。これにより、他のアプリケーションの NetworkAttachmentDefinition オブジェクトの意図しない誤った設定を回避することもできます。
  • 簡素化された権限: SriovNetwork リソースを独自の namespace で直接管理することで、ユーザー権限が簡素化されます。これによりワークフローが合理化され、開発者の運用オーバーヘッドが削減されます。

5.1.1. アプリケーション namespace での SriovNetwork の設定

SriovNetwork カスタムリソース (CR) がアプリケーション namespace にデプロイされる場合、spec.networkNamespace フィールドを定義したり、値を入力したりしないでください。このシナリオでは、NetworkAttachmentDefinition は SriovNetwork CR と同じ namespace に作成されます。

spec.networkNamespace フィールドが定義されている場合、SR-IOV Network Operator の Webhook は、アプリケーション namespace での SriovNetwork リソースの作成を拒否します。

アプリケーション namespace に SriovNetwork リソースを作成し、追加のネットワークに Pod をアタッチするには、次の手順に従ってください。

前提条件

アプリケーション所有者が namespace 付きの SriovNetwork リソースを設定する前に、クラスター管理者が次の手順を完了する必要があります。

  • SR-IOV Network Operator は、openshift-sriov-network-operator namespace にインストールされます。
  • SR-IOV ハードウェアを備えたノードには、Operator がノードを識別できるようにラベルが付けられます。

アプリケーションの所有者には、アプリケーション namespace に対する管理者特権が必要です。

手順

  1. SR-IOV ネットワークノードポリシーを作成して、ノードの SR-IOV ネットワークデバイス設定を指定します。SriovNetworkNodePolicy オブジェクトは、ノードの SR-IOV ネットワークデバイス設定を定義するために、openshift-sriov-network-operator namespace に作成されます。以下は、Intel DPK の設定例です。

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy
    metadata:
      name: intel-dpdk-node-policy
      namespace: openshift-sriov-network-operator
    spec:
      resourceName: intelnics
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: "true"
      priority: 10
      numVfs: 4
      nicSelector:
        vendor: "8086"
        deviceID: "158b"
        pfNames: [""]
      deviceType: netdevice
    Copy to Clipboard Toggle word wrap
  2. アプリケーション namespace を作成します。たとえば、次のコマンドを実行して、sriov-app という名前の namespace を作成します。

    $ cat <<EOF | oc create -f -
    apiVersion: v1
    kind: Namespace
    metadata:
        name: sriov-app
    EOF
    Copy to Clipboard Toggle word wrap
  3. アプリケーション namespace で SriovNetwork オブジェクトを定義するには、YAML ファイル (例: sriovnetwork.yaml) を作成します。

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetwork
    metadata:
      name: test-network
      namespace: sriov-app
    spec:
      resourceName: intelnics
      ipam:
        type: host-local
        subnet: "10.0.0.0/24"
        routes:
          - dst: "0.0.0.0/0"
            gw: "10.0.0.1"
      vlan: 10
    Copy to Clipboard Toggle word wrap
    • namespace: 値はアプリケーション namespace の名前と一致する必要があります (例: sriov-app)。
    • resourceName: この値は、クラスター管理者が作成した SriovNetworkNodePolicy で定義された spec.resourceName (この例では intelnics) と一致する必要があります。
  4. YAML ファイルを適用して、アプリケーション namespace に SriovNetwork オブジェクトを作成します。

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

    アプリケーション所有者が SriovNetwork リソースを作成したら、新しく定義されたネットワークを使用する Pod を作成できます。Pod の YAML マニフェストに特定のアノテーションを追加することで、Pod を追加のネットワークにアタッチします。

  5. 新しいネットワークアタッチメントを使用する Pod を定義する YAML ファイル (例: test-pod.yaml) を作成します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: test-pod
      namespace: sriov-app
      annotations:
        k8s.v1.cni.cncf.io/networks: test-network
    spec:
      containers:
      - name: test-pod-container
        image: centos/tools
        command: ["/bin/bash", "-c", "sleep 3600"]
    Copy to Clipboard Toggle word wrap
    • namespace: Pod が作成される namespace。これは、SriovNetwork オブジェクトが作成される namespace と同じである必要があります。
    • annotations: k8s.v1.cni.cncf.io/networks は、Pod が接続する追加のネットワークを指定します。値は、SriovNetwork オブジェクトの metadata.name と一致する必要があります。
  6. 次のコマンドを実行して、YAML ファイルを適用し、アプリケーション namespace に Pod を作成します。

    $ oc create -f test-pod.yaml
    Copy to Clipboard Toggle word wrap

検証

  1. 次のコマンドを実行して、NetworkAttachmentDefinition が同じ namespace に作成されていることを確認します。

    $ oc get net-attach-def -n sriov-app
    Copy to Clipboard Toggle word wrap

    ここで、sriov-app は、SriovNetwork オブジェクトが作成されるアプリケーション namespace です。

    出力例

    NAME           AGE
    test-network   2m
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドで Pod を記述して、Pod が実行中であることを確認し、そのネットワークステータスを取得します。

    $ oc describe pod test-pod -n sriov-app
    Copy to Clipboard Toggle word wrap

    ここで、sriov-app は Pod が作成されるアプリケーション namespace です。

    出力で、k8s.v1.cni.cncf.io/network-status アノテーションを探します。これには、ネットワークの名前と、そのインターフェイス上の Pod に割り当てられた IP が表示されます。

  3. 次のコマンドを実行して、Pod に追加のネットワークインターフェイスがあることを確認します。

    $ oc exec -it test-pod -n sriov-app -- ip a
    Copy to Clipboard Toggle word wrap

    デフォルトの eth0 インターフェイスに加えて、net1eth1 などのセカンダリーネットワークインターフェイスを探します。net1 インターフェイスには、SriovNetwork オブジェクトで定義したサブネットの IP アドレス (例: 10.0.0.0/24) が必要です。これにより、Pod が新しいネットワークアタッチメント定義を使用していることが確認されます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat