首页 > 其他分享 >关于k8s关闭swap分区与swappiness设置的问题

关于k8s关闭swap分区与swappiness设置的问题

时间:2024-01-15 11:24:41浏览次数:30  
标签:swappiness 内存 kubelet SWAP 使用 pod k8s swap

1、基于其出发点,k8s希望将资源限制在一个严格,精确可控范围内:

Kubernetes 云原生的实现目的是将运行实例紧密包装到尽可能接近 100%:
所有的部署、运行环境应该与 CPU 以及内存限定在一个可控的空间内。所以如果调度程序发送一个 Pod 到某一台节点机器,它不应该使用 Swap。如果使用swap,则其实node的pod使用内存总和可能超过了node的内存,这样其实就达不到资源的严格限制和管理的目的

2、为了性能和服务的稳定性

若开启 Swap ,将会减慢速度。因此,关闭 Swap 也有一部分是为了性能考虑。
原因是kubelet不是为了处理交换情况而设计的,Kubernetes团队不打算实现这一点,因为目标是pod应该适合主机的内存。打开这个之后,不稳定,pod可能使用内存也可以使用交换,这样对服务不稳定,而且无法保证pod申请的内存应该是真正使用的内存,
还可能运行运行着,服务用的内存越来越多,导致已有服务可能部分内存不用的时候释放掉,再申请的时候是被分配到swap了,效率就变了,
这样引发的问题很难定位,也很难确定,出现未定义行为

3、默认不允许,如果需要也确实可以打开,kubelet的–fail-swap-on flag可以控制:

这个flag表示为:Makes the Kubelet fail to start if swap is enabled on the node.
如果为true(默认值)就要求必须要关闭swap,false是表示即使宿主开启了swap,kubelet也是可以成功启动,但是pod是允许使用swap了,这部分代码因为经常出问题,所以直接swap在宿主上禁用会比较好。

参数配置:

永久生效:

echo "vm.swappiness = 0">> /etc/sysctl.conf (尽量不使用交换分区,注意不是禁用)

刷新SWAP

可以执行命令刷新一次SWAP(将SWAP里的数据转储回内存,并清空SWAP里的数据)

swapoff -a && swapon -a

sysctl -p (执行这个使其生效,不用重启)

标签:swappiness,内存,kubelet,SWAP,使用,pod,k8s,swap
From: https://www.cnblogs.com/xiexun/p/17964992

相关文章

  • 让 K8s 更简单!8款你不得不知的 AI 工具-Part 1
    介绍最近,AI引起了广泛关注,而Kubernetes驱动的DevOps也不例外。软件工程师是自动化的忠实拥护者,因此针对Kubernetes操作员的AI驱动工具自然也开始涌现。 这些工具大多专为终端(CLI)使用而设计。Kubernetes是容器编排的首选平台,而在AI驱动工具的帮助下可以从自动......
  • 面孔替换:Face Swap by Akool
    在数字时代,人们对于创意和个性化的追求不断增长。在这个背景下,FaceSwapbyAkool作为一款高级在线面孔替换平台,为用户提供了专业级的体验。它不仅能够让用户变身电影角色,还能生成个性化的头像,为用户创造专业的工作室体验。FaceSwapbyAkool简介FaceSwapbyAkool是一款高级的......
  • 人人都会Kubernetes(一):告别手写K8s yaml,运维效率提升500%
    1.Kubernetes的普及和重要性随着云计算的迅速发展,容器化技术已成为构建和运行分布式应用程序的关键。而Kubernetes作为容器编排领域的佼佼者,已经成为了云原生应用的标准。它不仅简化了应用程序的部署和管理,而且为开发者和运维人员提供了一套全面的工具集,从容器编排、自动扩缩容、......
  • k8s教程----零基础快速入门
    k8s详解教程----零基础快速入门前言:Kubernetes(k8s)作为云原生的核心平台,吸引了越来越多的运维、开发、测试以及其他技术员去了解学习。随着行业越来越内卷,k8s已经被广泛使用,作为一名运维人员,k8s将成为一个必须掌握的技术点,同时,我们也可以依靠它跳槽涨薪。一、什么是K8s它前......
  • k8s搭建部署(超详细)
    简介Kubernetes是Google2014年创建管理的,是Google10多年大规模容器管理技术Borg的开源版本。它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。通过Kubernetes你可以:快速部署应用快速扩展应用无缝对接新的应用功能节省资源,......
  • 部署k8s集群(k8s集群搭建详细实践版)
    1、部署k8s的两种方式:目前生产部署Kubernetes集群主要有两种方式:kubeadmKubeadm是一个K8s部署工具,提供kubeadminit和kubeadmjoin,用于快速部署Kubernetes集群。二进制包从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。本实验采用kubeadm的方式搭......
  • 【云原生 • Kubernetes】k8s功能特性、k8s集群架构介绍
     序言你只管努力,其他交给时间,时间会证明一切。文章标记颜色说明:黄色:重要标题红色:用来标记结论绿色:用来标记一级论点蓝色:用来标记二级论点Kubernetes(k8s)是一个容器编排平台,允许在容器中运行应用程序和服务。今天学习一下k8s日志查看相关方法希望这篇文章......
  • K8s核心技术-集群安全机制(概述),(RBAC实现鉴权)
    K8s核心技术-集群安全机制(概述)Kubernetes(K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。在Kubernetes集群中,安全是一个非常重要的考虑因素。集群安全机制旨在保护集群中的资源和敏感信息,防止未经授权的访问和恶意行为。集群安全机制包括以下方面:认证(Authe......
  • K8s核心技术-Service-三种类型
    KubernetesService是一种抽象层,用于暴露应用程序的网络服务。它可以将应用程序的网络接口与底层的Pod运行实例进行关联,从而实现负载均衡和服务发现。KubernetesService提供了三种类型来满足不同的需求:ClusterIP:这是Service的默认类型。它将为每个Service分配一个无法从集......
  • k8s_Kubernetes 创建 pod 流程
    创建pod流程1.编写Pod配置文件:先创建一个YAML或JSON格式的Pod配置文件,文件中包含了Pod的元数据和规格。元数据包括Pod的名称、命名空间、标签等信息,规格包括容器的镜像、端口、环境变量等配置。2.使用kubectl命令创建Pod:在控制台或命令行中运行kubectlcreate......