K8s怎么在新版本中开启对Swap交换分区的支持

风辰同学_8645

风辰同学_8645

2026-11-05

367人浏览

原创

Kubernetes 1.28(Beta)及1.22+(Alpha)版本需显式启用NodeSwap特性门控并配置memorySwap策略,否则kubelet启动失败或Pod无法使用Swap;须确保cgroup v2与systemd驱动启用,通过swapon --show、/proc/sys/vm/swappiness及kubelet配置验证。

k8s怎么在新版本中开启对swap交换分区的支持

在Kubernetes 1.28(Beta)及1.22+(Alpha)版本中,需显式启用NodeSwap特性门控并配置memorySwap策略,否则kubelet启动失败或Pod无法使用Swap。

确认节点Swap状态与内核支持

执行swapon --show检查当前Swap是否已启用;若输出为空,说明未启用,需先创建Swap文件:sudo dd if=/dev/zero of=/swapfile bs=1G count=2 && sudo mkswap /swapfile && sudo chmod 600 /swapfile && sudo swapon /swapfile。

运行cat /proc/sys/vm/swappiness,值必须大于0(默认为60),否则Swap不会触发;若为0,执行sudo sysctl vm.swappiness=60临时生效,并写入/etc/sysctl.conf永久保存。

【必须确保cgroup v2已启用且systemd作为cgroup驱动】:Kubernetes 1.22+启用NodeSwap的前提是节点使用cgroup v2和systemd驱动,可通过mount | grep cgroup确认挂载类型,并检查kubelet配置中cgroupDriver: systemd已设置。

配置Kubelet启用NodeSwap特性

方法一:通过/var/lib/kubelet/config.yaml修改(推荐)

① 停止kubelet:sudo systemctl stop kubelet。

② 在config.yaml末尾添加以下四行(注意缩进对齐,YAML对空格敏感):

featureGates:
  NodeSwap: true
memorySwap:
  swapBehavior: UnlimitedSwap

uk8s
uk8s

创建 UK8S Kubernetes 集群。通过 ucloud-cli 调用 API,自动获取 VPC/子网/版本/镜像,生成配置并创建集群。

下载

③ 重启kubelet:sudo systemctl start kubelet;若报错,请检查YAML语法,尤其featureGates与memorySwap是否同级、是否被其他字段意外缩进。

方法二:通过systemd环境变量(适用于1.22–1.27)

编辑/etc/systemd/system/kubelet.service.d/10-kubeadm.conf,在Environment=行追加--fail-swap-on=false,例如:Environment="KUBELET_EXTRA_ARGS=--fail-swap-on=false";然后执行sudo systemctl daemon-reload && sudo systemctl restart kubelet。

验证Swap功能是否就绪

执行kubectl get node -o wide,查看节点状态是否为Ready;若仍NotReady,用journalctl -u kubelet -n 100 --no-pager排查错误日志,重点搜索NodeSwap或memorySwap相关提示。

运行kubectl describe node ,在Capacity和Allocatable字段中查找memory.swap条目;若存在且数值非零,说明kubelet已识别Swap资源。

部署一个声明swap limit的Pod(如swap: "512Mi"),观察其是否能成功调度并运行;若Pod卡在Pending状态且事件显示Insufficient memory.swap,说明集群未正确暴露Swap容量,需回查kubelet配置与cgroup设置。

相关文章

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

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

下载

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

相关专题

更多
DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

XORM框架零基础入门教程
XORM框架零基础入门教程

本专题梳理XORM框架的入门路径,从框架定位、依赖安装、连接数据库到跑通第一个增删改查示例,讲清Engine初始化、日志开启与项目目录规划,并对比GORM等同类ORM的差异,帮助Go开发者建立整体认知。

2026.11.04

0

15

Docker Desktop怎么设置端口映射
Docker Desktop怎么设置端口映射

本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。

2026.11.03

20

18

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程