安装瞻博网络云原生路由器
总结 瞻博网络云原生路由器(云原生路由器)使用 JCNR-Controller(基于 cRPD 的控制平面)和 JCNR-CNI 提供控制平面功能和容器网络接口。瞻博网络云原生路由器使用支持 DPDK 的 vRouter 提供高性能数据平面功能,使用 Syslog-NG 提供通知功能。本节介绍如何安装云原生路由器的这些组件。
JCNR 控制器 (cRPD) 是一个初始化容器,可为云原生路由器提供控制平面功能。控制平面负责调配瞻博网络云原生路由器中使用的工作负载和交换矩阵接口。它还通过 gRPC 连接管理与 vRouter 代理和 vRouter 本身的通信。
JCNR-CNI 是瞻博网络云原生路由器用于与服务器上的物理接口以及安装中的 Pod 和容器网络接口进行通信的容器网络接口。
瞻博网络云原生路由器虚拟路由器 (vRouter) 是提供高级转发平面功能的容器应用程序集。它将网络从物理路由器和交换机扩展到虚拟服务器上托管的虚拟叠加网络。数据平面开发套件 (DPDK) 使 vRouter 能够每秒处理比 vRouter 作为内核模块运行的数据包更多的数据包。
Syslog-NG 是一个容器应用程序,允许瞻博网络云原生路由器向用户提供有关云原生路由器部署中发生的事件的通知。
使用 Helm 图表安装瞻博网络云原生路由器
阅读此部分,了解如何使用 Helm 图表将云原生路由器映像组件加载到 docker 中并安装云原生路由器组件所需的步骤。
在本指南的安装部分中,当引用文件和目录名称时,通常不会指定版本信息。当我们在文件或目录名称中指定版本号时,我们指的是当前(最新)版本。
如果 Kubernetes 群集中启用了 Kubernetes cpumanager,则不建议部署 22.4 版的瞻博网络云原生路由器。
如 系统资源要求所述,在安装瞻博网络云原生路由器组件之前,必须安装 Kubernetes 的 Helm 软件包管理器。
我们不会提供您必须下载软件包并安装软件的特定路径。因此,您可以复制本文档中显示的命令,并将其粘贴到服务器的 CLI 中。
瞻博网络云原生路由器安装的高级概述是:
- 下载软件安装包(tarball)
-
将 secrets/jcnr-secrets.yaml 应用于 Kubernetes 系统
注意:对于 L2 部署:执行下方步骤 7 并跳过步骤 8。
对于 L3 部署:跳过步骤 7,执行步骤 8。
仅执行第 7 步或第 8 步中的一步。
- 编辑 values.yaml 文件,以满足安装需求
- 安装瞻博网络云原生路由器
以上列出的每个高级过程都详述如下
- 将 tarball Juniper_Cloud_Native_Router_<发布编号>.tgz 下载到您选择的目录中。
如何将 tarball 放入服务器上可写的目录中,这一点由您决定。您必须在二进制模式下执行文件传输,以便压缩的 tar 文件能够正常扩展。
- 展开文件
Juniper_Cloud_Native_Router_<release-number>.tgz
。tar xzvf Juniper_Cloud_Native_Router_<release-number>.tgz
x Juniper_Cloud_Native_Router_22.4/ x Juniper_Cloud_Native_Router_22.4/contrail-tools/ x Juniper_Cloud_Native_Router_22.4/contrail-tools/contrail-tools.yaml x Juniper_Cloud_Native_Router_22.4/images/ x Juniper_Cloud_Native_Router_22.4/images/jcnr-images.tar.gz x Juniper_Cloud_Native_Router_22.4/helmchart/ x Juniper_Cloud_Native_Router_22.4/helmchart/charts/ x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-vrouter/ x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-vrouter/values.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-vrouter/templates/ x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-vrouter/templates/jcnr-secrets.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-vrouter/templates/jcnrvrouter_cleanup.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-vrouter/templates/vrouterl3.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-vrouter/templates/_helpers.tpl x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-vrouter/templates/vrouter.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-vrouter/Chart.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-vrouter/README.md x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-vrouter/.helmignore x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/ x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/values.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/templates/ x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/templates/jcnrl3.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/templates/jcnr-node-config.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/templates/jcnr-imagepullsecrets.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/templates/jcnr-standalone.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/templates/jcnr.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/templates/jcnr-config.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/templates/_helpers.tpl x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/templates/jcnr-nad.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/templates/jcnr_cleanup.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/templates/jcnr-rbac.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/files/ x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/files/jcnr-cni-config-l3-all.tmpl x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/files/jcnr-cni-config-l2-base.tmpl x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/files/jcnr-cni-config-l3-base.tmpl x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/Chart.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/README.md x Juniper_Cloud_Native_Router_22.4/helmchart/charts/jcnr-cni/.helmignore x Juniper_Cloud_Native_Router_22.4/helmchart/charts/syslog-ng/ x Juniper_Cloud_Native_Router_22.4/helmchart/charts/syslog-ng/values.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/syslog-ng/templates/ x Juniper_Cloud_Native_Router_22.4/helmchart/charts/syslog-ng/templates/jcnr-secrets.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/syslog-ng/templates/_helpers.tpl x Juniper_Cloud_Native_Router_22.4/helmchart/charts/syslog-ng/templates/syslog-config.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/syslog-ng/templates/syslog.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/syslog-ng/files/ x Juniper_Cloud_Native_Router_22.4/helmchart/charts/syslog-ng/files/syslog-ng.conf x Juniper_Cloud_Native_Router_22.4/helmchart/charts/syslog-ng/Chart.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/charts/syslog-ng/.helmignore x Juniper_Cloud_Native_Router_22.4/helmchart/values.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/values_L3.yaml x Juniper_Cloud_Native_Router_22.4/helmchart/Chart.yaml x Juniper_Cloud_Native_Router_22.4/README.md x Juniper_Cloud_Native_Router_22.4/secrets/ x Juniper_Cloud_Native_Router_22.4/secrets/jcnr-secrets.yaml
- 将目录更改为Juniper_Cloud_Native_Router_<版本编号>
cd Juniper_Cloud_Native_Router_<version number>
注意:安装中的所有剩余步骤均假定您当前的工作目录现在 为 Juniper_Cloud_Native_Router_22.4。
- 根据在上一步中扩展 tarball 的位置,从位于 Juniper_Cloud_Native_Router_22.4/images 目录中的文件 jcnr-images.tar.gz 将图像文件加载到 docker 中。
docker load -i images/jcnr-images.tar.gz
6139044550ba: Loading layer [==================================================>] 97.38MB/97.38MB fc995c5f2e0f: Loading layer [==================================================>] 10.24kB/10.24kB 2cfd8c2d4f4a: Loading layer [==================================================>] 10.24kB/10.24kB ab09fd04eee8: Loading layer [==================================================>] 97.22MB/97.22MB Loaded image: enterprise-hub.juniper.net/jcnr-container-prod/contrail-k8s-deployer:R22.4-340 Loaded image: enterprise-hub.juniper.net/jcnr-container-prod/busybox:v4 e4cf89520b9e: Loading layer [==================================================>] 26.08MB/26.08MB fc995c5f2e0f: Loading layer [==================================================>] 10.24kB/10.24kB 2cfd8c2d4f4a: Loading layer [==================================================>] 10.24kB/10.24kB 74cfd132dd63: Loading layer [==================================================>] 122.9kB/122.9kB ac1d489bb50f: Loading layer [==================================================>] 46.51MB/46.51MB 84ff92691f90: Loading layer [==================================================>] 10.24kB/10.24kB Loaded image: enterprise-hub.juniper.net/jcnr-container-prod/contrail-telemetry-exporter:R22.4-340 a10c3144b352: Loading layer [==================================================>] 104.6MB/104.6MB Loaded image: enterprise-hub.juniper.net/jcnr-container-prod/contrail-init:R22.4-340 537deede1278: Loading layer [==================================================>] 77MB/77MB 2531ae692599: Loading layer [==================================================>] 51.66MB/51.66MB Loaded image: enterprise-hub.juniper.net/jcnr-container-prod/contrail-k8s-applier:R22.4-340 24d78dfce51e: Loading layer [==================================================>] 2.56kB/2.56kB 16ac99163d4e: Loading layer [==================================================>] 2.56kB/2.56kB 5e8bf69f45ed: Loading layer [==================================================>] 3.076MB/3.076MB 97cf204dd4fa: Loading layer [==================================================>] 60.42MB/60.42MB Loaded image: enterprise-hub.juniper.net/jcnr-container-prod/contrail-vrouter-kernel-init-dpdk:R22.4-340 994393dc58e7: Loading layer [==================================================>] 5.827MB/5.827MB 44cd6f21047a: Loading layer [==================================================>] 266.2kB/266.2kB 7da972a0d779: Loading layer [==================================================>] 26.95MB/26.95MB d3942a0c8f2d: Loading layer [==================================================>] 7.68kB/7.68kB Loaded image: enterprise-hub.juniper.net/jcnr-container-prod/jcnr-cni:20221220-ce5cad7 Loaded image: enterprise-hub.juniper.net/jcnr-container-prod/syslog-ng:v6 fa2135dabe94: Loading layer [==================================================>] 94.78MB/94.78MB 35dcfd80254d: Loading layer [==================================================>] 20.48kB/20.48kB fbb24fe116c3: Loading layer [==================================================>] 7.68kB/7.68kB 1cdb02ca7491: Loading layer [==================================================>] 8.505MB/8.505MB ff669c9ec3ff: Loading layer [==================================================>] 24.58kB/24.58kB aaaf492d2211: Loading layer [==================================================>] 35.33kB/35.33kB ea5e63632e17: Loading layer [==================================================>] 26.62kB/26.62kB e6e9a27430e9: Loading layer [==================================================>] 13.82kB/13.82kB 789a0773ab92: Loading layer [==================================================>] 95.23kB/95.23kB 2a0091b226cc: Loading layer [==================================================>] 22.02kB/22.02kB 8830cecede78: Loading layer [==================================================>] 13.82kB/13.82kB e03669bcbfaf: Loading layer [==================================================>] 9.216kB/9.216kB f825984009de: Loading layer [==================================================>] 461MB/461MB 7f965397be5b: Loading layer [==================================================>] 2.048kB/2.048kB e2f57c924e6b: Loading layer [==================================================>] 2.56kB/2.56kB Loaded image: enterprise-hub.juniper.net/jcnr-container-prod/contrail-tools:R22.4-340 5cf0f971b440: Loading layer [==================================================>] 43.68MB/43.68MB ecfd5896b4a5: Loading layer [==================================================>] 68.1kB/68.1kB 7b3522749e02: Loading layer [==================================================>] 7.102MB/7.102MB 4082f4b24edd: Loading layer [==================================================>] 405.5kB/405.5kB 95c3bf2c41a6: Loading layer [==================================================>] 43.06MB/43.06MB 67ee231fdfbf: Loading layer [==================================================>] 20.22MB/20.22MB 920d5c9189dd: Loading layer [==================================================>] 204.3kB/204.3kB c7a102f767d9: Loading layer [==================================================>] 6.144kB/6.144kB 56bde89d62f0: Loading layer [==================================================>] 140.2MB/140.2MB 462729659615: Loading layer [==================================================>] 9.604MB/9.604MB 12701e87feb8: Loading layer [==================================================>] 145.7MB/145.7MB 002197a7a73a: Loading layer [==================================================>] 9.216kB/9.216kB 7f69527f070a: Loading layer [==================================================>] 2.048kB/2.048kB ff32ce4577b1: Loading layer [==================================================>] 2.56kB/2.56kB Loaded image: enterprise-hub.juniper.net/jcnr-container-prod/contrail-vrouter-agent:R22.4-340 81518edc73dd: Loading layer [==================================================>] 5.12kB/5.12kB d08901c424e8: Loading layer [==================================================>] 721.4kB/721.4kB 2cc14f52d561: Loading layer [==================================================>] 45.29MB/45.29MB 2f37cc7572c6: Loading layer [==================================================>] 60.32MB/60.32MB ff406b7d0589: Loading layer [==================================================>] 520.2kB/520.2kB 4b7aa0a95b06: Loading layer [==================================================>] 61.48MB/61.48MB 9dbbf2a2a1a3: Loading layer [==================================================>] 2.048kB/2.048kB 7bc7a911550e: Loading layer [==================================================>] 2.56kB/2.56kB Loaded image: enterprise-hub.juniper.net/jcnr-container-prod/contrail-vrouter-dpdk:R22.4-340 92012c50b65b: Loading layer [==================================================>] 10.24kB/10.24kB Loaded image: enterprise-hub.juniper.net/jcnr-container-prod/crpdconfig-generator:v4 97fa747cc26b: Loading layer [==================================================>] 556.7MB/556.7MB Loaded image: enterprise-hub.juniper.net/jcnr-container-prod/crpd:22.4R1.10 1899bc4aa1bd: Loading layer [==================================================>] 78.19MB/78.19MB Loaded image: enterprise-hub.juniper.net/jcnr-container-prod/contrail-k8s-crdloader:R22.4-340
- 将主机服务器的 root 密码和瞻博网络云原生路由器许可证文件输入 secrets/jcnr-secrets.yaml 文件中。
您必须以 base64 编码格式输入密码和许可证。要对密码进行编码,请创建一个在单行上仅包含纯文本密码的文件。然后发出命令:
base64 rootPasswordFile
输出为一行随机文本,类似于:UGFzc3cwcmQhCg==
要对许可证文件进行编码,请将该文件复制到主机服务器上,然后发出命令:base64 licenseFile
输出为一长行随机文本,类似于:VGhpcyBpcyBhIHJlYWxseSBtdWNoIGxvbmdlciB0ZXh0IGZpbGUgdGhhdCBpbmNsdWRlcyBsaWNlbnNlIGluZm9ybWF0aW9uCkFTREZERktERktIQUxHS0hiYW9qa2hkZmFzZGZOS0FTREdOR0FKYWRzZmxodmFibmRzZmdramh2Ym5ramFzZnVxYmF1amgyMDEwdGIydDQweGtqYjR3eTB1dmRxd3J2MGl3aGV0Ymd1YnMwcWRqZmhkc2tqdmJkc2ZramhkdmFkZnNiO2d2a2pzZGI7aWRzamc7ZmFzZGhma2pkc2J2YWlzdWRmZ3dFWUlUR1ZCMzlWRVlCVjM0OVVHQlZHQlFVOUFXR1ZJQkVSV0c5VUJWV0U5Rwo=
注意:您必须从帐户团队获取许可证文件,并按照上述说明将其安装到 secrets.yaml 文件中。 在 secrets.yaml 文件中没有正确的 base64 编码许可证文件和 root 密码,cRPD Pod 不会进入“运行”状态,但会保持“CrashLoopBackOff”状态。
您必须复制 base64 输出并将其粘贴到相应位置的 secrets/jcnr-secrets.yaml 文件中。 - 将 secrets/jcnr-secrets.yaml 应用于 Kubernetes 系统
kubectl apply -f secrets/jcnr-secrets.yaml
namespace/jcnr created secret/jcnr-secrets created
注意:对于 L2 部署:执行下方步骤 7 并跳过步骤 8。
对于 L3 部署:跳过下面的步骤 7,然后执行步骤 8。
仅执行第 7 步或第 8 步中的一步,而不是两者同时执行。
- 对于 L2 部署,请编辑 helmchart/values.yaml 文件。
您必须在 L2 模式下自定义瞻博网络云原生路由器的 Helm 图表:
-
选择交换矩阵接口 – 使用主机系统中的接口名称
-
创建中继接口的 VLAN ID 列表 – 使用适合您网络的 VLAN ID
-
选择交换矩阵工作负载接口 - 使用主机系统中的接口名称
-
设置工作负载接口上的流量的 VLAN ID
-
设置 JCNR-vRouter 日志记录的严重性级别
注意:将log_level设置为 INFO,除非 JTAC 指示进行更改。
-
确保模式选项设置为“l2”
-
设置 CPU 核心掩码 - 物理核心、逻辑核心
-
选择交换矩阵接口 – 使用主机系统中的接口名称
-
选择工作负载接口 – 使用主机系统中的接口名称
-
(可选)通过分配风暴控制配置文件,为广播、组播和未知单播流量设置每秒字节的速率限制
-
(可选)设置核心模式以确定为核心文件生成的名称。如果留白,则云原生路由器 Pod 不会覆盖现有核心模式
-
(仅限 Intel 810 NIC)通过设置 true 或 false(默认为 false)在 NIC 上启用 QoS
-
为 syslog-ng 设置一个可写目录位置以存储通知
-
(可选)如果指定一个绑定接口,
fabricInterface:
请在该bondInterfaceConfigs:
部分下提供slaveInterface
系统的名称。 -
默认情况下
restoreInterface
,设置为 false。使用此设置时 vrouter Pod 崩溃或删除,接口不会还原到主机。
注意:如果您使用 Intel XL710 NIC,则必须
values.yaml 文件。ddp=false
在有关默认 helmchart/values.yaml 文件的注释示例,请参阅示例配置文件。
-
- 对于 L3 部署,请编辑 helmchart/values_L3.yaml 文件。
您必须自定义在第 3 层模式下安装瞻博网络云原生路由器的 Helm 图表:
-
将 IP 地址分配给您在
values_L3.yaml
-
设置 JCNR-vRouter 日志记录的严重性级别
注意:将log_level设置为 INFO,除非 JTAC 指示进行更改。
-
确保模式选项设置为“l3”
-
设置 CPU 核心掩码 - 物理核心、逻辑核心
-
(可选)设置核心模式以确定为核心文件生成的名称。如果留白,则云原生路由器 Pod 不会覆盖现有核心模式
-
为 syslog-ng 设置一个可写目录位置以存储通知
有关默认 helmcharts/values_L3.yaml 文件的注释示例,请参阅示例配置文件。
-
- 使用 Helm 部署瞻博网络云原生路由器
注意:
从瞻博网络云原生路由器 22.4 版开始,在部署云原生路由器时,必须指定
values.yaml
或values_L3.yaml
文件。您可以在命令中helm install
指定 YAML 文件,如以下示例所示。对于 L2 安装,发出命令:helm install jcnr -f values.yaml .
NAME: jcnr LAST DEPLOYED: Mon Dec 19 17:04:12 2022 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None
对于 L3 安装,发出命令:helm install jcnr -f values_L3.yaml .
NAME: jcnr LAST DEPLOYED: Tue Dec 20 11:35:40 2022 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None
- 确认瞻博网络云原生路由器部署
helm ls
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION jcnr default 1 2022-12-17 16:44:17.472130634 -0700 PDT deployed jcnr-22.4.0 22.4.0
验证容器的操作
kubectl get pods -A
命令输出kubectl
显示 Kubernetes 群集中所有命名空间中的所有 Pod。成功部署意味着所有 Pod 都显示它们处于运行状态。在此示例中,我们用 黑体标记了瞻博网络云原生路由器 Pod。例如: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 jcnr kube-crpd-worker-ds-8tnf7 1/1 Running 0 41m jcnr syslog-ng-54749b7b77-v24hq 1/1 Running 0 41m 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-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
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 jcnr kube-crpd-worker-ds 1 1 1 1 1 <none> 43m kube-system calico-node 1 1 1 1 1 kubernetes.io/os=linux 129d 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