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

ContainerRuntimeConfig 自定义资源定义(CRD)提供了更改与 OpenShift Container Platform CRI-O 运行时关联的设置的结构化方式。通过使用 ContainerRuntimeConfig 自定义资源(CR),您可以选择您想要的配置值,MCO 处理重新构建 crio.confstorage.conf 配置文件。

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

  • PIDs limitpidsLimit 参数设置 CRI-O pids_limit 参数,这是容器中允许的最大进程数。默认为 1024(pids_limit = 1024)。
  • 日志级别: logLevel 参数设置 CRI-O log_level 参数,即日志消息的详细程度。默认为 info (log_level = info)。其他选项包括 fatalpanicerrorwarndebugtrace
  • Overlay 大小overlaySize 参数设置 CRI-O Overlay 存储驱动程序 size 参数,这是容器镜像的最大大小。
  • 最大日志大小logSizeMax 参数设置 CRI-O log_size_max 参数,这是容器日志文件允许的最大值。默认为没有限制(log_size_max = -1)。如果设置为正数,则必须至少小于 ConMon 读取缓冲的 8192。conMon 是一个监控单个容器管理器(如 Podman 或 CRI-O)与 OCI 运行时(如 runc 或 crun)之间的通信的程序。

以下流程描述了如何使用 ContainerRuntimeConfig CR 更改 CRI-O 设置。

流程

  1. 要将 pidsLimit 升到 2048,将 logLevel 设置为 debug,并将 overlaySize 设为 8 GB,请创建一个包含该设置的 CR 文件(如 overlay-size.yaml):

    $ cat << EOF > /tmp/overlay-size.yaml
    apiVersion: machineconfiguration.openshift.io/v1
    kind: ContainerRuntimeConfig
    metadata:
     name: overlay-size
    spec:
     machineConfigPoolSelector:
       matchLabels:
         custom-crio: overlay-size
     containerRuntimeConfig:
       pidsLimit: 2048
       logLevel: debug
       overlaySize: 8G
    EOF
  2. 要应用 ContainerRuntimeConfig 对象设置,请运行:

    $ oc create -f /tmp/overlay-size.yaml
  3. 要验证 YAML 文件是否应用了设置,请运行以下命令:

    $ oc get ContainerRuntimeConfig
    NAME           AGE
    overlay-size   3m19s
  4. 要编辑类似 worker 的机器池,请运行以下命令来打开机器配置池:

    $ oc edit machineconfigpool worker
  5. 检查是否在 machineconfigs 下出现新的 containerruntime 对象:

    $ oc get machineconfigs | grep containerrun
    99-worker-generated-containerruntime   2c9371fbb673b97a6fe8b1c52691999ed3a1bfc2  3.1.0  31s
  6. 监控机器配置池,因为更改会被应用到机器中,直到所有系统都显示为 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

  7. 打开到 worker 节点的 oc debug 会话,并运行 chroot /host
  8. 运行以下命令验证更改:

    $ crio config | egrep 'log_level|pids_limit'

    输出示例

    pids_limit = 2048
    log_level = "debug"

    $ 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"