搜索

4.2. 创建 ContainerRuntimeConfig CR 以编辑 CRI-O 参数

download PDF

您可以为与特定机器配置池(MCP)关联的节点更改与 OpenShift Container Platform CRI-O 运行时关联的一些设置。通过使用 ContainerRuntimeConfig 自定义资源(CR),您可以设置配置值并添加一个标签以匹配 MCP。然后,MCO 会使用更新的值重建关联节点上的 crio.confstorage.conf 配置文件。

注意

要使用 ContainerRuntimeConfig CR 恢复实现的更改,您必须删除 CR。从机器配置池中删除标签不会恢复更改。

您可以使用 ContainerRuntimeConfig CR 修改以下设置:

  • PIDs limit :在 ContainerRuntimeConfig 中设置 PID 限值将被弃用。如果需要 PIDs 限制,建议在 KubeletConfig CR 中使用 podPidsLimit 字段。podPidsLimit 字段的默认值为 4096

    注意

    CRI-O 标志应用到容器的 cgroup 上,而 Kubelet 标志则在 pod 的 cgroup 中设置。请相应地调整 PID 限值。

  • 日志级别: logLevel 参数设置 CRI-O log_level 参数,即日志消息的详细程度。默认为 info (log_level = info)。其他选项包括 fatalpanicerrorwarndebugtrace
  • Overlay 大小overlaySize 参数设置 CRI-O Overlay 存储驱动程序 size 参数,这是容器镜像的最大大小。
  • 最大日志大小 :在 ContainerRuntimeConfig 中设置最大日志大小被弃用。如果需要最大日志大小,建议在 KubeletConfig CR 中使用 containerLogMaxSize 字段。
  • 容器运行时defaultRuntime 参数将容器运行时设置为 runccrun。默认为 runc

您应该为每个机器配置池有一个ContainerRuntimeConfig CR,并为该池分配所有配置更改。如果要将相同的内容应用到所有池,则所有池只需要 oneContainerRuntimeConfig CR。

您应该编辑现有的 ContainerRuntimeConfig CR,以修改现有设置或添加新设置,而不是为每个更改创建新 CR。建议您只创建一个新的 ContainerRuntimeConfig CR 来修改不同的机器配置池,或者用于临时的更改,以便您可以恢复更改。

您可以根据需要创建多个 ContainerRuntimeConfig CR,每个集群的限制为 10。对于第一个 ContainerRuntimeConfig CR,MCO 会创建一个机器配置并附加 containerruntime。对于每个后续 CR,控制器会创建一个带有数字后缀的新 containerruntime 机器配置。例如,如果您有一个带有 -2 后缀的 containerruntime 机器配置,则下一个 containerruntime 机器配置会附加 -3

如果要删除机器配置,应该以相反的顺序删除它们,以避免超过限制。例如,您应该在删除 containerruntime-2 机器配置前删除 containerruntime-3 机器配置。

注意

如果您的机器配置带有 containerruntime-9 后缀,并且创建了 anotherContainerRuntimeConfig CR,则不会创建新的机器配置,即使少于 10 个 containerruntime 机器配置。

显示多个 ContainerRuntimeConfig CR 示例

$ oc get ctrcfg

输出示例

NAME         AGE
ctr-overlay  15m
ctr-level    5m45s

显示多个 containerruntime 机器配置示例

$ oc get mc | grep container

输出示例

...
01-master-container-runtime                        b5c5119de007945b6fe6fb215db3b8e2ceb12511   3.2.0             57m
...
01-worker-container-runtime                        b5c5119de007945b6fe6fb215db3b8e2ceb12511   3.2.0             57m
...
99-worker-generated-containerruntime               b5c5119de007945b6fe6fb215db3b8e2ceb12511   3.2.0             26m
99-worker-generated-containerruntime-1             b5c5119de007945b6fe6fb215db3b8e2ceb12511   3.2.0             17m
99-worker-generated-containerruntime-2             b5c5119de007945b6fe6fb215db3b8e2ceb12511   3.2.0             7m26s
...

以下示例将 log_level 字段设置为 debug,并将覆盖大小设置为 8 GB:

ContainerRuntimeConfig CR 示例

apiVersion: machineconfiguration.openshift.io/v1
kind: ContainerRuntimeConfig
metadata:
 name: overlay-size
spec:
 machineConfigPoolSelector:
   matchLabels:
     pools.operator.machineconfiguration.openshift.io/worker: '' 1
 containerRuntimeConfig:
   logLevel: debug 2
   overlaySize: 8G 3
   defaultRuntime: "crun" 4

1
指定机器配置池标签。对于容器运行时配置,角色必须与关联的机器配置池的名称匹配。
2
可选:指定日志消息的详细程度。
3
可选:指定容器镜像的最大大小。
4
可选:指定部署到新容器的容器运行时。默认值为 runc

流程

使用 ContainerRuntimeConfig CR 更改 CRI-O 设置:

  1. ContainerRuntimeConfig CR 创建 YAML 文件:

    apiVersion: machineconfiguration.openshift.io/v1
    kind: ContainerRuntimeConfig
    metadata:
     name: overlay-size
    spec:
     machineConfigPoolSelector:
       matchLabels:
         pools.operator.machineconfiguration.openshift.io/worker: '' 1
     containerRuntimeConfig: 2
       logLevel: debug
       overlaySize: 8G
    1
    为您要修改的机器配置池指定一个标签。
    2
    根据需要设置参数。
  2. 创建 ContainerRuntimeConfig CR:

    $ oc create -f <file_name>.yaml
  3. 验证是否已创建 CR:

    $ oc get ContainerRuntimeConfig

    输出示例

    NAME           AGE
    overlay-size   3m19s

  4. 检查是否创建了新的 containerruntime 机器配置:

    $ oc get machineconfigs | grep containerrun

    输出示例

    99-worker-generated-containerruntime   2c9371fbb673b97a6fe8b1c52691999ed3a1bfc2  3.2.0  31s

  5. 监控机器配置池,直到所有系统都显示为 ready 状态:

    $ oc get mcp worker

    输出示例

    NAME    CONFIG               UPDATED  UPDATING  DEGRADED  MACHINECOUNT  READYMACHINECOUNT  UPDATEDMACHINECOUNT  DEGRADEDMACHINECOUNT  AGE
    worker  rendered-worker-169  False    True      False     3             1                  1                    0                     9h

  6. 验证设置是否在 CRI-O 中应用:

    1. 打开到机器配置池中节点的 oc debug 会话,并运行 chroot /host

      $ oc debug node/<node_name>
      sh-4.4# chroot /host
    2. 验证 crio.conf 文件中的更改:

      sh-4.4# crio config | grep 'log_level'

      输出示例

      log_level = "debug"

    3. 验证 'storage.conf' 文件中的更改:

      sh-4.4# head -n 7 /etc/containers/storage.conf

      输出示例

      [storage]
        driver = "overlay"
        runroot = "/var/run/containers/storage"
        graphroot = "/var/lib/containers/storage"
        [storage.options]
          additionalimagestores = []
          size = "8G"

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.