2.3.2. 创建 ContainerRuntimeConfig CR 以编辑 CRI-O 参数
ContainerRuntimeConfig
自定义资源定义(CRD)提供了更改与 OpenShift Container Platform CRI-O 运行时关联的设置的结构化方式。通过使用 ContainerRuntimeConfig
自定义资源(CR),您可以选择您想要的配置值,MCO 处理重新构建 crio.conf
和 storage.conf
配置文件。
您可以使用 ContainerRuntimeConfig
CR 修改以下设置:
-
PIDs limit:
pidsLimit
参数设置 CRI-Opids_limit
参数,这是容器中允许的最大进程数。默认为 1024(pids_limit = 1024
)。 -
日志级别:
logLevel
参数设置 CRI-Olog_level
参数,即日志消息的详细程度。默认为info
(log_level = info
)。其他选项包括fatal
、panic
、error
、warn
、debug
和trace
。 -
Overlay 大小:
overlaySize
参数设置 CRI-O Overlay 存储驱动程序size
参数,这是容器镜像的最大大小。 -
最大日志大小:
logSizeMax
参数设置 CRI-Olog_size_max
参数,这是容器日志文件允许的最大值。默认为没有限制(log_size_max = -1
)。如果设置为正数,则必须至少小于 ConMon 读取缓冲的 8192。conMon 是一个监控单个容器管理器(如 Podman 或 CRI-O)与 OCI 运行时(如 runc 或 crun)之间的通信的程序。
以下流程描述了如何使用 ContainerRuntimeConfig
CR 更改 CRI-O 设置。
流程
要将
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
要应用
ContainerRuntimeConfig 对象设置
,请运行:$ oc create -f /tmp/overlay-size.yaml
要验证 YAML 文件是否应用了设置,请运行以下命令:
$ oc get ContainerRuntimeConfig NAME AGE overlay-size 3m19s
要编辑类似
worker
的机器池,请运行以下命令来打开机器配置池:$ oc edit machineconfigpool worker
检查是否在
machineconfigs
下出现新的containerruntime
对象:$ oc get machineconfigs | grep containerrun 99-worker-generated-containerruntime 2c9371fbb673b97a6fe8b1c52691999ed3a1bfc2 3.1.0 31s
监控机器配置池,因为更改会被应用到机器中,直到所有系统都显示为 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
-
打开到 worker 节点的
oc debug
会话,并运行chroot /host
。 运行以下命令验证更改:
$ 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"