Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

CN2 组件

CN2 架构由执行网络配置平面和网络控制平面功能的 Pod 以及执行网络数据平面功能的 Pod 组成。

  • 网络配置平面是指使 CN2 能够管理其资源并与 Kubernetes 控制平面的其余部分进行交互的功能。

  • 网络控制平面代表了 CN2 的全功能 SDN 功能。它使用 BGP 与其他控制器通信,并使用 XMPP 与工作器节点上的分布式数据平面组件通信。

  • 网络数据平面是指每个节点上的数据包传输和接收功能,尤其是在工作负载所在的工作节点上。

执行配置和控制平面功能的 Pod 驻留在 Kubernetes 控制平面节点上。执行数据平面功能的 Pod 驻留在 Kubernetes 控制平面节点和 Kubernetes 工作节点上。

表 1 描述了 CN2 的主要组件。根据配置,可能还有其他组件(未显示)执行辅助功能,如证书管理和状态监控。

表 1:CN2 组件
Pod 名称, 其中 描述
配置平面1 Contrail-K8S-APISERVER 控制平面节点

此容器是一个聚合的 API 服务器,是管理所有 Contrail 资源的入口点。它在常规的 kube-apiserver 中注册为 APIService。常规的 kube-apiserver 将所有与网络相关的请求转发到 contrail-k8s-apiserver 进行处理。

每个 Kubernetes 控制平面节点都有一个 contrail-k8s-apiserver pod。

Contrail-k8s-controller 控制平面节点

此 Pod 执行 Kubernetes 控制环路功能来协调网络资源。它会持续监视网络资源,以确保资源的实际状态与其预期状态匹配。

每个 Kubernetes 控制平面节点都有一个 contrail-k8s 控制器 Pod。

contrail-k8s-kubemanager 控制平面节点

此 Pod 是 Kubernetes 资源和 Contrail 资源之间的接口。它会监视 kube-apiserver 对常规 Kubernetes 资源(如服务和命名空间)的更改,并对影响网络资源的任何更改采取行动。

在单集群部署中,每个 Kubernetes 控制平面节点都有一个 contrail-k8s-kubemanager pod。

在多集群部署中,每个分布式工作负载集群都有一个额外的 contrail-k8s-kubemanager pod。

控制平面1 凝结尾迹控制 控制平面节点

此 Pod 将配置传递给工作节点,并执行路由学习和分发。它会监视 kube-apiserver 是否有任何影响网络控制平面的内容,然后根据需要与其 BGP 对等方和/或 vRouter 代理(通过 XMPP)进行通信。

每个 Kubernetes 控制平面节点都有一个 contrail 控制 Pod。

数据平面 contrail-vrouter-nodes 工作器节点

此容器包含虚拟路由器代理和虚拟路由器本身。

虚拟路由器代理在与 Contrail 控制器交互时代表本地虚拟路由器执行操作。每个节点有一个代理。代理使用两个 Contrail 控制器建立 XMPP 会话,以执行以下功能:

  • 将配置从控制平面转换为 vRouter 可理解的对象
  • 与控制平面的接口,用于管理路由
  • 从数据平面收集和导出统计信息

虚拟路由器为位于同一位置的 Pod 和工作负载提供数据包发送和接收功能。它提供 CNI 插件功能。

contrail-vrouter-masters 控制平面节点 此容器提供与 contrail-vrouter-nodes 容器相同的功能,但驻留在控制平面节点上。

1组成网络配置平面和网络控制平面的组件统称为 Contrail 控制器。

图 1 显示了 Kubernetes 群集上下文中的这些组件。

为清楚起见并减少混乱,这些图未显示具有 Contrail 控制器的节点上的数据平面 Pod。

图 1:CN2 组件 CN2 Components

在上游 Kubernetes 或 Rancher RKE2 上运行时,Contrail 控制器默认将所有 CN2 集群数据存储在 Kubernetes etcd 主数据库中。在 OpenShift 上运行时,Contrail 控制器会将所有 CN2 集群数据存储在其自己的 Contrail etcd 数据库中。

kube-apiserver 是集群的 Kubernetes REST API 调用的入口点。它将所有网络请求定向到 contrail-k8s-apiserver,这是 Contrail API 调用的入口点。contrail-k8s-apiserver 将传入的网络请求转换为对相应 CN2 对象的 REST API 调用。在某些情况下,这些调用可能会导致 Contrail 控制器向一个或多个工作器节点上的 vRouter 代理发送 XMPP 消息,或者向其他控制平面节点或外部路由器发送 BGP 消息(未显示)。这些 XMPP 和 BGP 消息在常规 Kubernetes 节点到节点通信之外发送。

contrail-k8s-kubemanager(集群)组件仅存在于多集群部署中。有关不同类型的部署的详细信息,请参阅部署模型。

图 2 显示了具有多个 Contrail 控制器的群集。这些控制器驻留在控制平面节点上。Kubernetes 组件使用 REST 相互通信。Contrail 控制器使用 iBGP 在常规 Kubernetes REST 接口之外相互交换路由。为实现冗余,工作节点上的 vRouter 代理始终与两个 Contrail 控制器建立 XMPP 通信。

图 2:多个 Contrail 控制器 Multiple Contrail Controllers