This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.6.3. 追加のネットワークインターフェースの作成
Pod の追加インターフェースは、カスタムリソース (CR) として保存される CNI 設定で定義されます。これらの CR は、oc
ツールを使用して作成し、一覧表示し、編集し、削除できます。
以下の手順は、Pod に macvlan
インターフェースを設定します。この設定は、すべての実稼働環境に適用されない可能性がありますが、他の CNI プラグインに同じ手順を使用できます。
6.3.1. 追加インターフェースの CNI 設定の CR としての作成 リンクのコピーリンクがクリップボードにコピーされました!
追加インターフェースを Pod に割り当てる必要がある場合、インターフェースを定義する CR は Pod と同じプロジェクト (namespace) に置かれる必要があります。
CNI 設定を CR として保存するプロジェクト、およびその CR を使用する Pod を作成します。
oc new-project multinetwork-example
$ oc new-project multinetwork-example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 追加のネットワークインターフェースを定義する CR を作成します。以下の内容を含む、
macvlan-conf.yaml
という YAML ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定はプラグインに固有のものです。CNI 設定部分の
type
行に注意してください。CNI 設定の部分のtype
行をメモしてください。 この例では、ネットワーク用の IPAM (IP アドレス管理) パラメーターのほかに、master
フィールドは、Pod をホストするノードにあるネットワークインターフェースを参照する必要があります。以下のコマンドを実行して CR を作成します。
oc create -f macvlan-conf.yaml
$ oc create -f macvlan-conf.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
この例は、macvlan
CNI プラグインをベースにしています。AWS 環境では、macvlan トラフィックはフィルターされる可能性があるため、必要な宛先に到達しない可能性があります。
6.3.2. 追加インターフェースの CR の管理 リンクのコピーリンクがクリップボードにコピーされました!
追加インターフェースの CR は、oc
CLI を使用して管理できます。
以下のコマンドを使用して、追加リソースの CR を一覧表示します。
oc get network-attachment-definitions.k8s.cni.cncf.io
$ oc get network-attachment-definitions.k8s.cni.cncf.io
以下のコマンドを使用して、追加インターフェースの CR を削除します。
oc delete network-attachment-definitions.k8s.cni.cncf.io macvlan-conf
$ oc delete network-attachment-definitions.k8s.cni.cncf.io macvlan-conf
6.3.3. CR を使用するアノテーション付き Pod の作成 リンクのコピーリンクがクリップボードにコピーされました!
追加インターフェースを使用する Pod を作成するには、CR を参照するアノテーションを使用します。以下の内容を含む Pod についての samplepod.yaml
という YAML ファイルを作成します。
- 1
annotations
フィールドには、k8s.v1.cni.cncf.io/networks: macvlan-conf
が含まれます。 これは、先に定義した CR のname
フィールドに相関します。
以下のコマンドを実行して samplepod
Pod を作成します。
oc create -f samplepod.yaml
$ oc create -f samplepod.yaml
追加のネットワークインターフェースが作成され、Pod に割り当てられているのを確認するには、以下のコマンドを使用して IPv4 アドレス情報を一覧表示します。
oc exec -it samplepod -- ip -4 addr
$ oc exec -it samplepod -- ip -4 addr
3 つのインターフェースが出力に一覧表示されます。
6.3.3.1. 複数インターフェースの Pod への割り当て リンクのコピーリンクがクリップボードにコピーされました!
複数の追加インターフェースを Pod に割り当てるには、複数の名前を、Pod 定義の annotations
フィールドにカンマ区切りの形式で指定します。
Pod 定義の以下の annotations
フィールドは、追加インターフェースの複数の異なる CR を指定します。
annotations: k8s.v1.cni.cncf.io/networks: macvlan-conf, tertiary-conf, quaternary-conf
annotations:
k8s.v1.cni.cncf.io/networks: macvlan-conf, tertiary-conf, quaternary-conf
Pod 定義の以下の annotations
フィールドは、追加インターフェースに同じ CR を指定します。
annotations: k8s.v1.cni.cncf.io/networks: macvlan-conf, macvlan-conf
annotations:
k8s.v1.cni.cncf.io/networks: macvlan-conf, macvlan-conf
6.3.4. 実行中の Pod のインターフェース設定の表示 リンクのコピーリンクがクリップボードにコピーされました!
Pod の実行後に、作成された追加インターフェースの設定を確認できます。先の例と同じ Pod を表示するには、以下のコマンドを実行します。
oc describe pod samplepod
$ oc describe pod samplepod
出力の metadata
セクションには、JSON 形式で表示されるアノテーションの一覧が含まれます。
最初のアノテーション k8s.v1.cni.cncf.io/networks: macvlan-conf
は、例で作成された CR を参照します。このアノテーションは Pod 定義で指定されています。
2 つ目のアノテーションは、 k8s.v1.cni.cncf.io/networks-status
です。k8s.v1.cni.cncf.io/networks-status
には 2 つのインターフェースが一覧表示されます。
-
最初のインターフェースは、デフォルトネットワーク
openshift-sdn
のインターフェースを記述します。このインターフェースはeth0
として作成されます。これは、クラスター内の通信に使用されます。 -
2 つ目のインターフェースは、作成した追加インターフェース
net1
です。上記の出力は、Pod に割り当てられた IP アドレスなど、インターフェースの作成時に設定されたいくつかのキーの値を一覧表示しています。