このページの目次
JCNR の使用例と構成の概要
概要 この章では、コンテナネットワークインターフェイス(CNI)モードで展開した場合の、Juniper Cloud-Native Routerのさまざまなユースケースの構成例について説明します。
Juniper Cloud-Native Routerは、純粋なコンテナネットワーク機能(CNF)またはコンテナネットワークインターフェイス(CNI)として、仮想スイッチまたはトランジットルーターとして導入できます。CNFモードでは、ノード上でアプリケーションポッドは実行されず、ルーターはネットワーク上のさまざまなインターフェイスを介してパケットスイッチングまたは転送のみを実行します。CNIモードでは、veth-pairやDPDK vhost-userベースのインターフェイスなどのソフトウェアベースのネットワークインターフェイスを使用するアプリケーションポッドが、クラウドネイティブルーターにアタッチされます。この章では、さまざまなワークロードインターフェイスタイプをクラウドネイティブルーターCNIインスタンスにアタッチするための設定例を示します。
設定例
JCNR CNIは、MultusとともにプライマリCNIとしてセカンダリCNIとして導入され、アプリケーションポッド用に異なるタイプのセカンダリインターフェイスを作成します。Multus は、ネットワーク接続定義 (NAD) ファイルを使用して、アプリケーション ポッドのセカンダリ インターフェイスを構成します。NAD は、セカンダリ インターフェイス、IP アドレス割り当て、ネットワーク インスタンスなどの作成方法を指定します。ポッドは 1 つ以上の NAD を持つことができ、通常はポッド インターフェイスごとに 1 つ含めることができます。ザ・config:
NAD ファイルの フィールドは、JCNR CNI 設定を定義します。NAD の一般的な形式を次に示します。
apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: <vrf-name> spec: config: '{ "cniVersion":"0.4.0", "name": "<vrf-name>", "plugins": [ { "type": "jcnr", "args": { "key1":"value1", "key2","value2", .... }, "ipam": { "type": "<ipam-type>", .... }, "kubeConfig":"/etc/kubernetes/kubelet.conf" } ] }'
主な | 説明 |
---|---|
Instancename | ルーティングインスタンス名 |
インスタンスタイプ | 次のいずれかです。 仮想ルーター—VPN に関連しないアプリケーション向け vrf - レイヤー 3 VPN 実装 仮想スイッチ - レイヤー 2 実装 |
インターフェイスタイプ | "veth" または "virtio" のいずれか |
vlanId | 有効な VLAN ID「1-4095」 |
ブリッジVlanId | 有効な VLAN ID「1-4095」 |
vlanIdList | vlan-id で区切られたコマンドのリスト(例: "1, 5, 7, 10-20") |
親インターフェイス | ポッドに表示される有効なインターフェイス名。子/サブインターフェイスのプレフィックスには、親インターフェイスの後に "." が付きます。 parentInterface を指定する場合は、サブインターフェイスを明示的に指定する必要があります。 |
vrfターゲット | vrf ルーティング インスタンスのルートターゲット |
ブリッジドメイン | 仮想スイッチ インスタンスでポッド インターフェイスを接続するブリッジ ドメイン。 |
タイプ (IPAM) | static - すべてのポッドに同じ IP を割り当て、ポッドごとに一意の IP を割り当てます。インターフェイスごとにポッドごとに一意の NAD を定義します。 host-local - 同じホスト上のポッドインターフェイスごとに一意の IP アドレス。IP アドレスは、2 つの異なるノード間で一意ではありません 所在:すべてのノードにわたるポッドごとに一意のIPアドレス |
apiVersion: "k8s.cni.cncf.io/v1" kind: NetworkAttachmentDefinition metadata: name: vswitch-pod1-bd100 spec: config: '{ "cniVersion":"0.4.0", "name": "vswitch-pod1-bd100", "plugins": [ { "type": "jcnr", "args": { "instanceName": "vswitch", "instanceType": "virtual-switch", "interfaceType": "veth", "bridgeDomain": "bd100", "bridgeVlanId": "100" }, "ipam": { "type": "static", "addresses":[ { "address":"99.61.0.2/16", "gateway":"99.61.0.1" }, { "address":"1234::99.61.0.2/120", "gateway":"1234::99.61.0.1" } ] }, "kubeConfig":"/etc/kubernetes/kubelet.conf" } ] }'
k8s.v1.cni.cncf.io/networks
アノテーション。例えば:
apiVersion: v1 kind: Pod metadata: name: pod1 annotations: k8s.v1.cni.cncf.io/networks: vswitch-pod1-bd100 spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - kind-worker containers: - name: pod1 image: ubuntu:latest imagePullPolicy: IfNotPresent securityContext: privileged: false env: - name: KUBERNETES_POD_UID valueFrom: fieldRef: fieldPath: metadata.uid volumeMounts: - name: dpdk mountPath: /dpdk subPathExpr: $(KUBERNETES_POD_UID) volumes: - name: dpdk hostPath: path: /var/run/jcnr/containers
/dpdk/dpdk-interfaces.json
DPDKアプリケーションが使用するアプリケーションコンテナ内。また、ポッド注釈としてポッドにエクスポートされます。
クラウドネイティブルーターで使用するポッドを作成すると、 kubelet と呼ばれるKubernetesコンポーネントがMultus CNIを呼び出して、ポッドネットワークとインターフェイスを設定します。Multus は 、pod.yaml ファイルの注釈セクションを読み取り、対応する NAD を参照します。NAD が CNI プラグインとしてポイント jcnr
している場合、Multus は JCNR-CNI を呼び出してポッド インターフェイスを設定します。JCNR-CNI は、NAD で指定されたインターフェイスを作成します。その後、JCNR-CNIは設定を生成し、cRPDにプッシュします。
トラブルシューティング
ポッドメインはさまざまな理由で起動しません。
-
画像が見つかりません
-
CNI がインターフェイスを追加できませんでした
-
CNI が設定を cRPD にプッシュできませんでした
-
CNI が vRouter REST API を呼び出せませんでした
-
NAD が無効か、未定義です
次のコマンドは、ポッドの問題のトラブルシューティングに役立ちます。
# Check the Pod status kubectl get pods –A
# Check pod state and CNI logs kubectl describe pod <pod-name>
# Check the pod logs kubectl logs pod <pod-name>
# Check the net-attach-def kubectl get net-attach-def <net-attach-def-name> -o yaml
# Check CNI logs tail –f /var/log/jcnr/jcnr-cni.log
# Check the cRPD config added by CNI (on the cRPD CLI) cli> show configuration groups cni