【TKE】容器 ulimit 参数配置方法

2024-04-01 16:00:22 浏览数 (2)

背景

客户 Pod 调度虚拟节点的时候禁止 core 文件生成,需要执行ulimit -c 0这个命令。

进入容器 shell 环境测试配置是没有问题的, 看起来可以正常设置:

进入shell 测试可以配置成功进入shell 测试可以配置成功

实际客户需求是可以启动自动执行修改:

客户诉求客户诉求

由于 ulimit 参数比较特殊, 在 docker 运行时环境中可以通过 dockerd 的启动参数自定义设置,但是在 containerd(EKS 运行时)运行时中是没有办法配置的(默认不支持启动参数配置),尝试在容器启动时(command配置)后发现业务环境获取到的还是没有修改的默认值,如下图所示:

启动参数设置启动参数设置

进入容器shell查看配置:

shell环境中依然是默认值shell环境中依然是默认值

如何解决?

关键探索过程:

测试打印在修改ulimit 参数前后的真实参数值,验证修改是否真正生效:

测试打印修改前后的参数值测试打印修改前后的参数值

查看容器执行命令输出的日志:

容器日志容器日志

从日志可以看出来在 command 执行环境下参数是修改成功的,但是再进入shell 查看还是默认值,如下图:

登录容器查看却是默认值登录容器查看却是默认值

解决办法

既然在 command 执行环境中 ulimit 设置参数是生效的, 若将应用的启动命令放在和设置参数同一个执行环境时,业务感知到的不就是修改的后的参数值了嘛,启动命令格式为ulimit -c xx && 应用启动命令 ,如下所示:

保证业务启动和参数修改在同一个执行环境保证业务启动和参数修改在同一个执行环境

如此配置可完美解决 ulimit 参数配置问题, 同样的,如有其他 ulimit 参数需要自定义也是可以的。

0 人点赞