swap中怎么在容器化K8s节点初始化时强制关闭全盘swap以适配Kubelet的硬性规范

千浩酱_5928

千浩酱_5928

2026-07-28

997人浏览

原创

kubernetes节点初始化时必须永久禁用swap,而非仅依赖--fail-swap-on=false参数。正确做法是:执行sudo swapoff -a、注释fstab中swap行、删除swap文件、停用systemd swap服务,并通过free -h、/proc/swaps、swapon --show三重验证确保swap完全失效。

swap中怎么在容器化k8s节点初始化时强制关闭全盘swap以适配kubelet的硬性规范

Kubernetes 节点初始化时必须关闭 Swap,这是 kubelet 的硬性要求。从 v1.22 开始,--fail-swap-on=false 仅作为临时绕过手段(Beta 阶段),**生产环境仍严禁启用 Swap**。真正合规的做法,是在节点 OS 层面彻底禁用 Swap,而非依赖 kubelet 参数妥协。

一、初始化阶段就永久禁用 Swap(推荐)

在部署系统镜像或执行节点初始化脚本时,应直接清除 Swap 配置,避免后续被意外启用:

  • 运行 sudo swapoff -a 立即关闭所有激活的 Swap 设备(包括分区和文件)
  • 注释或删除 /etc/fstab 中所有含 swap 的行,防止重启后自动挂载
  • 检查是否存在 Swap 文件(如 /swapfile),确认后可执行:
    sudo rm -f /swapfile
    sudo swapon --show 应无输出
  • 若使用 systemd 管理(如 CentOS/RHEL 8+、Ubuntu 20.04+),还需停用并屏蔽相关服务:
    sudo systemctl stop dev-sda2.swap(设备名依实际替换)
    sudo systemctl disable dev-sda2.swap

二、验证 Swap 已完全失效

仅执行 swapoff -a 不够——它不修改 fstab,重启即恢复。务必确认以下三点全部满足:

Kubernetes Network Policy Generator
Kubernetes Network Policy Generator

使用加权评分卡在12项标准上评估和比较隐私解决方案供应商。适用于选择隐私管理软件、比较数据保护方案等场景。

下载
  • free -h 输出中 Swap 行全为 0
  • cat /proc/swaps 返回空结果
  • swapon --show 无任何条目,且 systemctl list-units --type=swap --state=active 为空

三、kubelet 启动前确认环境干净

在启动 kubelet 前,建议加入校验逻辑,避免因疏漏导致集群异常:

  • 在 init 脚本或 Ansible playbook 中添加断言:
    test $(swapon --show=NAME | wc -l) -eq 0 || { echo "ERROR: Swap still active"; exit 1; }
  • 若使用 kubeadm 初始化,可在 kubeadm init 前插入该检查;若用自定义 systemd unit,可将校验命令写入 ExecStartPre=
  • 注意:某些云厂商镜像(如 AWS AL2、Azure RHEL)默认启用 Swap 文件,需特别处理

四、为什么不能只靠 --fail-swap-on=false

这个参数只是让 kubelet 启动不失败,但无法解决底层问题:

  • 调度器仍按物理内存计算资源余量,Swap 存在会导致误判和超售
  • 监控指标(如 node_memory_MemAvailable_bytes)无法反映 Swap 使用,告警失真
  • OOM Killer 可能杀死 kubelet 或 etcd 进程,引发控制平面雪崩
  • K8s 官方文档与 CIS 基准均明确要求 Swap 必须禁用,审计不通过

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

kubernetes

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

2025.12.22

116

5

Go云原生应用与Kubernetes服务部署实战
Go云原生应用与Kubernetes服务部署实战

本专题围绕 Go 语言在云原生环境中的应用展开,讲解容器化部署、Kubernetes 编排、服务发现、健康检查与弹性扩缩容机制。通过真实云端案例,帮助开发者构建可扩展的云原生微服务架构。

2026.06.29

188

19

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4170

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3533

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2753

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6710

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6362

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3673

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3165

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kubernetes官方教程手册
Kubernetes官方教程手册

共0课时 | 0人学习

Kubernetes官方中文文档
Kubernetes官方中文文档

共0课时 | 0人学习