K8s 内存泄漏处理方法

问题描述:
在这里插入图片描述

1.	安装go环境
2.	下载地址: https://golang.google.cn/dl/

在这里插入图片描述

[root@k8s-master home]# rm -rf /usr/local/go && tar -C /usr/local/ -zxvf go1.17.3.linux-amd64.tar.gz3.	永久配置go 环境[root@k8s-master home]# vim /etc/profile
export GOPATH="/data/Documents"
export GOROOT="/usr/local/go"
export PATH="$GOROOT/bin:$GOPATH/bin:$PATH"
export GO111MODULE=off 
[root@k8s-master home]# source /etc/profile4.	查看go版本
[root@k8s-master home]# go version

在这里插入图片描述

5.	编译runc
https://github.com/opencontainers/runc
下载源码包,放入/data/Documents/src/github.com/opencontainers/ 中 下载源码时,通过git下载
[root@k8s-master home]# yum install git -y[root@k8s-master]# mkdir -p /data/Documents/src/github.com/opencontainers/
[root@k8s-master]# cd /data/Documents/src/github.com/opencontainers/
[root@k8s-master opencontainers]# git clone https://github.com/opencontainers/runc

在这里插入图片描述

[root@k8s-master opencontainers]# cd runc/# 切到v1.0.0-rc9 tag
# [root@k8s-master runc]# git checkout v1.0.0-rc9  6.	安装编译工具[root@k8s-master runc]# yum -y install gcc gcc-c++ kernel-devel
[root@k8s-master ~]# sudo yum install -y libseccomp-devel执行编译
[root@k8s-master runc]# make BUILDTAGS='seccomp nokmem'安装编译组件sudo yum install libseccomp-develmake BUILDTAGS='seccomp nokmem'编译完成之后会在当前目录下看到一个runc的可执行文件,等kubelet编译完成之后会将其替换

在这里插入图片描述

7.	编译 kubelet#下载 Kubernetes 源码
[root@k8s-master runc]# mkdir -p /root/k8s/
[root@k8s-master runc]# cd /root/k8s/[root@k8s-master k8s]# git clone https://github.com/kubernetes/kubernetes
[root@k8s-master k8s]# cd kubernetes/版本还原:根据自己安装的K8S版本,将源码还原到对应的版本:
git checkout v1.20.9
GO111MODULE=on KUBE_GIT_TREE_STATE=clean KUBE_GIT_VERSION=v1.20.9 make kubelet GOFLAGS="-tags=nokmem"
make编译的时候,必须要加上参数 GOFLAGS="-tags=nokmem"。这样编译的kubelet才不会开启kmem属性,也就不会导致内存泄漏。
生成的kubelet二进制文件在生成的_output路径下的bin当中。

产生的所有文件如下:
runc
在这里插入图片描述Kubelet
在这里插入图片描述

8.	替换原有的 runc 和 kubelet# 将原有 runc 和 kubelet 备份
[root@k8s-master home]# mv /usr/bin/kubelet /home/kubelet
[root@k8s-master home]# mv /usr/bin/runc /home/runc

替换前的文件
在这里插入图片描述
在这里插入图片描述

9.	停止 docker 和 kubelet
[root@k8s-master home]# systemctl stop docker
[root@k8s-master home]# systemctl stop kubelet10.	将编译好的runc和kubelet进行替换[root@k8s-master bin]# cp /root/k8s/kubernetes/_output/bin/kubelet /usr/bin/kubelet
[root@k8s-master bin]# cp /root/k8s/kubernetes/_output/bin/kubelet /usr/local/bin/kubelet
[root@k8s-master runc]# cp /data/Documents/src/github.com/opencontainers/runc/runc /usr/bin/runc
  1. 检查kmem是否关闭前需要将此节点的pod杀掉重启或者重启服务器,当结果为0时成功

[root@k8s-master ~]# cat /sys/fs/cgroup/memory/kubepods/burstable/memory.kmem.usage_in_bytes
在这里插入图片描述
[root@k8s-master ~]# cat /sys/fs/cgroup/memory/kubepods/memory.kmem.slabinfo
在这里插入图片描述
12. 经测试需要重启服务器后内存泄漏问题才能解决

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/14737.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Openpose原理总结

