安装并验证适用于 Azure 部署的瞻博网络云原生路由器
瞻博网络云原生路由器(云原生路由器)使用 JCNR 控制器 (cRPD) 提供控制平面功能,使用 JCNR-CNI 提供容器网络接口。瞻博网络云原生路由器使用启用 DPDK 的虚拟路由器提供高性能数据平面功能,并使用 Syslog-NG 提供通知功能。本节介绍如何安装云原生路由器的这些组件。
这是 瞻博网络技术预览(技术预览) 的一项功能。
使用 Helm Chart 安装瞻博网络云原生路由器
阅读本部分,了解使用 Helm 图表加载云原生路由器映像组件所需的步骤。
- 查看“Azure 部署的系统要求”部分,确保设置具有所有必需的配置。
- 将云原生路由器 helm charts, Juniper_Cloud_Native_Router_release-number.tgz 下载到您选择的目录。将文件传输到服务器时,必须以二进制模式执行文件传输,以便压缩的 tar 文件正确扩展。
- 展开文件 Juniper_Cloud_Native_Router_release-number.tgz。
tar xzvf Juniper_Cloud_Native_Router_release-number.tgz
- 将目录更改为 Juniper_Cloud_Native_Router_release-number。
cd Juniper_Cloud_Native_Router_release-number
注意:安装中的所有其余步骤都假定您当前的工作目录现在已 Juniper_Cloud_Native_Router_release-number。
- 查看当前目录中的内容。
ls contrail-tools helmchart images README.md secrets
- 部署需要云原生路由器容器镜像。选择以下选项之一:
-
配置群集以部署瞻博网络
enterprise-hub.juniper.net存储库中的映像。有关如何在部署 Helm 图表中配置存储库凭据的说明 ,请参阅配置存储库凭据 。 -
将群集配置为从下载的云原生路由器软件包中包含的映像压缩包中部署映像。有关如何将映像导入本地容器运行时的说明,请参阅 部署预打包映像 。
-
- 在 secrets/jcnr-secrets.yaml 文件中的以下行中输入主机服务器的 root 密码:
root-password: <add your password in base64 format>
您必须以 base64 编码格式输入密码。按以下步骤对密码进行编码: 将此命令的输出复制到 secrets/jcnr-secrets.yaml 中。echo -n "password" | base64 -w0
- 在以下行的 secrets/jcnr-secrets.yaml 文件中输入您的瞻博网络云原生路由器许可证。
crpd-license: | <add your license in base64 format>您必须以 base64 编码格式输入您的许可证。按如下方式对许可证进行编码: 将此命令的输出复制到 secrets/jcnr-secrets.yaml 中。base64 -w0 licenseFile注意:您必须从帐户团队获取许可证文件,并按照上述说明将其安装在 jcnr-secrets.yaml 文件中。如果 jcnr-secrets.yaml 文件中没有正确的 base64 编码许可证密钥和 root 密码,则 cRPD Pod 不会进入 Running 状态,而是保持 CrashLoopBackOff 状态。
注意:从云原生路由器 23.2 版开始,云原生路由器许可证格式已更改。在部署或升级到 23.2 或更高版本之前,请从 JAL 门户申请新的许可证密钥。
- 应用 secrets/jcnr-secrets.yaml。
kubectl apply -f secrets/jcnr-secrets.yaml namespace/jcnr created secret/jcnr-secrets created
- 使用 helmchart/values.yaml 文件自定义部署的 helm 图表。
有关 Azure 部署的舵手图配置的说明,请参阅 为 Azure 部署自定义云原生路由器舵手图 ,以及 Azure 部署的舵手图示例。
- (可选)自定义云原生路由器配置。
请参阅 自定义云原生路由器配置 ,了解如何创建和应用 cRPD 自定义项。
- 根据
nodeaffinity中定义values.yaml的标记必须安装云原生路由器的节点。例如:kubectl label nodes ip-10.0.100.17.lab.net key1=jcnr --overwrite
- 使用 helm chart 部署瞻博网络云原生路由器。
导航到该
helmchart目录并运行以下命令:helm install jcnr .
注意:默认情况下,cRPD Pod 中的遥测导出器处于禁用状态。在命令中
helm install指定--set jcnr-cni.telemetryExporter.enable=true参数以启用 cRPD 遥测导出器部署。如需详细了解 cRPD 遥测,请参阅云原生路由器的遥测功能。NAME: jcnr LAST DEPLOYED: Fri Dec 22 06:04:33 2023 NAMESPACE: default STATUS: deployed REVISION: 1 TEST SUITE: None
- 确认瞻博网络云原生路由器部署。
helm ls
示例输出:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION jcnr default 1 2023-12-22 06:04:33.144611017 -0400 EDT deployed jcnr-23.4.0 23.4.0
验证安装
- 发出
kubectl get pods -A命令,验证云原生路由器 Pod 的状态。命令的kubectl输出显示所有命名空间中 Kubernetes 集群中的所有 Pod。部署成功意味着所有 Pod 都处于运行状态。在此示例中,我们将瞻博网络云原生路由器 Pod 标记为 粗体。例如:kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE contrail-deploy contrail-k8s-deployer-579cd5bc74-g27gs 1/1 Running 0 103s contrail contrail-vrouter-masters-lqjqk 3/3 Running 0 87s jcnr kube-crpd-worker-sts-0 1/1 Running 0 103s jcnr syslog-ng-ds5qd 1/1 Running 0 103s kube-system calico-kube-controllers-5f4fd8666-m78hk 1/1 Running 0 4h2m kube-system calico-node-28w98 1/1 Running 0 86d kube-system coredns-54bf8d85c7-vkpgs 1/1 Running 0 3h8m kube-system dns-autoscaler-7944dc7978-ws9fn 1/1 Running 0 86d kube-system kube-apiserver-ix-esx-06 1/1 Running 0 86d kube-system kube-controller-manager-ix-esx-06 1/1 Running 0 86d kube-system kube-multus-ds-amd64-jl69w 1/1 Running 0 86d kube-system kube-proxy-qm5bl 1/1 Running 0 86d kube-system kube-scheduler-ix-esx-06 1/1 Running 0 86d kube-system nodelocaldns-bntfp 1/1 Running 0 86d
- 通过发出
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 <none> 90m contrail contrail-vrouter-nodes 0 0 0 0 0 <none> 90m jcnr syslog-ng 1 1 1 1 1 <none> 90m kube-system calico-node 1 1 1 1 1 kubernetes.io/os=linux 86d kube-system kube-multus-ds-amd64 1 1 1 1 1 kubernetes.io/arch=amd64 86d kube-system kube-proxy 1 1 1 1 1 kubernetes.io/os=linux 86d kube-system nodelocaldns 1 1 1 1 1 kubernetes.io/os=linux 86d
- 通过发出
kubectl get statefulsets -A命令来验证云原生路由器的状态实现集。命令输出提供有状态的 fulset。
kubectl get statefulsets -A
NAMESPACE NAME READY AGE jcnr kube-crpd-worker-sts 1/1 27m
- 验证 cRPD 是否已获得许可并具有适当的配置
- 查看访问 cRPD CLI 部分以访问 cRPD CLI。
- 访问 cRPD CLI 后,在 cli 模式下发出
show system license命令以查看系统许可证。例如:root@jcnr-01:/# cli root@jcnr-01> show system license License usage: Licenses Licenses Licenses Expiry Feature name used installed needed containerized-rpd-standard 1 1 0 2024-09-20 16:59:00 PDT Licenses installed: License identifier: 85e5229f-0c64-0000-c10e4-a98c09ab34a1 License SKU: S-CRPD-10-A1-PF-5 License version: 1 Order Type: commercial Software Serial Number: 1000098711000-iHpgf Customer ID: Juniper Networks Inc. License count: 15000 Features: containerized-rpd-standard - Containerized routing protocol daemon with standard features date-based, 2022-08-21 17:00:00 PDT - 2027-09-20 16:59:00 PDT - 在 cli 模式下发出
show configuration | display set命令,以查看 cRPD 默认配置和自定义配置。输出将基于自定义配置和云原生路由器部署模式。root@jcnr-01# cli root@jcnr-01> show configuration | display set
exit键入命令退出 Pod shell。
- 验证 vRouter 接口配置
- 查看“访问 vRouter CLI”部分以访问 vRouter CLI。
- 访问 vRouter CLI 后,发出
vif --list命令以查看 vRouter 接口。输出将取决于云原生路由器的部署模式和配置。下面提供了配置了一个交换矩阵接口的 L3 模式部署示例:$ vif --list Vrouter Interface Table Flags: P=Policy, X=Cross Connect, S=Service Chain, Mr=Receive Mirror Mt=Transmit Mirror, Tc=Transmit Checksum Offload, L3=Layer 3, L2=Layer 2 D=DHCP, Vp=Vhost Physical, Pr=Promiscuous, Vnt=Native Vlan Tagged Mnp=No MAC Proxy, Dpdk=DPDK PMD Interface, Rfl=Receive Filtering Offload, Mon=Interface is Monitored Uuf=Unknown Unicast Flood, Vof=VLAN insert/strip offload, Df=Drop New Flows, L=MAC Learning Enabled Proxy=MAC Requests Proxied Always, Er=Etree Root, Mn=Mirror without Vlan Tag, HbsL=HBS Left Intf HbsR=HBS Right Intf, Ig=Igmp Trap Enabled, Ml=MAC-IP Learning Enabled, Me=Multicast Enabled vif0/0 Socket: unix MTU: 1514 Type:Agent HWaddr:00:00:5e:00:01:00 Vrf:65535 Flags:L2 QOS:-1 Ref:3 RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 0 0 RX packets:0 bytes:0 errors:0 TX packets:0 bytes:0 errors:0 Drops:0 vif0/1 PCI: 0000:5a:02.1 (Speed 10000, Duplex 1) NH: 6 MTU: 9000 Type:Physical HWaddr:ba:9c:0f:ab:e2:c9 IPaddr:0.0.0.0 DDP: OFF SwLB: ON Vrf:0 Mcast Vrf:0 Flags:L3L2Vof QOS:0 Ref:12 RX port packets:66 errors:0 RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Fabric Interface: 0000:5a:02.1 Status: UP Driver: net_iavf RX packets:66 bytes:5116 errors:0 TX packets:0 bytes:0 errors:0 Drops:0 vif0/2 PMD: eno3v1 NH: 9 MTU: 9000 Type:Host HWaddr:ba:9c:0f:ab:e2:c9 IPaddr:0.0.0.0 DDP: OFF SwLB: ON Vrf:0 Mcast Vrf:65535 Flags:L3L2DProxyEr QOS:-1 Ref:13 TxXVif:1 RX queue errors to lcore 0 0 0 0 0 0 0 0 0 0 0 0 0 0 RX packets:0 bytes:0 errors:0 TX packets:66 bytes:5116 errors:0 Drops:0 TX queue packets:66 errors:0 TX device packets:66 bytes:5116 errors:0 exit键入命令退出容器 shell。