麒麟v10 SP2系统容器化部署MySQL、RabbitMQ、redis-ha-haproxy等出现OOMkill内存异常升高问题

1|0问题场景

操作系统:麒麟系统v10 SP2

k8s版本:v1.23.17

容器运行时:containerd

Rabbitmq镜像版本:3.9.11-debian-10-r0(3.11.10-debian-11-r0版本已正常)

Mysql镜像版本:mysql_5.7.37-debian-10-r95(8.0.20版本已正常)

redis-ha-haproxy镜像版本:haproxy:2.0.22-alpine、haproxy:2.0.25-alpine

2|0问题描述

容器化部署Rabbitmq,mysql,出现OOM内存异常升高导致系统内存无限制打满,以及kubesphere安装部署redis-ha-haproxy时异常(CrashLoopBackOff ,System OOM encountered)无法正常运行。

  • mysql

  • redis-ha-haproxy

3|0问题原因

与麒麟系统工程师沟通了下,麒麟反馈在麒麟系统v10 SP2版本上,systemd版本已经升级到了243,内存异常容器镜像使用的systemd为240版本,当使用SP2系统版本部署容器化中间件会因为open file数目巨大导致内存占用异常。

4|0问题修复

修改docker或containerd的容器运行时ulimit nofile

  • docker

    可以从配置修改daemon.json,或是从systemd服务层面进行修改,建议从systemd服务层面进行修改

    • docker配置修改daemon.json

      "default-ulimits": { "nofile": { "Name": "nofile", "Hard": 1048576, "Soft": 1048576 } }
    • systemd服务层面进行修改

      vim /lib/systemd/system/docker.service # 将LimitNOFILE=infinity改为LimitNOFILE=1048576 LimitNOFILE=1048576

      修改完成后进行reload,重启

      systemctl daemon-reload systemctl restart docker

      查看容器ulimit值为设置的1048576则正常

      ulimit -n 1048576
  • containerd

    systemd服务层面进行修改

    vim /lib/systemd/system/containerd.service # 将LimitNOFILE=infinity改为LimitNOFILE=1048576 LimitNOFILE=1048576

    修改完成后进行reload,重启

    systemctl daemon-reload systemctl restart containerd

    查看容器ulimit值为设置的1048576则正常

ulimit -n 1048576

__EOF__

本文作者shook
本文链接https://www.cnblogs.com/shook/p/18256113.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   shookm  阅读(249)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示