安装并验证适用于裸机服务器的瞻博网络云原生路由器
总结 瞻博网络云原生路由器(云原生路由器)使用 JCNR 控制器 (cRPD) 提供控制平面功能,使用 JCNR-CNI 提供容器网络接口。瞻博网络云原生路由器使用启用 DPDK 的虚拟路由器提供高性能数据平面功能,并使用 Syslog-NG 提供通知功能。本节介绍如何安装云原生路由器的这些组件。
使用 Helm Chart 安装瞻博网络云原生路由器
阅读本节,了解将云原生路由器映像组件加载到 docker 并使用 Helm 图表安装云原生路由器组件所需的步骤。
- 查看裸机服务器的系统要求部分,确保群集具有所有必需的配置。
- 将压缩包 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
- 部署需要 JCNR 容器映像。选择以下选项之一:
-
配置群集以部署瞻博网络
enterprise-hub.juniper.net
存储库中的映像。有关如何在部署 Helm 图表中配置存储库凭据的说明 ,请参阅配置存储库凭据 。 -
将群集配置为从下载的 JCNR 软件包中包含的映像压缩包中部署映像。有关如何将映像导入本地容器运行时的说明,请参阅 部署预打包映像 。
-
- 在 secrets/jcnr-secrets.yaml 文件中输入主机服务器的 root 密码和瞻博网络云原生路由器许可证文件。您必须以 base64 编码格式输入密码和许可证。
您可以在下面查看 jcnr-secrets.yaml 文件的示例内容:
--- apiVersion: v1 kind: Namespace metadata: name: jcnr --- apiVersion: v1 kind: Secret metadata: name: jcnr-secrets namespace: jcnr data: root-password: <add your password in base64 format> crpd-license: | <add your license in base64 format>
要对密码进行编码,请在一行上创建一个包含纯文本密码的文件。然后发出命令:base64 -w 0 rootPasswordFile
base64 -w 0 licenseFile
注意:您必须从帐户团队获取许可证文件,并按照上述说明将其安装在 jcnr-secrets.yaml 文件中。如果 jcnr-secrets.yaml 文件中没有正确的 base64 编码许可证密钥和 root 密码,则 cRPD Pod 不会进入 Running 状态,而是保持 CrashLoopBackOff 状态。
将 secrets/jcnr-secrets.yaml 应用于 Kubernetes 系统。
kubectl apply -f secrets/jcnr-secrets.yaml namespace/jcnr created secret/jcnr-secrets created
注意:从 JCNR 23.2 版开始,JCNR 许可证格式已更改。在部署或升级到 23.2 或更高版本之前,请从 JAL 门户申请新的许可证密钥。
- 使用 helmchart/values.yaml 文件自定义部署的 helm 图表。
有关 helm chart 配置的说明,请参阅 为裸机服务器自定义 JCNR Helm Chart 。
- (可选)自定义 JCNR 配置。
请参阅 自定义 JCNR 配置 ,了解如何创建和应用 cRPD 自定义项。
- 如果在 中
values.yaml
定义,则根据nodeaffinity
标记要安装 JCNR mut 的节点。例如: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
命令,验证 JCNR 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
命令来验证 JCNR 守护程序集。kubectl get ds -A
使用命令获取守护程序集的列表。JCNR 守护程序集以粗体文本突出显示。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
命令来验证 JCNR 状态实现集。命令输出提供有状态的 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 默认配置和自定义配置。输出将基于自定义配置和 JCNR 部署模式。root@jcnr-01# cli root@jcnr-01> show configuration | display set
exit
键入命令退出 Pod shell。
- 验证 vRouter 接口配置
- 查看访问 vRouter CLI 部分,了解访问 vRouter CLI 的说明。
- 访问 vRouter CLI 后,发出
vif --list
命令以查看 vRouter 接口。输出将取决于 JCNR 部署模式和配置。下面提供了配置了一个交换矩阵接口的 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。