検索

17.11. ハードウェアオフロードの設定

download PDF

クラスター管理者は、互換性のあるノードでハードウェアオフロードを設定して、データ処理パフォーマンスを向上させ、ホスト CPU の負荷を軽減できます。

17.11.1. ハードウェアのオフロードについて

Open vSwitch ハードウェアオフロードは、ネットワークタスクを CPU から迂回させ、ネットワークインターフェイスコントローラー上の専用プロセッサーにオフロードすることにより、ネットワークタスクを処理する方法です。その結果、クラスターは、データ転送速度の高速化、CPU ワークロードの削減、およびコンピューティングコストの削減の恩恵を受けることができます。

この機能の重要な要素は、SmartNIC と呼ばれる最新クラスのネットワークインターフェイスコントローラーです。SmartNIC は、計算量の多いネットワーク処理タスクを処理できるネットワークインターフェイスコントローラーです。専用のグラフィックカードがグラフィックパフォーマンスを向上させるのと同じように、SmartNIC はネットワークパフォーマンスを向上させることができます。いずれの場合も、専用プロセッサーにより、特定のタイプの処理タスクのパフォーマンスが向上します。

OpenShift Container Platform では、互換性のある SmartNIC を持つベアメタルノードのハードウェアオフロードを設定できます。ハードウェアオフロードは、SR-IOV Network Operator によって設定および有効化されます。

ハードウェアのオフロードは、すべてのワークロードまたはアプリケーションタイプと互換性があるわけではありません。次の 2 つの通信タイプのみがサポートされています。

  • pod-to-pod
  • pod-to-service。サービスは通常の Pod に基づく ClusterIP サービスです。

すべての場合において、ハードウェアのオフロードは、それらの Pod とサービスが互換性のある SmartNIC を持つノードに割り当てられている場合にのみ行われます。たとえば、ハードウェアをオフロードしているノードの Pod が、通常のノードのサービスと通信しようとしているとします。通常のノードでは、すべての処理がカーネルで行われるため、Pod からサービスへの通信の全体的なパフォーマンスは、その通常のノードの最大パフォーマンスに制限されます。ハードウェアオフロードは、DPDK アプリケーションと互換性がありません。

ノードでのハードウェアのオフロードを有効にし、使用する Pod を設定しないと、Pod トラフィックのスループットパフォーマンスが低下する可能性があります。OpenShift Container Platform で管理される Pod のハードウェアオフロードを設定することはできません。

17.11.2. サポートされるデバイス

ハードウェアオフロードは、次のネットワークインターフェイスコントローラーでサポートされています。

表17.15 サポート対象のネットワークインターフェイスコントローラー
製造元モデルベンダー IDデバイス ID

Mellanox

MT27800 Family [ConnectX‑5]

15b3

1017

Mellanox

MT28880 Family [ConnectX‑5 Ex]

15b3

1019

17.11.3. 前提条件

17.11.4. ハードウェアオフロード用のマシン設定プールの設定

ハードウェアオフロードを有効にするには、最初に専用のマシン設定プールを作成し、SR-IOV Network Operator と連携するように設定する必要があります。

前提条件

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

手順

  1. ハードウェアオフロードを使用するマシンのマシン設定プールを作成します。

    1. 次の例のようなコンテンツを含む mcp-offloading.yaml などのファイルを作成します。

      apiVersion: machineconfiguration.openshift.io/v1
      kind: MachineConfigPool
      metadata:
        name: mcp-offloading 1
      spec:
        machineConfigSelector:
          matchExpressions:
            - {key: machineconfiguration.openshift.io/role, operator: In, values: [worker,mcp-offloading]} 2
        nodeSelector:
          matchLabels:
            node-role.kubernetes.io/mcp-offloading: "" 3
      1 2
      ハードウェアオフロード用のマシン設定プールの名前。
      3
      このノードロールラベルは、マシン設定プールにノードを追加するために使用されます。
    2. マシン設定プールの設定を適用します。

      $ oc create -f mcp-offloading.yaml
  2. マシン設定プールにノードを追加します。プールのノードロールラベルで各ノードにラベルを付けます。

    $ oc label node worker-2 node-role.kubernetes.io/mcp-offloading=""
  3. オプション: 新しいプールが作成されたことを確認するには、次のコマンドを実行します。

    $ oc get nodes

    出力例

    NAME       STATUS   ROLES                   AGE   VERSION
    master-0   Ready    master                  2d    v1.23.3+d99c04f
    master-1   Ready    master                  2d    v1.23.3+d99c04f
    master-2   Ready    master                  2d    v1.23.3+d99c04f
    worker-0   Ready    worker                  2d    v1.23.3+d99c04f
    worker-1   Ready    worker                  2d    v1.23.3+d99c04f
    worker-2   Ready    mcp-offloading,worker   47h   v1.23.3+d99c04f
    worker-3   Ready    mcp-offloading,worker   47h   v1.23.3+d99c04f

  4. このマシン設定プールを SriovNetworkPoolConfig カスタムリソースに追加します。

    1. 次の例のようなコンテンツを含むファイル (sriov-pool-config.yamlなど) を作成します。

      apiVersion: sriovnetwork.openshift.io/v1
      kind: SriovNetworkPoolConfig
      metadata:
        name: sriovnetworkpoolconfig-offload
        namespace: openshift-sriov-network-operator
      spec:
        ovsHardwareOffloadConfig:
          name: mcp-offloading 1
      1
      ハードウェアオフロード用のマシン設定プールの名前。
    2. 設定を適用します。

      $ oc create -f <SriovNetworkPoolConfig_name>.yaml
      注記

      SriovNetworkPoolConfig オブジェクトで指定された設定を適用すると、SR-IOV Operator は、マシン設定プール内のノードをドレインして再起動します。

      設定の変更が適用されるまでに数分かかる場合があります。

