7.2. Pod の追加のネットワークへの割り当て

クラスターユーザーとして、Pod を追加のネットワークに割り当てることができます。

7.2.1. Pod の追加ネットワークへの追加

Pod を追加のネットワークに追加できます。Pod は、デフォルトネットワークで通常のクラスター関連のネットワークトラフィックを継続的に送信します。

前提条件

  • Pod が追加ネットワークと同じ namespace にあること。
  • oc として知られる OpenShift コマンドラインインターフェース (CLI) のインストール。
  • クラスターにログインする必要があります。

手順

Pod を追加のネットワークに追加するには、以下の手順を実施します。

  1. 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
  2. 以下のコマンドを実行して Pod を作成します。

    $ oc create -f pod.yaml
  3. オプション: 以下のコマンドを実行して、アノテーションが 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 に割り当てられる追加のネットワークのステータスについて説明します。アノテーションの値はプレーンテキストの値として保存されます。