4.3. 配置内核模块管理 Operator


在大多数情况下,内核模块管理(KMM) Operator 的默认配置不需要修改。但是,您可以修改 Operator 设置以适应您的环境。

流程

  • 要修改任何设置,请使用以下命令在 Operator 命名空间中创建一个名为 kmm-operator-manager-configConfigMap,并使用以下命令重启控制器:

    $ oc rollout restart -n "$namespace" deployment/kmm-operator-controller
    Copy to Clipboard Toggle word wrap

    $namespace 的值取决于您的安装方法。

    输出示例

    apiVersion: v1
    data:
      controller_config.yaml: |
        worker:
          firmwareHostPath: /example/different/firmware/path
    kind: ConfigMap
    metadata:
      name: kmm-operator-manager-config
      namespace: openshift-kmm
    Copy to Clipboard Toggle word wrap

注意

如果要配置 KMM Hub,请在 KMM Hub 控制器的命名空间中使用名称 kmm-operator-hub-manager-config 创建 ConfigMap

Expand
表 4.1. Operator 配置参数
参数描述

healthProbeBindAddress

定义 Operator 监控 kubelet 健康探测的地址。推荐的值为 :8081

job.gcDelay

定义在删除之前,应保留成功构建 pod 的持续时间。有关此设置的有效值的详情,请参考 ParseDuration。默认值为 0s

leaderElection.enabled

确定领导选举机制是否被用来确保任何时候都只有一个 KMM Operator 运行的副本。如需更多信息,请参阅 Leases。默认值为 true

leaderElection.resourceID

确定领导选举机制用于存放领导锁的资源名称。KMM 的默认值为 kmm.sigs.x-k8s.io。KMM-hub 的默认值为 kmm-hub.sigs.x-k8s.io

metrics.bindAddress

决定指标服务器的绑定地址。把它设置为 "0" 以禁用指标服务器。默认值为 0.0.0.0:8443

metrics.disableHTTP2

如果为 true,则禁用 metrics 服务器的 HTTP/2 作为 CVE-2023-44487 的缓解方案。默认值为 true

metrics.enableAuthnAuthz

确定指标是否使用 TokenReviews 验证,并在 kube-apiserver 中使用 SubjectAccessReviews 授权。

对于身份验证和授权,控制器需要一个具有以下规则的 ClusterRole

  • apiGroups: authentication.k8s.io, resources: tokenreviews, verbs: create
  • apiGroups: authorization.k8s.io, resources: subjectaccessreviews, verbs: create

例如,要提取指标(例如使用 Prometheus),客户端需要具有以下规则的 ClusterRole

  • nonResourceURLs: "/metrics", verbs: get

默认值为 true

metrics.secureServing

决定是否通过 HTTPS 而不是 HTTP 提供指标。默认值为 true

webhook.disableHTTP2

如果为 true,请禁用 webhook 服务器的 HTTP/2,作为 CVE-2023-44487 的缓解方案。默认值为 true

webhook.port

定义 Operator 监控 Webhook 请求的端口。默认值为 9443

worker.runAsUser

决定 worker 容器安全上下文的 runAsUser 字段的值。如需更多信息,请参阅 SecurityContext。默认值为 9443

worker.seLinuxType

决定 worker 容器安全上下文的 seLinuxOptions.type 字段的值。如需更多信息,请参阅 SecurityContext。默认值为 spc_t

worker.firmwareHostPath

如果设置,则此字段的值由 worker 容器写入节点上的 /sys/module/firmware_class/parameters/path 文件。如需更多信息,请参阅设置内核固件搜索路径。默认值为 /var/lib/firmware

4.3.1. 卸载内核模块

在移至较新的版本时,您必须卸载内核模块,或者如果它们在节点上引入一些不必要的副作用。

流程

  • 要从节点中卸载使用 KMM 加载的模块,请删除对应的 Module 资源。然后,KMM 会根据需要创建 worker pod,以运行 modprobe -r 并从节点卸载内核模块。

    警告

    卸载 worker pod 时,KMM 需要载入内核模块时使用的所有资源。这包括 模块 中引用的 ServiceAccount,以及定义的任何 RBAC,以允许特权 KMM worker Pod 运行。它还包括 .spec.imageRepoSecret 中引用的任何 pull secret。

    为了避免 KMM 无法从节点卸载内核模块的情况,请确保在 Module 资源仍存在于任何状态时不会删除这些资源,包括 Terminating。KMM 包含一个验证准入 Webhook,它拒绝删除至少包含一个 Module 资源的命名空间。

4.3.2. 设置内核固件搜索路径

Linux 内核接受 firmware_class.path 参数作为固件的搜索路径,如 固件搜索路径 中所述。

在尝试加载 kmods 前,KMM worker pod 可以通过写入 sysfs 来在节点上设置这个值。

流程

  • 要定义固件搜索路径,请在 Operator 配置中将 worker.setFirmwareClassPath 设置为 /var/lib/firmware
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat