3.6. セカンダリーネットワークに Pod を追加する
OpenShift Container Platform で Pod が追加のネットワークインターフェイスを使用できるようにするには、Pod をセカンダリーネットワークに接続します。Pod は、デフォルトネットワークで通常のクラスター関連のネットワークトラフィックを継続的に送信します。
Pod が作成されると、セカンダリーネットワークがその Pod に接続されます。ただし、Pod がすでに存在する場合は、セカンダリーネットワークをその Pod にアタッチすることはできません。
Pod はセカンダリーネットワークと同じ namespace に存在する必要があります。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 - クラスターにログインする。
手順
アノテーションを
Podオブジェクトに追加します。以下のアノテーション形式のいずれかのみを使用できます。カスタマイズせずにセカンダリーネットワークをアタッチするには、次の形式でアノテーションを追加します。
metadata: annotations: k8s.v1.cni.cncf.io/networks: <network>[,<network>,...]ここでは、以下のようになります。
k8s.v1.cni.cncf.io/networks- Pod に関連付けるセカンダリーネットワークの名前を指定します。複数のセカンダリーネットワークを指定するには、各ネットワークをコンマで区切ります。コンマの間にはスペースを入れないでください。同じセカンダリーネットワークを複数回指定した場合、Pod は複数のネットワークインターフェイスをそのネットワークにアタッチします。
カスタマイズしてセカンダリーネットワークをアタッチするには、次の形式でアノテーションを追加します。
metadata: annotations: k8s.v1.cni.cncf.io/networks: |- [ { "name": "<network>", "namespace": "<namespace>", "default-route": ["<default_route>"] } ]ここでは、以下のようになります。
<network>-
NetworkAttachmentDefinitionオブジェクトによって定義されたセカンダリーネットワークの名前を指定します。 <namespace>-
NetworkAttachmentDefinitionオブジェクトが定義される namespace を指定します。 < デフォルトルート >-
オプションのパラメーター。デフォルトルートのオーバーライドを指定します (
192.168.17.1など)。
以下のコマンドを入力して Pod を作成します。
$ oc create -f <name>.yaml<name>を Pod の名前に置き換えます。オプション: 以下のコマンドを入力して、アノテーションが
podCR に存在することを確認します。<name>を Pod の名前に置き換えます。$ oc get pod <name> -o yaml次の例では、
example-podPod がnet1セカンダリーネットワークにアタッチされています。$ oc get pod example-pod -o yaml apiVersion: v1 kind: Pod metadata: annotations: k8s.v1.cni.cncf.io/networks: macvlan-bridge k8s.v1.cni.cncf.io/network-status: |- [{ "name": "ovn-kubernetes", "interface": "eth0", "ips": [ "10.128.2.14" ], "default": true, "dns": {} },{ "name": "macvlan-bridge", "interface": "net1", "ips": [ "20.2.2.100" ], "mac": "22:2f:60:a5:f8:00", "dns": {} }] name: example-pod namespace: default spec: ... status: ...ここでは、以下のようになります。
k8s.v1.cni.cncf.io/network-status- オブジェクトの JSON 配列を指定します。各オブジェクトは、Pod にアタッチされているセカンダリーネットワークのステータスを表します。アノテーションの値はプレーンテキストの値として保存されます。
3.6.1. vfio-pci SR-IOV デバイスの MTU を Pod に公開する リンクのコピーリンクがクリップボードにコピーされました!
追加のネットワークに Pod を追加した後、SR-IOV ネットワークで MTU が使用可能であることを確認できます。
手順
次のコマンドを実行して、Pod アノテーションに MTU が含まれていることを確認します。
$ oc describe pod example-pod次の例はサンプル出力を示しています。
"mac": "20:04:0f:f1:88:01", "mtu": 1500, "dns": {}, "device-info": { "type": "pci", "version": "1.1.0", "pci": { "pci-address": "0000:86:01.3" } }次のコマンドを実行して、Pod 内の
/etc/podnetinfo/で MTU が使用可能であることを確認します。$ oc exec example-pod -n sriov-tests -- cat /etc/podnetinfo/annotations | grep mtu次の例はサンプル出力を示しています。
k8s.v1.cni.cncf.io/network-status="[{ \"name\": \"ovn-kubernetes\", \"interface\": \"eth0\", \"ips\": [ \"10.131.0.67\" ], \"mac\": \"0a:58:0a:83:00:43\", \"default\": true, \"dns\": {} },{ \"name\": \"sriov-tests/sriov-nic-1\", \"interface\": \"net1\", \"ips\": [ \"192.168.10.1\" ], \"mac\": \"20:04:0f:f1:88:01\", \"mtu\": 1500, \"dns\": {}, \"device-info\": { \"type\": \"pci\", \"version\": \"1.1.0\", \"pci\": { \"pci-address\": \"0000:86:01.3\" } } }]"