K8s 内存泄漏处理方法

news2024/12/26 0:59:43

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

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.gz

3.	永久配置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/profile

4.	查看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 kubelet



10.	将编译好的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.coloradmin.cn/o/727257.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

win10、mac如何使用desktop中的docker

1、安装相应系统的docker,安装完什么都不需要修改。 2、需要安装mysql的话首先使用命令行 3、需要把mysql等其他软件端口映射出来使用的命令 4、搞定;点击关闭和启动 可以安装很多软件哦,非常方便两条命令搞定,mysql、redis、mogo…

建筑物防雷工程的设计与施工

本文会介绍建筑物防雷工程的设计与施工的基本原理、方法和要求,以及一些典型的案例分析。建筑物防雷工程是为了保护建筑物及其内部设备、人员和财产免受雷电危害而采取的一系列技术措施。建筑物防雷工程应遵循《建筑物防雷设计规范》GB 50057-2010和《建筑物防雷工程…

ros2 机器人imu传感器 加速度计 陀螺仪精度和数据填充单位换算

起因,imu解算出了加速度 角速度,但原始数据是没有单位的,只是在一个精度范围的值,要使用这些数据,就需要把这些没有单位的数据换算成带单位的数据,下面解说一下换算原理。 imu读取数据代码参考上期的博客&…

什么是操作系统中的kernel

什么是操作系统中的kernel 一,图解,kernel在操作系统中的结构位置 二,文字描述解释 系统启动后,Kernel会常驻内存,负责系统的基础功能, 如进程调度,硬件管理.普通程序就是用户态程序, 在Kernel中的程序叫做内核态程序. 普通程序如果想申请…

经典图像识别卷积神经网络总结记录

这篇博文主要是延续前文系列的总结记录,这里主要是总结汇总日常主流的图像识别模型相关知识内容。 下面对上述列出的卷积神经网络模型进行逐个详细介绍、算法原理分析以及优缺点总结: (1)LeNet-5 算法原理: LeNet-5是最早应用于手写数字识别…

(22)LED灯(外部)

文章目录 前言 22.1 带有I2C连接的RGB LEDs/显示器 22.2 串行连接的设备 22.3 NTF LED的含义 前言 外部 LED 或 LED 显示屏可以通过连接到自动驾驶仪的 I2C 端口,或者在 4.0 及以后的版本中,如果是串行编程的设备,可以通过输出使用 SERV…

【Redis】3、Redis 作为缓存(Redis中的穿透、雪崩、击穿、工具类)

目录 一、什么是缓存二、给业务添加缓存(减少数据库访问次数)三、给店铺类型查询业务添加缓存(1) 使用 String 类型(2) 使用 List 类型 四、缓存的更新策略(1) 主动更新(2) 最佳实现方案(3) 给查询商铺的缓存添加超时剔除和主动更新的策略① 存缓存&…

mysql 练习---表和表的字段的增删改

环境: 命令: (1)create database Market; (2) create table customers( c_num int(11) primary key auto_increment, c_name varchar(50), c_contact varchar(50), c_city varchar(50), c_birth datetime not null );(3) alter table customers mod…

[github-100天机器学习]day1 data preprocessing-版本问题已修正

https://github.com/LiuChuang0059/100days-ML-code/blob/master/Day1_Data_preprocessing/README.md#step-6-feature-scaling—特征缩放 数据预处理 导入库:numpy包含数学计算函数,pandas用于导入和管理数据集 #!/usr/bin/env python3 # -*- coding: …

flutter 更新分支内容

有三个分支,主分支,A分支,B分支,别人在B分支开发了内容,我在A分支进行开发。别人在B分支提交了代码,让我去拉下来。这时候我就是需要切到B分支,拉代码下来,然后再回到A分支&#xff…

python使用代理ip——案例

python爬虫是指使用Python编写的程序,通过网络爬取信息并提取有效数据。它通过模拟浏览器请求,获取网页数据,并通过解析HTML/XML等文档结构,从中提取数据。 Python爬虫常用的库和工具包括: Requests:用于…

Lightroom Classic 2023(12.4) for Mac

Lightroom Classic是一款图像处理软件,是数字摄影后期制作的重要工具之一。与其他图像处理软件相比, Lightroom Classic具有以下特点: 高效的图像管理:Lightroom Classic提供了强大的图像管理功能,可以轻松导入、整理…

Springboot接口返回参数以及入参RSA加密解密

网上有好多通过aop切面以及自定义的RSA工具类进行加密解密的方法,期中的过程繁琐也不好用,博主研究了一天从网上到了超好用的基于Springboot框架实现的接口RSA加密解密方式,通过rsa-encrypt-body-spring-boot实现了对Spring Boot接口返回值、…

MySQL库表操作

目录 1、SQL语句分类 2、书写规范 (二)关键字不区分大小写 (三)字符串和日期时间常数要用单引号 (四)单词之间需要使用半角空格或者换行符进行分隔 (五)注释 3、库操作 创建…

关于PHP 使用 Elastic Search8的相关经历

你好! 如果你也是第一次使用ES8和PHP对接使用,这里或许有一些心得可以为你解决一些问题。 本地环境所需工具 windows 版本搭建 Elastic Search 如下图,通过官网下载一个windows版本的Elastic Search 执行.bat文件即可启动 https://localhos…

基于OpenCV 和 Python 实现车牌检测--附免费源码

文末提供免费的源代码下载链接 车牌检测是使用计算机视觉技术自动检测和识别图像或视频流中的车牌/车牌的过程。 此任务在许多应用中都很有用,例如交通管理、自动收费和停车控制。 车牌检测基本上分为两个任务: 车牌检测:这是指识别图像或视频帧中车牌位置的过程。这涉…

优化篇--vxe-table 大数据表格替代方案

解决数据量过大及内容复杂时造成的Table渲染滚动的卡顿问题 vxe-table官方文档 npm install xe-utils vxe-tablelegacyvex-table.vue <template><div class"page"><vxe-gridclass"mytable"ref"xGrid2"v-bind"gridOptions2&…

langchain系列1- langchain-ChatGLM

源码阅读 1 服务启动 (demo.queue(concurrency_count3).launch(server_name0.0.0.0,server_port7860,show_apiFalse,shareFalse,inbrowserFalse))这部分代码使用了 Gradio 库提供的两个函数&#xff1a;queue 和 launch。 在这里&#xff0c;demo 是一个 Interface 类的实例…

win go vscode安装配置-智能提示

win go vscode安装配置-智能提示 0.前提 go1.17.1之后不允许go get安装库 vscode是免费的go开发工具&#xff0c;想要代码智能提示 go推荐go mod和go install&#xff0c;不推荐GOPATH了 1.安装步骤 [1] vscode安装-百度一堆 [2] go安装-从官网 https://go.dev/dl/ 下载win 6…

SpringBoot——在开发阶段对表现层进行测试

在开发阶段对表现层进行测试 之前在做测试的时候&#xff0c;我们对Dao层做了测试&#xff0c;对Service层做了测试&#xff0c;但是在测试表现层的时候&#xff0c;我们并不是在测试类中启动的Web端口&#xff0c;还是直接启动了引导类&#xff0c;并在浏览器中打开本地网址或…