为k8s预留系统资源
2024-10-18 17:00:21
为k8s预留系统资源
Kubernetes 的节点可以按照 Capacity
调度。默认情况下 pod 能够使用节点全部可用容量。 这是个问题,因为节点自己通常运行了不少驱动 OS 和 Kubernetes 的系统守护进程。 除非为这些系统守护进程留出资源,否则它们将与 pod 争夺资源并导致节点资源短缺问题。
kubelet
公开了一个名为 Node Allocatable
的特性,有助于为系统守护进程预留计算资源。 Kubernetes 推荐集群管理员按照每个节点上的工作负载密度配置 Node Allocatable
。
节点可分配
如何配置
- --enforce-node-allocatable,默认为pods,要为kube组件和System进程预留资源,则需要设置为
pods,kube-reserved,system-reserve
。 - --cgroups-per-qos,Enabling QoS and Pod level cgroups,默认开启。开启后,kubelet会将管理所有workload Pods的cgroups。
- --cgroup-driver,默认为cgroupfs,另一可选项为systemd。取决于容器运行时使用的cgroup driver,kubelet与其保持一致。比如你配置docker使用systemd cgroup driver,那么kubelet也需要配置--cgroup-driver=systemd。
- --kube-reserved,用于配置为kube组件(kubelet,kube-proxy,dockerd等)预留的资源量,比如—kube-reserved=cpu=1000m,memory=8Gi,ephemeral-storage=16Gi。
- --kube-reserved-cgroup,如果你设置了--kube-reserved,那么请一定要设置对应的cgroup,并且该cgroup目录要事先创建好,否则kubelet将不会自动创建导致kubelet启动失败。比如设置为kube-reserved-cgroup=/kubelet.service 。
- --system-reserved,用于配置为System进程预留的资源量,比如—system-reserved=cpu=500m,memory=4Gi,ephemeral-storage=4Gi。
- --system-reserved-cgroup,如果你设置了--system-reserved,那么请一定要设置对应的cgroup,并且该cgroup目录要事先创建好,否则kubelet将不会自动创建导致kubelet启动失败。比如设置为system-reserved-cgroup=/system.slice。
- --eviction-hard,用来配置kubelet的hard eviction条件,只支持memory和ephemeral-storage两种不可压缩资源。当出现MemoryPressure时,Scheduler不会调度新的Best-Effort QoS Pods到此节点。当出现DiskPressure时,Scheduler不会调度任何新Pods到此节点。
以32C/96G为例:
我是kubespray安装的在/etc/kubernetes/kubelet.env添加以下参数后重启kubelet生效:
--system-reserved=cpu=200m,memory=10Gi \
--eviction-hard=memory.available<10Gi,nodefs.available<1Gi,imagefs.available<1Gi \
--eviction-minimum-reclaim=memory.available=1Gi,nodefs.available=500Mi,imagefs.available=1Gi \
--node-status-update-frequency=10s --eviction-pressure-transition-period=30s"
内存压测:
yum install -y stress
stress -i 1 --vm 1 --vm-bytes 20G
最新文章
- Eclipse 显示所有文件
- HDU4010 (动态树)
- Some Simple Models of Neurons
- [译]SQL Server 之 查询计划的简单参数化
- SQL查看表锁定,死锁解锁
- Heritrix 3.1.0 源码解析(三十七)
- sql2005数据库转换成sql2000
- cocos2d-x实战 C++卷 学习笔记--第4章 使用菜单
- Polyline对象 - (及其他对象的关系)
- PHP学习笔记八【数组】
- MVC中使用AuthorizeAttribute做身份验证操作【转】
- Objective-C语法概述
- 【Unity技巧】统一管理回调函数——观察者模式
- es6 filter() 数组过滤方法总结
- 在vue中调用echarts中的地图散点图~
- echarts地图 禁止高亮显示(转载)
- Linux配置防火墙,开启80端口、3306端口
- openstack cpu pinning
- InstallShield 2015 安装 在vs2015
- BZOJ2553 Beijing2011禁忌(AC自动机+动态规划+矩阵快速幂+概率期望)