17.11.5. SR-IOV ネットワークノードポリシーの設定

SR-IOV ネットワークノードポリシーを作成することにより、ノードの SR-IOV ネットワークデバイス設定を作成できます。ハードウェアオフロードを有効にするには、値 "switchdev" を使用して .spec.eSwitchMode フィールドを定義する必要があります。

次の手順では、ハードウェアをオフロードするネットワークインターフェイスコントローラー用の SR-IOV インターフェイスを作成します。

前提条件

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

手順

  1. 次の例のようなコンテンツを含むファイル (sriov-node-policy.yamlなど) を作成します。

    apiVersion: sriovnetwork.openshift.io/v1
    kind: SriovNetworkNodePolicy
    metadata:
      name: sriov-node-policy <.>
      namespace: openshift-sriov-network-operator
    spec:
      deviceType: netdevice <.>
      eSwitchMode: "switchdev" <.>
      nicSelector:
        deviceID: "1019"
        rootDevices:
        - 0000:d8:00.0
        vendor: "15b3"
        pfNames:
        - ens8f0
      nodeSelector:
        feature.node.kubernetes.io/network-sriov.capable: "true"
      numVfs: 6
      priority: 5
      resourceName: mlxnics

    <.> カスタムリソースオブジェクトの名前。<.> 必須。ハードウェアのオフロードは vfio-pci ではサポートされていません。<.> 必須。

  2. ポリシーの設定を適用します。

    $ oc create -f sriov-node-policy.yaml
    注記

    SriovNetworkPoolConfig オブジェクトで指定された設定を適用すると、SR-IOV Operator は、マシン設定プール内のノードをドレインして再起動します。

    設定の変更が適用されるまでに数分かかる場合があります。

17.11.6. ネットワーク接続定義の作成

マシン設定プールと SR-IOV ネットワークノードポリシーを定義した後、指定したネットワークインターフェイスカードのネットワーク接続定義を作成できます。

前提条件

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

手順

  1. 次の例のようなコンテンツを含むファイル (net-attach-def.yamlなど) を作成します。

    apiVersion: "k8s.cni.cncf.io/v1"
    kind: NetworkAttachmentDefinition
    metadata:
      name: net-attach-def <.>
      namespace: net-attach-def <.>
      annotations:
        k8s.v1.cni.cncf.io/resourceName: openshift.io/mlxnics <.>
    spec:
      config: '{"cniVersion":"0.3.1","name":"ovn-kubernetes","type":"ovn-k8s-cni-overlay","ipam":{},"dns":{}}'

    <.> ネットワーク接続定義の名前。<.> ネットワーク接続定義の namespace。<.> これは、SriovNetworkNodePolicy オブジェクトで指定した spec.resourceName フィールドの値です。

  2. ネットワーク接続定義の設定を適用します。

    $ oc create -f net-attach-def.yaml

検証

  • 次のコマンドを実行して、新しい定義が存在するかどうかを確認します。

    $ oc get net-attach-def -A

    出力例

    NAMESPACE         NAME             AGE
    net-attach-def    net-attach-def   43h

17.11.7. ネットワーク接続定義を Pod へ追加

マシン設定プール、SriovNetworkPoolConfig および SriovNetworkNodePolicy カスタムリソース、およびネットワーク接続定義を作成した後、ネットワーク接続定義を Pod 仕様に追加することにより、これらの設定を Pod に適用できます。

手順

  • Pod 仕様で、.metadata.annotations.k8s.v1.cni.cncf.io/networks フィールドを追加し、ハードウェアオフロード用に作成したネットワーク接続定義を指定します。

    ....
    metadata:
      annotations:
        v1.multus-cni.io/default-network: net-attach-def/net-attach-def <.>

    <.> 値は、ハードウェアオフロード用に作成したネットワーク接続定義の名前と namespace である必要があります。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.