请问下emqx k8s部署,pod中emqx容器的ulimit哪里可以配置呀?
pod系统的fs-max是可以用helm chart中的配置实现。
# 在EMQX的Pod定义中
containers:
- name: emqx
image: emqx/emqx:latest
securityContext:
capabilities:
add: ["SYS_RESOURCE"]
# 配置文件句柄限制
sysctls:
- name: fs.file-max
value: "1048576"
# 配置ulimit相关参数
resources:
limits:
# 用于nofile (打开文件数) 限制
ephemeral-storage: xxxMi
fs.file-max,是生效的,但是ephemeral-storage是用于限制容器的临时存储空间吧?而非容器句柄数吧。还望指教?感谢
这个fs.file-max是系统级别的吧,emqx进程从dashboard上看还是1024.
dashboard看的是unlimit,不是file max
你找找k8s如何改unlimited 就可以。
最后解决方案:通过修改StatefulSet文件,image选项后面,增加如下:
command: ["/bin/sh", "-c"]
args:
- ulimit -n 65535 && exec /usr/bin/docker-entrypoint.sh /opt/emqx/bin/emqx foreground
覆盖镜像中的原执行命令即可。
刚开始emqx官网拉的5.8.4,但是arm有点问题(已反馈群技术人员),后面去docker hub仓库下的5.8版本(其实也是5.8.5)。
https://hub.docker.com/layers/emqx/emqx/5.8/images/sha256-e3569845f3354fd452786ad448159e9840ed4425eab35c9f0c15d0b1461152af
我的mac上的docker 也是用的arm,没这个问题,k8s部署的operator GitHub - emqx/emqx-operator: A Kubernetes Operator for EMQX 也不需要特别的去设置unlimited ,你是自己做的镜像,还是有做了什么特别的操作啊