Kubernetes 资源管理文档

一、Kubernetes 资源管理的概念

1、资源

在 Kubernetes 中,我们已经明确Node和Pod的概念,针对于资源来说,Node 提供资源,而 Pod 使用资源。
资源可以区分为:
1)计算资源:CPU、Memory、GPU
2)存储资源:Disk、SSD
3)网络资源:Network Bandwidth、IP、Ports

上述三者同时可以区分为:可压缩(例如CPU)和不可压缩(例如内存)

资源管理的意义
1)符合K8s的核心功能,基于自动为Pod分配主机的目的,调度必须满足相应主机具有足够资源,合理地将资源分配给容器使用
2)对于大规模K8s集群来说,保证应用稳定性的同时提高资源利用率

2、节点可用资源

节点上的所有资源得以分配给Pod实际上是理想情况下的假设,在实际运行时我们需要考虑其他的进程。
节点资源实际可区分为以下几部分
1)Kubernetes 集群的组件(Kubelet、Docker等)
2)系统相关的进程(比如 SSHD、Udev等)
因此,我们在分配资源的过程中,自然地需要预留部分资源,通过以下参数控制

--kube-reserved=[cpu=100m][,][memory=100Mi][,][ephemeral-storage=1Gi]
//控制预留给 Kubernetes 集群组件的 CPU、Memory 和存储资源
--system-reserved=[cpu=100mi][,][memory=100Mi][,][ephemeral-storage=1Gi]
//预留给系统的 CPU、Memory 和存储资源。

3)eviction threshold 不可用资源
4)实际可分配资源

二、资源对象

1.请求(Requests)

容器请求要使用的资源,Kubernetes 会保证 Pod 能使用到这么多的资源,是一种依据,只有当节点上的可用资源(实际为节点可分配大于 Pod 请求的各种资源时,调度器才会把 Pod 调度到该节点上

2.上限(Limits)

Pod 能使用的资源上限,是实际配置到内核 cgroups 里面的配置数据
例如 对于内存
会转换成 docker run 命令行的 --memory 大小
最终配置到 cgroups 对应任务的 /sys/fs/cgroup/memory/……/memory.limit_in_bytes 中

3.三种管理方式

1、单个资源对象的资源管理

即创建一个yaml文件,在其中对于资源进行分配

2、Limit Range

它基于是namespace的资源管理,可以配置某个 Namespace 默认的 Request 和 Limit 值,若创建pod后发现不符合规则限制条件,将暂停创建pod
此外,如果 Pod 自己配置了对应的参数,Kubernetes 会使用 Pod 中的配置

**意义:**使得多个Pod不再需要手动配置参数,让 Namespace 中的 Pod 资源规范化,便于统一的资源管理

3、Resource Quotas资源配额

它限制了某个 Namespace 可以使用的资源总额度,包括 CPU、Memory 的总量Kubernetes 自身对象(比如 Pod、Services 等)的数量。

意义: 防止某个 Namespace 的用户不加限制地使用资源

限制: 它不能根据集群资源动态伸缩,配置之后,Resource Quota 就不会改变

三、配置规则总结

1、每个namespace有且只有一个limit range和quota

2、pod和容器对应关系:容器max容器数<=pod max;容器min容器数<=pod min

3、在同一个namespace下,Limit Range和单个资源对象的资源管理可以同时使用,同种类型(CPU或者memory)配置规则:resource的单个资源配置范围不能超过limit的容器范围,总和不能超过limit的pod范围。
配置正确,kubernetes将按照resource进行资源管理,如果配置错误,无法创建对象。

4、quota需要配合Limit Range或者resource,如果没有配置Limit Range时,每次创建对象时,必须配置resource,否则无法创建对象

5、该namespace下,所有pod/容器的CPU或者memory的limit、request的任意一种总量大于quota相对应的值后,无法分配更多的系统资源,无法创建新的资源对象,无法扩容RC、RS等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值