- play_arrow 安装
- play_arrow 监控
- play_arrow 管理
- play_arrow 附录
CN2 组件
CN2 架构由执行网络配置平面和网络控制平面功能的 Pod 以及执行网络数据平面功能的 Pod 组成。
网络配置平面是指使 CN2 能够管理其资源并与 Kubernetes 控制平面的其余部分进行交互的功能。
网络控制平面代表了 CN2 的全功能 SDN 功能。它使用 BGP 与其他控制器通信,并使用 XMPP 与工作器节点上的分布式数据平面组件通信。
网络数据平面是指每个节点上的数据包传输和接收功能,尤其是在工作负载所在的工作节点上。
执行配置和控制平面功能的 Pod 驻留在 Kubernetes 控制平面节点上。执行数据平面功能的 Pod 驻留在 Kubernetes 控制平面节点和 Kubernetes 工作节点上。
表 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 会话,以执行以下功能:
虚拟路由器为位于同一位置的 Pod 和工作负载提供数据包发送和接收功能。它提供 CNI 插件功能。 |
contrail-vrouter-masters | 控制平面节点 | 此容器提供与 contrail-vrouter-nodes 容器相同的功能,但驻留在控制平面节点上。 | |
1组成网络配置平面和网络控制平面的组件统称为 Contrail 控制器。 |
图 1 显示了 Kubernetes 群集上下文中的这些组件。
为清楚起见并减少混乱,这些图未显示具有 Contrail 控制器的节点上的数据平面 Pod。
在上游 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 通信。