K8S实现资源预留分析

本文详细介绍了Kubernetes中资源预留的计算方式、配置方法及其底层实现,包括Node Allocatable Resource的计算、kube-reserved和system-reserved的设置以及Cgroup的管理。并讨论了官方建议的cgroup配置,提醒在生产环境中谨慎使用systemReservedCgroup以防止系统资源不足或OOM风险。
摘要由CSDN通过智能技术生成

一、kubernetes中关于资源的计算方式

allocatablle
Kubernetes中通过节点用allocatableKubelet Node Allocatable用来为Kube组件和System进程预留资源,从而保证当节点出现满负荷时也能保证Kube和System进程有足够的资源。

节点可为pod分配的资源计算方法:
Node Allocatable Resource = Node Capacity(资源总大小) - Kube-reserved(kubz组件保留资源) - system-reserved(系统保留资源) - eviction-threshold(用户设置的驱逐阈值)

无论Pod怎么消耗资源,都不会超过分配的Node Allocatable Resource,一旦超过,Pod就会触发驱逐策略。

二、kubernetes中关于资源预留的配置方式

在kubelet的启动参数中,可配置kubernetes的资源预留相关参数:

  • –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,否则kubelet启动会报错。
  • –kube-reserved,用于配置为kube组件(kubelet,kube-proxy,dockerd等)预留的资源量,比如—kube-reserved=cpu=1000m,memory=8Gi,ephemeral-storage=16Gi。
  • –kube-reserved-cgroup,如果你设置了–kube-reserved,那么请一定要设置对应的cgroupÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值