• kubelet如何避免节点频繁切换“资源不足”和“资源充足”状态?


    驱赶行为的触发条件

    当计算节点(安装kubelet的节点)资源不足时,会触发驱赶行为。
    驱赶行为的触发条件主要包括

    • memory.available可用内存
    • nodefs.available文件系统剩余空间
    • nodefs.inodesFree文件系统剩余Inode等
    • imagefs.available镜像文件系统剩余空间
    • imagefs.inodesFree镜像文件系统剩余Inode

    软阈值和硬阈值

    镜像文件系统主要保存镜像分层及运行时最上面的读写层
    kubelet可以针对这些指标设置软阈值和硬阈值。

    • 软阈值是指当达到阈值后触发关闭,逐步迁移,
    • 硬阈值则是强制关闭容器,驱赶到其他节点运行。

    所以,软阈值相对于硬阈值设置的数值要稍大,针对可用内存memory.available,通常软阈值为1.5Gi,而硬阈值为0.5Gi。 这种思想很常见,比如redis rdb持久化策略、redis主从同步缓冲区设置策略…

    kubelet回收资源的两个参数

    当某个资源出现不足后,节点将会发出驱赶策略,并标记节点状态为MemoryPressure内存压力或者DiskPressure磁盘压力。当回收部分资源后(删除无用的镜像、回收死亡的容器、删除低优先级的Pod),节点将重新标记为正常运行,并重新接收新Pod创建,那么也可能会出现资源不足的情况。

    为了避免节点一直处于频繁切换“资源不足”和“资源充足”状态,kubelet通过两种机制保证,一是通过eviction-minimum-reclaim指定一次回收中至少回收的资源,另一个是通过eviction-pressure-transition-period设置延迟周期,需要计算节点保持“资源充足”的状态超过eviction-pressure-transition-period设定时间后,才可以将节点设置为“资源充足”状态。

  • 相关阅读:
    初学Flutter:实现底部导航切换
    剑指-019
    [沉淀之华] 自研基于SpringBoot & Mybaits 构建低代码数据治理脚手架分享:涵盖数据同步、数据比对、数据归档、数据恢复为一体
    基于SpringBoot的时间管理系统
    rust 全局变量
    LeetCode 0257. 二叉树的所有路径
    几种回调的对比
    STM32电源名词解析
    c语言学习——2——占位符、数据类型、查看占多少字节
    Shiro框架-史上详解
  • 原文地址:https://blog.csdn.net/MyySophia/article/details/127933300