在 Rancher RKE2 上安装单集群 CN2
总结 请参阅有关如何在 Rancher RKE2 上安装单集群 CN2 的示例。
在单个集群共享网络部署中,CN2 是该集群的网络平台和 CNI 插件。Contrail 控制器在 Kubernetes 控制平面中运行,而 Contrail 数据平面组件在群集中的所有节点上运行。
图 1 显示了在遵循这个单个集群示例时将创建的集群。该集群由一个服务器 (控制平面) 节点和两个代理 (worker) 节点组成。
显示的所有节点都可以是 VM 或裸机服务器。

集群中节点之间以及节点与外部站点之间的所有通信都通过单个 172.16.0.0/24 结构虚拟网络进行。结构网络提供集群运行的基础。
本地管理员显示为连接到可通过网关访问的单独网络。这是本地管理员从公司 LAN 管理结构体和群集的许多安装的典型情况。在下面的过程中,我们将本地管理员工作站称为您的本地计算机。
将所有集群节点连接在一起的是数据中心结构,在示例中显示为单个子网。在实际安装中,数据中心结构是一个由主干和叶式交换机组成的网络,为集群提供物理连接。
在 Apstra 托管的数据中心中,此连接将通过您在底层交换矩阵交换机上创建的叠加虚拟网络来指定。
本节中的过程显示了如何使用提供的清单创建指定 CN2 部署的基本示例。您不限于本节中描述的部署,也不限于使用提供的清单。CN2 支持广泛的部署,这些部署太多了,无法详细介绍。使用提供的示例作为起点,根据您的具体情况定制您自己的清单。
在运行内核模式数据平面的 Rancher RKE2 上安装单集群 CN2
使用此过程在运行内核模式数据层面的单个集群部署中安装 CN2。
您将在此示例过程中使用的清单是 k8s/single-cluster/single_cluster_deployer_example.yaml。该过程假定您已将此清单放入 manifests 目录中。
要在 Rancher RKE2 集群上安装 CN2,首先要创建一个没有 CNI 的 Rancher RKE2 集群。然后,应用 CN2 部署程序清单,该清单将 CN2 安装到集群上。
- 创建一个 Rancher RKE2 集群。你可以按照创建 Rancher RKE2 集群中的示例过程进行操作,也可以使用任何其他方法。创建没有 CNI 插件的集群。
- 应用 Contrail 部署程序清单。
kubectl apply -f manifests/single_cluster_deployer_example.yaml
节点和 Pod 可能需要几分钟时间才能启动。
- 使用标准 kubectl 命令检查部署。
- 显示节点的状态。
kubectl get nodes
NAME STATUS ROLES AGE VERSION rke2-a1 Ready <none> 17h v1.25.10+rke2r1 rke2-a2 Ready <none> 17h v1.25.10+rke2r1 rke2-s1 Ready control-plane,etcd,master 17h v1.25.10+rke2r1
您可以看到节点现在已启动。如果节点未启动,请等待几分钟,然后再次检查。
- 显示 Pod 的状态。
kubectl get pods -A -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES cert-manager cert-manager-6dc787b997-cfbvp 1/1 Running 0 12h 172.16.0.12 rke2-a1 <none> <none> cert-manager cert-manager-cainjector-6f96556ddf-spqpb 1/1 Running 0 12h 172.16.0.13 rke2-a2 <none> <none> cert-manager cert-manager-webhook-9d965dff5-cllfm 1/1 Running 0 12h 172.16.0.12 rke2-a1 <none> <none> contrail-deploy contrail-k8s-deployer-f8cd78888-pmgpl 1/1 Running 1 (15h ago) 15h 172.16.0.11 rke2-s1 <none> <none> contrail-system contrail-k8s-apiserver-5d458f8d69-7s9nb 1/1 Running 0 12h 172.16.0.11 rke2-s1 <none> <none> contrail-system contrail-k8s-controller-cb4bc88cc-xc2kx 1/1 Running 0 12h 172.16.0.11 rke2-s1 <none> <none> contrail contrail-control-0 2/2 Running 0 12h 172.16.0.11 rke2-s1 <none> <none> contrail contrail-k8s-contrailstatusmonitor-5497bb64b7-dztrz 1/1 Running 0 12h 172.16.0.11 rke2-s1 <none> <none> contrail contrail-k8s-kubemanager-7d7f5b4c88-rgk2k 1/1 Running 0 12h 172.16.0.11 rke2-s1 <none> <none> contrail contrail-vrouter-masters-gxlcs 3/3 Running 0 12h 172.16.0.11 rke2-s1 <none> <none> contrail contrail-vrouter-nodes-mbgf9 3/3 Running 0 12h 172.16.0.13 rke2-a2 <none> <none> contrail contrail-vrouter-nodes-mmnf7 3/3 Running 0 12h 172.16.0.12 rke2-a1 <none> <none> kube-system cloud-controller-manager-rke2-s1 1/1 Running 0 17h 172.16.0.11 rke2-s1 <none> <none> kube-system etcd-rke2-s1 1/1 Running 0 17h 172.16.0.11 rke2-s1 <none> <none> kube-system helm-install-rke2-coredns-trcjf 0/1 Completed 0 17h 172.16.0.11 rke2-s1 <none> <none> kube-system helm-install-rke2-ingress-nginx-jghfq 0/1 Completed 11 17h 10.42.0.6 rke2-s1 <none> <none> kube-system helm-install-rke2-metrics-server-nvcp6 0/1 Completed 0 17h 10.42.0.3 rke2-s1 <none> <none> kube-system helm-install-rke2-snapshot-controller-9gbf7 0/1 Completed 3 17h 10.42.0.7 rke2-s1 <none> <none> kube-system helm-install-rke2-snapshot-controller-crd-l5wnn 0/1 Completed 0 17h 10.42.0.4 rke2-s1 <none> <none> kube-system helm-install-rke2-snapshot-validation-webhook-kqmnp 0/1 Completed 0 17h 10.42.0.5 rke2-s1 <none> <none> kube-system kube-apiserver-rke2-s1 1/1 Running 0 17h 172.16.0.11 rke2-s1 <none> <none> kube-system kube-controller-manager-rke2-s1 1/1 Running 0 17h 172.16.0.11 rke2-s1 <none> <none> kube-system kube-proxy-rke2-a1 1/1 Running 0 17h 172.16.0.12 rke2-a1 <none> <none> kube-system kube-proxy-rke2-a2 1/1 Running 0 17h 172.16.0.13 rke2-a2 <none> <none> kube-system kube-proxy-rke2-s1 1/1 Running 0 17h 172.16.0.11 rke2-s1 <none> <none> kube-system kube-scheduler-rke2-s1 1/1 Running 0 17h 172.16.0.11 rke2-s1 <none> <none> kube-system rke2-coredns-rke2-coredns-6b9548f79f-gqpzl 1/1 Running 0 12h 10.42.2.1 rke2-a2 <none> <none> kube-system rke2-coredns-rke2-coredns-6b9548f79f-snzl4 1/1 Running 0 17h 10.42.0.8 rke2-s1 <none> <none> kube-system rke2-coredns-rke2-coredns-autoscaler-57647bc7cf-dc2gx 1/1 Running 0 17h 10.42.0.2 rke2-s1 <none> <none> kube-system rke2-ingress-nginx-controller-6sk9w 1/1 Running 0 11h 10.42.0.9 rke2-s1 <none> <none> kube-system rke2-ingress-nginx-controller-ng4hg 1/1 Running 0 11h 10.42.2.3 rke2-a2 <none> <none> kube-system rke2-ingress-nginx-controller-rrrts 1/1 Running 0 11h 10.42.1.0 rke2-a1 <none> <none> kube-system rke2-metrics-server-78b84fff48-jvnnd 1/1 Running 0 12h 10.42.2.0 rke2-a2 <none> <none> kube-system rke2-snapshot-controller-849d69c748-v42dv 1/1 Running 0 12h 10.42.2.2 rke2-a2 <none> <none> kube-system rke2-snapshot-validation-webhook-654f6677b-c4v5z 1/1 Running 0 12h 10.42.1.1 rke2-a1 <none> <none>
所有 Pod 现在都应该具有 Running 的 STATUS (状态)。如果没有,请等待几分钟,让 Pod 出现。
- 如果某些 Pod 仍然关闭,请像往常一样调试部署。使用命令
kubectl describe
查看 Pod 未启动的原因。一个常见错误是网络或防火墙问题阻止节点访问瞻博网络存储库。下面是一个 DNS 问题的示例。
登录到每个有问题的节点,并检查 enterprise-hub.juniper.net 的名称解析。例如:
ping enterprise-hub.juniper.net ping: enterprise-hub.juniper.net: Temporary failure in name resolution
注意:虽然 enterprise-hub.juniper.net 没有配置为响应 ping,但我们可以使用 ping 命令来检查域名解析。
在此示例中,域名未解析。检查域名服务器配置以确保其正确无误。 - 如果您遇到无法解决的问题,或者在安装过程中犯了错误,只需卸载 CN2 并重新开始即可。要卸载 CN2,请参阅卸载 CN2。
- 显示节点的状态。
- (可选)运行印后检查。请参阅运行印前检查和印后检查。
在运行 DPDK 数据平面的 Rancher RKE2 上安装单集群 CN2
使用此过程可在运行 DPDK 数据层面的单个集群部署中安装 CN2。
您将在此示例过程中使用的清单是 k8s/single-cluster/single_cluster_deployer_example.yaml。该过程假定您已将此清单放入 manifests 目录中。
要在运行 DPDK 的 Rancher RKE2 集群上安装 CN2,首先要创建一个没有 CNI 的 Rancher RKE2 集群。然后,标记 DPDK 节点并应用 CN2 部署程序清单,该清单将 CN2 安装到集群上。
- 创建一个 Rancher RKE2 集群。你可以按照创建 Rancher RKE2 集群中的示例过程进行操作,也可以使用任何其他方法。创建具有以下特征的集群:
- Cluster 没有 CNI 插件。
- 启用 multus 版本 0.3.1。
- 指定 DPDK 节点。
对于每个运行 DPDK 的节点,请按如下方式进行标记:
kubectl label node <node-name> agent-mode=dpdk
- 应用 Contrail 部署程序清单。
kubectl apply -f manifests/single_cluster_deployer_example.yaml
节点和 Pod 可能需要几分钟时间才能启动。
- 使用标准 kubectl 命令检查部署。
- 显示节点的状态。
NAME STATUS ROLES AGE VERSION rke2-a1 Ready <none> 17h v1.25.10+rke2r1 rke2-a2 Ready <none> 17h v1.25.10+rke2r1 rke2-s1 Ready control-plane,etcd,master 17h v1.25.10+rke2r1
- 显示 Pod 的状态。
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES cert-manager cert-manager-6dc787b997-cfbvp 1/1 Running 0 12h 172.16.0.12 rke2-a1 <none> <none> cert-manager cert-manager-cainjector-6f96556ddf-spqpb 1/1 Running 0 12h 172.16.0.13 rke2-a2 <none> <none> cert-manager cert-manager-webhook-9d965dff5-cllfm 1/1 Running 0 12h 172.16.0.12 rke2-a1 <none> <none> contrail-deploy contrail-k8s-deployer-f8cd78888-pmgpl 1/1 Running 1 (15h ago) 15h 172.16.0.11 rke2-s1 <none> <none> contrail-system contrail-k8s-apiserver-5d458f8d69-7s9nb 1/1 Running 0 12h 172.16.0.11 rke2-s1 <none> <none> contrail-system contrail-k8s-controller-cb4bc88cc-xc2kx 1/1 Running 0 12h 172.16.0.11 rke2-s1 <none> <none> contrail contrail-control-0 2/2 Running 0 12h 172.16.0.11 rke2-s1 <none> <none> contrail contrail-k8s-contrailstatusmonitor-5497bb64b7-dztrz 1/1 Running 0 12h 172.16.0.11 rke2-s1 <none> <none> contrail contrail-k8s-kubemanager-7d7f5b4c88-rgk2k 1/1 Running 0 12h 172.16.0.11 rke2-s1 <none> <none> contrail contrail-vrouter-masters-gxlcs 3/3 Running 0 12h 172.16.0.11 rke2-s1 <none> <none> contrail contrail-vrouter-nodes-mbgf9 3/3 Running 0 12h 172.16.0.13 rke2-a2 <none> <none> contrail contrail-vrouter-nodes-mmnf7 3/3 Running 0 12h 172.16.0.12 rke2-a1 <none> <none> kube-system cloud-controller-manager-rke2-s1 1/1 Running 0 17h 172.16.0.11 rke2-s1 <none> <none> kube-system etcd-rke2-s1 1/1 Running 0 17h 172.16.0.11 rke2-s1 <none> <none> kube-system helm-install-rke2-coredns-trcjf 0/1 Completed 0 17h 172.16.0.11 rke2-s1 <none> <none> kube-system helm-install-rke2-ingress-nginx-jghfq 0/1 Completed 11 17h 10.42.0.6 rke2-s1 <none> <none> kube-system helm-install-rke2-metrics-server-nvcp6 0/1 Completed 0 17h 10.42.0.3 rke2-s1 <none> <none> kube-system helm-install-rke2-snapshot-controller-9gbf7 0/1 Completed 3 17h 10.42.0.7 rke2-s1 <none> <none> kube-system helm-install-rke2-snapshot-controller-crd-l5wnn 0/1 Completed 0 17h 10.42.0.4 rke2-s1 <none> <none> kube-system helm-install-rke2-snapshot-validation-webhook-kqmnp 0/1 Completed 0 17h 10.42.0.5 rke2-s1 <none> <none> kube-system kube-apiserver-rke2-s1 1/1 Running 0 17h 172.16.0.11 rke2-s1 <none> <none> kube-system kube-controller-manager-rke2-s1 1/1 Running 0 17h 172.16.0.11 rke2-s1 <none> <none> kube-system kube-proxy-rke2-a1 1/1 Running 0 17h 172.16.0.12 rke2-a1 <none> <none> kube-system kube-proxy-rke2-a2 1/1 Running 0 17h 172.16.0.13 rke2-a2 <none> <none> kube-system kube-proxy-rke2-s1 1/1 Running 0 17h 172.16.0.11 rke2-s1 <none> <none> kube-system kube-scheduler-rke2-s1 1/1 Running 0 17h 172.16.0.11 rke2-s1 <none> <none> kube-system rke2-coredns-rke2-coredns-6b9548f79f-gqpzl 1/1 Running 0 12h 10.42.2.1 rke2-a2 <none> <none> kube-system rke2-coredns-rke2-coredns-6b9548f79f-snzl4 1/1 Running 0 17h 10.42.0.8 rke2-s1 <none> <none> kube-system rke2-coredns-rke2-coredns-autoscaler-57647bc7cf-dc2gx 1/1 Running 0 17h 10.42.0.2 rke2-s1 <none> <none> kube-system rke2-ingress-nginx-controller-6sk9w 1/1 Running 0 11h 10.42.0.9 rke2-s1 <none> <none> kube-system rke2-ingress-nginx-controller-ng4hg 1/1 Running 0 11h 10.42.2.3 rke2-a2 <none> <none> kube-system rke2-ingress-nginx-controller-rrrts 1/1 Running 0 11h 10.42.1.0 rke2-a1 <none> <none> kube-system rke2-metrics-server-78b84fff48-jvnnd 1/1 Running 0 12h 10.42.2.0 rke2-a2 <none> <none> kube-system rke2-snapshot-controller-849d69c748-v42dv 1/1 Running 0 12h 10.42.2.2 rke2-a2 <none> <none> kube-system rke2-snapshot-validation-webhook-654f6677b-c4v5z 1/1 Running 0 12h 10.42.1.1 rke2-a1 <none> <none>
所有 Pod 现在都应该具有 Running 的 STATUS (状态)。如果没有,请等待几分钟,让 Pod 出现。
- 如果某些 Pod 仍然关闭,请像往常一样调试部署。使用命令
kubectl describe
查看 Pod 未启动的原因。一个常见错误是网络或防火墙问题阻止节点访问瞻博网络存储库。下面是一个 DNS 问题的示例。
登录到每个有问题的节点,并检查 enterprise-hub.juniper.net 的名称解析。例如:
ping enterprise-hub.juniper.net ping: enterprise-hub.juniper.net: Temporary failure in name resolution
注意:虽然 enterprise-hub.juniper.net 没有配置为响应 ping,但我们可以使用 ping 命令来检查域名解析。
例如,在运行 systemd resolved 的 Ubuntu 系统中,检查 /etc/resolv.conf 是否链接到 /run/systemd/resolve/resolv.conf,如安装之前的步骤 3 中所述,并检查您的 DNS 服务器是否在该文件中正确列出。
- 如果您遇到无法解决的问题,或者在安装过程中犯了错误,只需卸载 CN2 并重新开始即可。要卸载 CN2,请参阅卸载 CN2。
- 显示节点的状态。
- (可选)运行印后检查。请参阅运行印前检查和印后检查。