7.2. Pod の追加のネットワークへの割り当て
クラスターユーザーとして、Pod を追加のネットワークに割り当てることができます。
7.2.1. Pod の追加ネットワークへの追加
Pod を追加のネットワークに追加できます。Pod は、デフォルトネットワークで通常のクラスター関連のネットワークトラフィックを継続的に送信します。
前提条件
- Pod が追加ネットワークと同じ namespace にあること。
-
oc
として知られる OpenShift コマンドラインインターフェース (CLI) のインストール。 - クラスターにログインする必要があります。
手順
Pod を追加のネットワークに追加するには、以下の手順を実施します。
Pod リソース定義を作成し、
k8s.v1.cni.cncf.io/networks
パラメーターを Pod のmetadata
マッピングに追加します。k8s.v1.cni.cncf.io/networks
は、1 つ以上の NetworkAttachmentDefinition カスタムリソース (CR) 名のカンマ区切りの一覧を受け入れます。metadata: annotations: k8s.v1.cni.cncf.io/networks: <network>[,<network>,...] 1
- 1
<network>
を、Pod に関連付ける追加ネットワークの名前に置き換えます。複数の追加ネットワークを指定するには、各ネットワークをカンマで区切ります。カンマの間にはスペースを入れないでください。同じ追加ネットワークを複数回指定した場合、Pod は複数のネットワークインターフェースをそのネットワークに割り当てます。
以下の例では、2 つの追加のネットワークが Pod に割り当てられます。
apiVersion: v1 kind: Pod metadata: name: example-pod annotations: k8s.v1.cni.cncf.io/networks: net1,net2 spec: containers: - name: example-pod command: ["/bin/bash", "-c", "sleep 2000000000000"] image: centos/tools
以下のコマンドを実行して Pod を作成します。
$ oc create -f pod.yaml
オプション: 以下のコマンドを実行して、アノテーションが Pod CR に存在することを確認します。
<name>
を Pod の名前に置き換えます。$ oc get pod <name> -o yaml
以下の例では、
example-pod
Pod が追加ネットワークの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/networks-status: |- 1 [{ "name": "openshift-sdn", "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: ...
- 1
k8s.v1.cni.cncf.io/networks-status
パラメーターは、オブジェクトの JSON 配列です。各オブジェクトは、Pod に割り当てられる追加のネットワークのステータスについて説明します。アノテーションの値はプレーンテキストの値として保存されます。