Openpose是一种开源的实时多人姿态估计库,由卡耐基梅隆大学开发。它通过分析图像或视频中的人体关键点来估计人体的姿态,识别身体的各个部分,并推断出人体的姿势信息。 Openpose能够同时检测和跟踪多个人的姿态,可以用于人机交互、…

Linux 内核级通用内存池 —— kmalloc 体系

目录 kmalloc 内存池中都有哪些尺寸的内存块 kmalloc 内存池如何选取合适尺寸的内存块 kmalloc 内存池的整体架构 KMALLOC_RECLAIM 表示需要分配可以被回收的内存,RECLAIM 类型的内存页,不能移动,但是可以直接回收,比如文件缓存页…

[NSSRound#13 Basic]flask?jwt?解题思路过程

过程 打开题目链接,是一个登录框,不加验证码,且在注册用户名admin时提示该用户名已被注册,因此爆破也是一种思路。不过根据题目名字中的提示,jwt,且拥有注册入口,注册一个用户先。 注册完用户…

8、动手学深度学习——现代卷积神经网络:AlexNet

1、学习表征 在2012年前,图像特征都是机械地计算出来的。事实上,设计一套新的特征函数、改进结果,并撰写论文是盛极一时的潮流 另一组研究人员,包括Yann LeCun、Geoff Hinton、Yoshua Bengio、Andrew Ng、Shun ichi Amari和Juer…

测试编排必要性

目录 前言: 测试编排定义 测试编排和自动化 测试编排的好处 自动化的测试编排策略 自动化/编排工具 测试编排和CI/CD 学点啥 前言: 编排是一种组织和安排信息的过程,它在各种情境中都是非常重要的。在撰写文章、演讲或其他形式的表达…

【真题解析】系统集成项目管理工程师 2022 年上半年真题卷(综合知识)

本文为系统集成项目管理工程师考试(软考) 2022 年上半年真题(全国卷),包含答案与详细解析。考试共分为两科,成绩均 ≥45 即可通过考试: 综合知识(选择题 75 道,75分)案例分析&#x…

【Elasticsearch】索引库操作

目录 2.索引库操作 2.1.mapping映射属性 2.2.索引库的CRUD 2.2.1.创建索引库和映射 基本语法: 示例: 2.2.2.查询索引库 2.2.3.修改索引库 2.2.4.删除索引库 2.2.5.总结 2.索引库操作 索引库就类似数据库表,mapping映射就类似表的…

软件设计模式与体系结构-软件体系-层次软件体系结构

目录 四、层次软件体系结构简介代码两种方式的区别双向分层分层风格 VS 主程序-子过程风格:二者的不同层次软件体系结构的优点层次软件体系结构的缺点 课程作业 四、层次软件体系结构 层次之间存在接口,通过接口形成call/return的关系,上层是…

深度神经网络量化算法基础理论

关于量化,之前的博客中首先从第一个将量化思想应用在神经网络模型上的工作开始介绍,随后阐述了量化领域的极端情况,即二值化与三值化,并指出尽管目前已经存在多种对二值网络的优化方法,但是显然因极端量化带来的严重精…

优化软件测试成本,7个步骤简单执行~

软件测试可以防止那些修复起来成本很高的错误,从而避免将来因为它们所导致的高昂费用。以下是优化前期成本的7个步骤。 为什么软件测试很重要? 平均一款手机应用程序包含大约5万行代码,微软Windows操作系统有大约5000万行代码,而…

【技能实训】DMS数据挖掘项目-Day02

文章目录 任务3【任务3.1】实现日志实体类【任务3.2】创建日志业务类,实现日志信息的采集及打印输出【任务3.3】创建日志测试类,测试任务3.2中的程序,演示日志信息的采集及打印输出 任务4【任务4.1】物流实体信息类【任务4.2】创建物流业务类…

Python一行命令搭建HTTP服务器并外网访问+-+内网穿透

文章目录 1.前言2.本地http服务器搭建2.1.Python的安装和设置2.2.Python服务器设置和测试 3.cpolar的安装和注册3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 转载自远程内网穿透的文章:【Python】快速简单搭建HTTP服务器并公网访问「cpolar内网穿透…