ジュニパークラウドネイティブルーターのインストール
概要 ジュニパークラウドネイティブルーター(JCNR)は、JCNR-Controller(cRPDベースのコントロールプレーン)と JCNR-CNIを使用して、コントロールプレーン機能とコンテナネットワークインターフェイスを提供します。ジュニパークラウドネイティブルーターは、DPDK対応のvRouterを使用して、ハイパフォーマンスなデータプレーン機能とSyslog-NGを提供し、通知機能を提供します。このセクションでは、クラウドネイティブルーターのこれらのコンポーネントをインストールする方法について説明します。
JCNR-Controller(cRPD)は、クラウドネイティブルーターにコントロールプレーン機能を提供する初期化コンテナです。制御プレーンは、ジュニパークラウドネイティブルーターで使用されるワークロードインターフェイスとファブリックインターフェイスのプロビジョニングを担当します。また、gRPC 接続を介して vRouter エージェントおよび vRouter 自体との通信も管理します。
JCNR-CNIは、Juniper Cloud-Nativeルーターが、インストール内のサーバーおよびポッドおよびコンテナネットワークインターフェイス上の物理インターフェイスとの通信に使用するコンテナネットワークインターフェイスです。
ジュニパークラウドネイティブルーター仮想ルーター(vRouter)は、高度な転送プレーン機能を提供するコンテナアプリケーションセットです。ネットワークを物理ルーターやスイッチから、仮想サーバーでホストされる仮想オーバーレイ ネットワークに拡張します。データ プレーン開発キット(DPDK)により、vRouter は、vRouter がカーネル モジュールとして実行される場合よりも多くのパケットを 1 秒あたりに処理できます。
Syslog-NGは、ジュニパークラウドネイティブルーターが、クラウドネイティブルーターの導入で発生するイベントに関する通知をユーザーに提供できるようにするコンテナアプリケーションです。
Helm Chartを使用したジュニパークラウドネイティブルーターのインストール
このセクションでは、クラウドネイティブルーターイメージコンポーネントをDockerにロードし、Helmチャートを使用してクラウドネイティブルーターコンポーネントをインストールするために必要な手順について説明します。
システム リソース要件で説明したように、Juniper Cloud-Native Router コンポーネントをインストールする前に、Kubernetes の Helm パッケージ マネージャーをインストールする必要があります。
パッケージをダウンロードしてソフトウェアをインストールする必要がある特定のパスは提供していません。そのため、本書全体に示されているコマンドをコピーして、サーバーの CLI に貼り付けることができます。
ジュニパークラウドネイティブルーターのインストールの概要は次のとおりです。
- ソフトウェアインストールパッケージをダウンロードする(タールボール)
- インストールのニーズに合わせて values.yaml ファイルを編集します。
- ジュニパークラウドネイティブルーターのインストール
上記の各大まかな手順は次のとおりです。
- tarball Juniper_Cloud_Native_Router_22.2.tgz を、ご希望のディレクトリにダウンロードしてください。
サーバー上の書き込み可能なディレクトリにタールボールを入れる方法はあなた次第です。圧縮 tar ファイルが正しく展開されるように、ファイル転送をバイナリ モードで実行する必要があります。
- ファイル
Juniper_Cloud_Native_Router_22.2.tgz
を展開します。tar xzvf Juniper_Cloud_Native_Router_22.2.tgz
Juniper_Cloud_Native_Router_22.2/ Juniper_Cloud_Native_Router_22.2/secrets/ Juniper_Cloud_Native_Router_22.2/secrets/jcnr-secrets.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/ Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/ Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/Chart.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/values.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/ Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-vrouter/ Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-vrouter/.helmignore Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-vrouter/Chart.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-vrouter/templates/ Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-vrouter/templates/_helpers.tpl Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-vrouter/templates/jcnrvrouter_cleanup.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-vrouter/templates/vrouter.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-vrouter/values.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-vrouter/README.md Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/syslog-ng/ Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/syslog-ng/.helmignore Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/syslog-ng/Chart.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/syslog-ng/files/ Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/syslog-ng/files/syslog-ng.conf Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/syslog-ng/templates/ Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/syslog-ng/templates/_helpers.tpl Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/syslog-ng/templates/syslog.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/syslog-ng/templates/syslog-config.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/syslog-ng/values.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-cni/ Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-cni/.helmignore Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-cni/Chart.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-cni/files/ Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-cni/files/jcnr-cni-config.tmpl Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-cni/templates/ Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-cni/templates/_helpers.tpl Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-cni/templates/jcnr-config.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-cni/templates/jcnr_cleanup.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-cni/templates/jcnr.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-cni/templates/jcnr-nad.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-cni/values.yaml Juniper_Cloud_Native_Router_22.2/helm_charts/jcnr/charts/jcnr-cni/README.md Juniper_Cloud_Native_Router_22.2/contrail-tools/ Juniper_Cloud_Native_Router_22.2/contrail-tools/contrail-tools.yaml Juniper_Cloud_Native_Router_22.2/images/ Juniper_Cloud_Native_Router_22.2/images/jcnr-cni-images.tar.gz Juniper_Cloud_Native_Router_22.2/images/jcnr-vrouter-images.tar.gz Juniper_Cloud_Native_Router_22.2/images/syslog-ng-images.tar.gz Juniper_Cloud_Native_Router_22.2/README.md
- ディレクトリを Juniper_Cloud_Native_Router_22.2 に変更する
cd Juniper_Cloud_Native_Router_22.2
メモ:インストール済み環境の残りのステップはすべて、現在の作業ディレクトリーが Juniper_Cloud_Native_Router_22.2 であることを前提としています。
- イメージ ファイル、
jcnr-cni-images.tar.gz
jcnr-vrouter-images.tar.gz、syslog-ng-images.tar.gz を docker に読み込みます。イメージ ファイルは、前のステップでタールボールを展開した場所と相対的に、Juniper_Cloud_Native_Router_22.2/images ディレクトリにあります。docker load -i images/jcnr-cni-images.tar.gz
94c4181ae7dd: Loading layer [==================================================>] 524.2MB/524.2MB Loaded image: svl-artifactory.juniper.net/junos-docker-local/warthog/crpd:22.2R1-S1.5 86441b6792e3: Loading layer [==================================================>] 160.3kB/160.3kB 2f858df19dda: Loading layer [==================================================>] 26.74MB/26.74MB dc5b9d2f0f0a: Loading layer [==================================================>] 7.68kB/7.68kB Loaded image: svl-artifactory.juniper.net/junos-docker-local/warthog/jcnr-cni:20220810-f753972 67e3ffed6327: Loading layer [==================================================>] 11.26kB/11.26kB Loaded image: svl-artifactory.juniper.net/junos-docker-local/warthog/crpdconfig-generator:v3 Loaded image: svl-artifactory.juniper.net/atom_virtual_docker/busybox:latest
docker load -i images/jcnr-vrouter-images.tar.gz
50244b5caf0a: Loading layer [==================================================>] 3.584kB/3.584kB 4793f35d3ae7: Loading layer [==================================================>] 5.632kB/5.632kB f1697a784d3d: Loading layer [==================================================>] 3.584kB/3.584kB 9d6c27fd1364: Loading layer [==================================================>] 28.79MB/28.79MB 877da3dd69a5: Loading layer [==================================================>] 11.26kB/11.26kB f3519070976e: Loading layer [==================================================>] 1.396MB/1.396MB 145f8619ed40: Loading layer [==================================================>] 183.5MB/183.5MB d4fe4ae73ff1: Loading layer [==================================================>] 6.812MB/6.812MB 9a9e214f9045: Loading layer [==================================================>] 2.467MB/2.467MB 2c026bac5448: Loading layer [==================================================>] 41.59MB/41.59MB 8f873ca42faf: Loading layer [==================================================>] 40.13MB/40.13MB b6e9fea633a7: Loading layer [==================================================>] 72.19kB/72.19kB 19234c4cbb31: Loading layer [==================================================>] 498.2kB/498.2kB f9c52ee9be26: Loading layer [==================================================>] 18.66MB/18.66MB Loaded image: svl-artifactory.juniper.net/atom-docker/cn2/bazel-build/dev/contrail-vrouter-agent:JCNR-22.2-20 8d7366c22fd8: Loading layer [==================================================>] 3.697MB/3.697MB a93413564615: Loading layer [==================================================>] 18.29MB/18.29MB 415be476c298: Loading layer [==================================================>] 1.352MB/1.352MB e83d4114481d: Loading layer [==================================================>] 2.365MB/2.365MB 623e9ce88f39: Loading layer [==================================================>] 2.81MB/2.81MB f4e7db2826f6: Loading layer [==================================================>] 54.39MB/54.39MB Loaded image: svl-artifactory.juniper.net/atom-docker/cn2/bazel-build/dev/contrail-vrouter-kernel-init-dpdk:JCNR-22.2-20 4aa40b94fdb4: Loading layer [==================================================>] 5.632kB/5.632kB 2079da3dd3ea: Loading layer [==================================================>] 250.6MB/250.6MB 5f6b6a83bbc2: Loading layer [==================================================>] 22.02kB/22.02kB 3c479d39cdd2: Loading layer [==================================================>] 13.82kB/13.82kB a8e86ba6a002: Loading layer [==================================================>] 9.216kB/9.216kB ce903f8e71cc: Loading layer [==================================================>] 25.03MB/25.03MB 8b94a98d6508: Loading layer [==================================================>] 372.5MB/372.5MB Loaded image: svl-artifactory.juniper.net/atom-docker/cn2/bazel-build/dev/contrail-tools:JCNR-22.2-20 Loaded image: svl-artifactory.juniper.net/atom_virtual_docker/busybox:latest Loaded image: svl-artifactory.juniper.net/junos-docker-local/warthog/busybox:latest Loaded image: svl-artifactory.juniper.net/atom-docker/cn2/bazel-build/dev/contrail-telemetry-exporter:JCNR-22.2-20 cfd97936a580: Loading layer [==================================================>] 1.455MB/1.455MB Loaded image: svl-artifactory.juniper.net/atom-docker/cn2/bazel-build/dev/busybox:latest 1e7fbcfd6526: Loading layer [==================================================>] 6.144kB/6.144kB 1b2e64d61760: Loading layer [==================================================>] 182.2MB/182.2MB c58c4d0e394a: Loading layer [==================================================>] 68.61kB/68.61kB ae3bac1d08f4: Loading layer [==================================================>] 4.608kB/4.608kB 173cf86d714f: Loading layer [==================================================>] 720.9kB/720.9kB 7c5fc69220bb: Loading layer [==================================================>] 4.608kB/4.608kB fc23189a25c0: Loading layer [==================================================>] 4.608kB/4.608kB 9e4ba1a88748: Loading layer [==================================================>] 44.09MB/44.09MB 999a87d50c2c: Loading layer [==================================================>] 54.22MB/54.22MB b7247dc2bdc4: Loading layer [==================================================>] 478.7kB/478.7kB Loaded image: svl-artifactory.juniper.net/atom-docker/cn2/bazel-build/dev/contrail-vrouter-dpdk:JCNR-22.2-20 e94ef981fc21: Loading layer [==================================================>] 63.51MB/63.51MB Loaded image: svl-artifactory.juniper.net/atom-docker/cn2/bazel-build/dev/contrail-k8s-crdloader:JCNR-22.2-20 Loaded image: svl-artifactory.juniper.net/atom-docker/cn2/bazel-build/dev/contrail-k8s-applier:JCNR-22.2-20 a5af639475d7: Loading layer [==================================================>] 59.58MB/59.58MB Loaded image: svl-artifactory.juniper.net/atom-docker/cn2/bazel-build/dev/contrail-k8s-deployer:JCNR-22.2-20 da2cd5786adc: Loading layer [==================================================>] 62.68MB/62.68MB Loaded image: svl-artifactory.juniper.net/atom-docker/cn2/bazel-build/dev/contrail-init:JCNR-22.2-20
docker load -i images/syslog-ng-images.tar.gz
Loaded image: svl-artifactory.juniper.net/contrail-docker/syslog-ng:v6
- ホスト サーバーと Juniper Cloud-Native Router ライセンス ファイルの root パスワードを secrets/jcnr-secrets.yaml ファイルに入力します。
base64エンコード形式でパスワードとライセンスを入力する必要があります。パスワードをエンコードするには、単一行のプレーンテキストパスワードのみを持つファイルを作成します。その後、 コマンドを発行します。
base64 rootPasswordFile
出力は、次のようなランダムに見えるテキストの 1 行です。UGFzc3cwcmQhCg==
ライセンス ファイルをエンコードするには、ファイルをホスト サーバーにコピーし、 コマンドを発行しますbase64 licenseFile
出力は、次のようなランダムに見えるテキストの長い 1 行です。VGhpcyBpcyBhIHJlYWxseSBtdWNoIGxvbmdlciB0ZXh0IGZpbGUgdGhhdCBpbmNsdWRlcyBsaWNlbnNlIGluZm9ybWF0aW9uCkFTREZERktERktIQUxHS0hiYW9qa2hkZmFzZGZOS0FTREdOR0FKYWRzZmxodmFibmRzZmdramh2Ym5ramFzZnVxYmF1amgyMDEwdGIydDQweGtqYjR3eTB1dmRxd3J2MGl3aGV0Ymd1YnMwcWRqZmhkc2tqdmJkc2ZramhkdmFkZnNiO2d2a2pzZGI7aWRzamc7ZmFzZGhma2pkc2J2YWlzdWRmZ3dFWUlUR1ZCMzlWRVlCVjM0OVVHQlZHQlFVOUFXR1ZJQkVSV0c5VUJWV0U5Rwo=
メモ:アカウント チームからライセンス ファイルを取得し、上記の指示に従って secrets.yaml ファイルにインストールする必要があります。 secrets.yaml ファイルに base64 エンコードされたライセンス ファイルと root パスワードが適切ではない場合、cRPD ポッドは実行中の状態になりませんが、CrashLoopBackOff 状態のままです。
base64 出力をコピーして、適切な場所にある secrets/jcnr-secrets.yaml ファイルに貼り付ける必要があります。 - K8s システムにシークレット/jcnr-secrets.yaml を適用する
kubectl apply -f secrets/jcnr-secrets.yaml
- helm_charts/jcnr/values.yaml ファイルを編集します。
Juniper Cloud-Native Router をインストールするには、Helm チャートをカスタマイズする必要があります。
-
ファブリックインターフェイスの選択 - ホストシステムのインターフェイス名を使用する
-
トランク インターフェイスの VLAN ID リストを作成する - ネットワークに適合する VLAN ID を使用します。
-
ファブリックワークロードインターフェイスの選択 - ホストシステムからインターフェイス名を使用する
-
ワークロード インターフェイス上のトラフィックの VLAN ID を設定します。
-
JCNR-vRouter ロギングの重大度レベルを設定する
メモ:JTAC から変更を指示されない限り、log_levelを INFO に設定したままにします。
-
cpu コア マスクと物理コア、論理コアを設定します。
-
ファブリックインターフェイスの選択 - ホストシステムのインターフェイス名を使用する
-
ワークロードインターフェイスの選択 - ホストシステムのインターフェイス名を使用する
-
ブロードキャストおよびマルチキャスト トラフィックのレート制限をバイト/秒で設定する
-
通知を保存する syslog-ng の書き込み可能なディレクトリの場所を設定する
-
(オプション)bondインターフェイスを として
fabricInterface:
指定した場合、 セクションの下でシステムから名前をbondInterfaceConfigs:
指定slaveInterface
します。 -
デフォルト
restoreInterface
では false に設定されています。この設定により、vrouterポッドがクラッシュまたは削除された場合、インターフェイスはホストに復元されません。
デフォルトのhelm_charts/jcnr/values.yaml ファイルのコメント付き例については、「 サンプル設定ファイル」を参照してください。
-
- Helmを使用したジュニパークラウドネイティブルーターの導入
helm install jcnr .
NAME: jcnr LAST DEPLOYED: Mon Aug 15 14:29:41 2022 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None
- ジュニパークラウドネイティブルーターの導入を確認する
helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION jcnr default 1 2022-08-17 18:51:18.472130634 -0700 PDT deployed jcnr-22.2.0 22.2.0
コンテナの動作検証
kubectl get pods -A
コマンドのkubectl
出力には、すべての名前空間にあるK8sクラスター内のすべてのポッドが表示されます。導入が成功すると、すべてのポッドで実行中の状態が表示されます。この例では、ジュニパークラウドネイティブルーターポッドを 太字でマークしています。例えば:kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE contrail-deploy contrail-k8s-deployer-7b5dd699b9-nd7xf 1/1 Running 0 41m contrail contrail-vrouter-masters-dfxgm 3/3 Running 0 41m default delete-crpd-dirs--1-6jmxz 0/1 Completed 0 43m default delete-vrouter-dirs--1-645dt 0/1 Completed 0 43m kube-system calico-kube-controllers-57b9767bdb-5wbj6 1/1 Running 2 (92d ago) 129d kube-system calico-node-j4m5b 1/1 Running 2 (92d ago) 129d kube-system coredns-8474476ff8-fpw78 1/1 Running 2 (92d ago) 129d kube-system dns-autoscaler-7f76f4dd6-q5vdp 1/1 Running 2 (92d ago) 129d kube-system kube-apiserver-5a5s5-node2 1/1 Running 3 (92d ago) 129d kube-system kube-controller-manager-5a5s5-node2 1/1 Running 4 (92d ago) 129d kube-system kube-crpd-worker-ds-8tnf7 1/1 Running 0 41m kube-system kube-multus-ds-amd64-4zm5k 1/1 Running 2 (92d ago) 129d kube-system kube-proxy-l6xm8 1/1 Running 2 (92d ago) 129d kube-system kube-scheduler-5a5s5-node2 1/1 Running 4 (92d ago) 129d kube-system nodelocaldns-6kwg5 1/1 Running 2 (92d ago) 129d kube-system syslog-ng-54749b7b77-v24hq 1/1 Running 0 41m
kubectl get ds -A
kubectl get ds -A コマンドを使用して、デーモンセットコンテナのリストを取得します。kubectl get ds -A
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE contrail contrail-vrouter-masters 1 1 1 1 1 node-role.kubernetes.io/master= 43m kube-system calico-node 1 1 1 1 1 kubernetes.io/os=linux 129d kube-system kube-crpd-worker-ds 1 1 1 1 1 <none> 43m kube-system kube-multus-ds-amd64 1 1 1 1 1 kubernetes.io/arch=amd64 129d kube-system kube-proxy 1 1 1 1 1 kubernetes.io/os=linux 129d kube-system nodelocaldns 1 1 1 1 1 kubernetes.io/os=linux 129d