4.12. KMM hub 和 spoke
在 hub 和 spoke 场景中,许多 spoke 集群连接到一个中央强大的 hub 集群。内核模块管理(KMM)依赖于 Red Hat Advanced Cluster Management (RHACM)在 hub 和 spoke 环境中运行。
KMM 通过分离 KMM 功能与 hub 和 spoke 环境兼容。提供了一个 ManagedClusterModule Custom Resource Definition (CRD)来打包现有的 Module CRD,并将其扩展为选择 Spoke 集群。另外,提供了 KMM-Hub,它是一个新的独立控制器,用于在 hub 集群上构建镜像并签署模块。
在 hub 和 spoke 设置中,spokes 专注于由 hub 集群管理的资源受限集群。spoke 运行 KMM 的单集群版本,并禁用这些资源密集型功能。要将 KMM 适应此环境,您应该将 spoke 上运行的工作负载降低为最小值,而 hub 会处理昂贵的任务。
构建内核模块镜像并签名 .ko 文件,应在 hub 上运行。Module Loader 和 Device Plugin DaemonSet 的调度只能在 spoke 上进行。
4.12.1. KMM-Hub 复制链接链接已复制到粘贴板!
KMM 项目提供 KMM-Hub,它是一个专用于 hub 集群的 KMM 版本。KMM-Hub 监控 spoke 上运行的所有内核版本,并决定集群中应该接收内核模块的节点。
KMM-Hub 运行所有计算密集型任务,如镜像构建和 kmod 签名,并准备裁剪通过 RHACM 传送到 spoke 的 Module。
KMM-Hub 无法用于在 hub 集群中加载内核模块。安装常规版本的 KMM 以加载内核模块。
4.12.2. 安装 KMM-Hub 复制链接链接已复制到粘贴板!
您可以使用以下方法之一安装 KMM-Hub:
- 使用 Operator Lifecycle Manager (OLM)
- 创建 KMM 资源
4.12.2.1. 使用 Operator Lifecycle Manager 安装 KMM-Hub 复制链接链接已复制到粘贴板!
使用 OpenShift 控制台的 Operators 部分安装 KMM-Hub。
4.12.2.2. 通过创建 KMM 资源来安装 KMM-Hub 复制链接链接已复制到粘贴板!
流程
-
如果要以编程方式安装 KMM-Hub,您可以使用以下资源创建
Namespace、OperatorGroup和Subscription资源:
4.12.3. 使用 ManagedClusterModule CRD 复制链接链接已复制到粘贴板!
使用 ManagedClusterModule 自定义资源定义(CRD)在 spoke 集群上配置内核模块的部署。此 CRD 是集群范围的,嵌套了一个 Module spec,并添加以下附加字段:
如果 .spec.moduleSpec 中存在构建或签名指令,则这些 pod 在 Operator 命名空间中的 hub 集群上运行。
当 .spec.selector 匹配一个或多个 ManagedCluster 资源时,KMM-Hub 在对应的命名空间中创建 ManifestWork 资源。manifestwork 包含 trimmed-down Module 资源,保留了内核映射,但所有 build 和 sign 子部分都会被删除。包含以标签结尾的镜像名称的 containerImage 字段将替换为等效摘要。
4.12.4. 在 spoke 上运行 KMM 复制链接链接已复制到粘贴板!
在 spoke 上安装 KMM 后,不需要进一步操作。从 hub 创建一个 ManagedClusterModule 对象,以便在 spoke 集群上部署内核模块。
流程
您可以通过 RHACM Policy 对象在 spokes 集群上安装 KMM。除了从 Operator hub 安装 KMM 并以轻量级 spoke 模式运行它外,Policy 还会配置 RHACM 代理所需的额外 RBAC 来管理 Module 资源。
使用以下 RHACM 策略在 spoke 集群上安装 KMM:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
spec.clusterSelector字段可以自定义为仅目标选择的集群。