K8s 内存泄漏处理方法

这篇具有很好参考价值的文章主要介绍了K8s 内存泄漏处理方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题描述:
K8s 内存泄漏处理方法,kubernetes,容器,云原生

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

K8s 内存泄漏处理方法,kubernetes,容器,云原生

[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

K8s 内存泄漏处理方法,kubernetes,容器,云原生

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

K8s 内存泄漏处理方法,kubernetes,容器,云原生

[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编译完成之后会将其替换

K8s 内存泄漏处理方法,kubernetes,容器,云原生

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
K8s 内存泄漏处理方法,kubernetes,容器,云原生Kubelet
K8s 内存泄漏处理方法,kubernetes,容器,云原生

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

替换前的文件
K8s 内存泄漏处理方法,kubernetes,容器,云原生
K8s 内存泄漏处理方法,kubernetes,容器,云原生

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
K8s 内存泄漏处理方法,kubernetes,容器,云原生
[root@k8s-master ~]# cat /sys/fs/cgroup/memory/kubepods/memory.kmem.slabinfo
K8s 内存泄漏处理方法,kubernetes,容器,云原生
12. 经测试需要重启服务器后内存泄漏问题才能解决文章来源地址https://www.toymoban.com/news/detail-541148.html

到了这里,关于K8s 内存泄漏处理方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)

    目录 一、理论 1.K8S集群升级 2.环境 3.升级策略 4.master1节点迁移容器运行时(docker → containerd)  5.master2节点迁移容器运行时(docker → containerd)  6.node1节点容器运行时迁移(docker → containerd)  7.升级集群计划(v1.23.14 → v1.24.1) 8.升级master1节点版本(v1.24.1) 9.升级master2节点版本

    2024年02月03日
    浏览(60)
  • 云上攻防-云原生篇&;Kubernetes&;K8s安全&;API&;Kubelet未授权访问&;容器执行

    curl -XPOST -k “https://192.168.139.132:10250/run///” -d “cmd=id” 执行的命令是test03容器里的命令,需要进行容器逃逸。 1、攻击8080端口:API Server(Master)未授权访问 旧版本的k8s的API Server默认会开启两个端口:8080和6443。 6443是安全端口,安全端口使用TLS加密;但是8080端口无需认证,

    2024年04月22日
    浏览(65)
  • 云原生Kubernetes:K8S概述

    目录 一、理论 1.云原生 2.K8S 3.k8s集群架构与组件 4.K8S网络 二、总结 (1)概念 云原生是一种基于容器、微服务和自动化运维的软件开发和部署方法。它可以使应用程序更加高效、可靠和可扩展,适用于各种不同的云平台。 如果要更直接通俗的来解释下上面的概念,云原生更

    2024年02月10日
    浏览(46)
  • 【云原生 • Kubernetes】认识 k8s、k8s 架构、核心概念点介绍

    目录 一、Kubernetes 简介 二、Kubernetes 架构 三、Kunbernetes 有哪些核心概念? 1. 集群 Cluster 2. 容器 Container 3. POD 4. 副本集 ReplicaSet 5. 服务 service 6. 发布 Deployment 7. ConfigMap/Secret 8. DaemonSet 9. 核心概念总结 Kubernetes 简称 k8s,是支持云原生部署的一个平台,起源于谷歌。谷歌早在十几

    2024年02月03日
    浏览(67)
  • 云上攻防-云原生篇&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露

    如上图所示:etcd服务是运行在master节点上的,master节点上查看该服务 默认通过证书认证,主要存放节点的数据,如一些token和证书。 当然,初始安全情况下,该服务是安全的(2379不对外开放,本地可访问),下面三种主要是配置问题 配置文件:/etc/kubernetes/manifests/etcd.yaml 注释

    2024年02月08日
    浏览(53)
  • 【云原生 • Kubernetes】认识 k8s 网络、外部网络访问 k8s 内部服务

    目录 一、认识 Kubernetes 网络 二、外部网络如何访问 k8s 内部服务 1. NodePort 2. Load Balancer 3. Ingress Kubernetes 最底层的网络为节点网络,用来保证 k8s 集群的节点(master 和 worker、worker 节点之间)能够做正常的 IP 寻址和通讯。 Kubernetes 第二层网络就是 Pod 网络,构建于节点网络之上

    2024年01月16日
    浏览(52)
  • 云原生Kubernetes:K8S存储卷

    目录 一、理论 1.存储卷 2.emptyDir 存储卷 3.hostPath卷 4.NFS共享存储 5.PVC 和 PV 6.静态创建PV 7.动态创建PV 二、实验  1.emptyDir 存储卷 2.hostPath卷 3.NFS共享存储 4.静态创建PV 5.动态创建PV 三、问题 1.生成pod一直pending 2.shoumount -e未显示共享目录 3.静态创建pv 报错 4.使用 Deployment 来创建

    2024年02月07日
    浏览(56)
  • 【云原生K8S】Kubernetes之探针

    目录 一、探针是什么 二、探针类型  Ⅰ、livenessProbe 容器重启策略  Ⅱ、readinessProbe Ⅲ、startupProbe 执行顺序: 字段详情 三、探测机制 Ⅰ、HTTP GET探针 Ⅱ、TCP套接字探针 Ⅲ、Exec探针 探针:是由 kubelet 对容器执行的定期诊断 要执行诊断,则需kubelet 调用由容器实现的 Handler。

    2024年02月09日
    浏览(56)
  • 云原生Kubernetes:K8S安全机制

    目录 一、理论 1.K8S安全机制 2.Authentication认证 3.Authorization授权 4.Admission Control准入控制 5.User访问案例 6.ServiceAccount访问案例 二、实验 1.Admission Control准入控制 2.User访问案例 3.ServiceAccount访问案例 三、问题 1.生成资源报错 2.镜像拉取失败 四、总结 (1)概念 Kubernetes 作为一个分

    2024年02月07日
    浏览(58)
  • 云原生_kubernetes(k8s)介绍

    目录 一、应用部署方式演变 二、k8s介绍 三、k8s的组件 四、k8s中的概念 五、k8s资源管理方式 1、命令式对象管理 2、命令式对象配置 3、声明式对象配置 在部署应用程序的方式上,主要经历了三个时代: 1 、物理机部署: 互联网早期,会直接将应用程序部署在物理机上 优点

    2023年04月13日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包