栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Kubernetes 12 (k8s 容器资源限制)

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Kubernetes 12 (k8s 容器资源限制)

目录
  • 一、k8s容器资源限制
    • 1.内存限制
    • 2.cpu限制
    • 3.为namespace设置资源限制
    • 4.为namespace设置资源配额
    • 5. 为Namespace 配置Pod配额

一、k8s容器资源限制
  • Kubernetes采用request和limit两种限制类型来对资源进行分配。
    request(资源需求):即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod。
    limit(资源限额):即运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额。
  • 资源类型:
    CPU 的单位是核心数,内存的单位是字节。
    一个容器申请0.5个CPU,就相当于申请1个CPU的一半,你也可以加个后缀m 表示千分之一的概念。比如说100m的CPU,100豪的CPU和0.1个CPU都是一样的。
  • 内存单位:
    K、M、G、T、P、E #通常是以1000为换算标准的。
    Ki、Mi、Gi、Ti、Pi、Ei #通常是以1024为换算标准的。
1.内存限制

为了实验效果,真机将stress的tar包传给server1


server1导入stress镜像,并上传至仓库

创建一个目录limit 用来存放编辑pod.yaml文件;
设置容器内存为200,但限制其可使用的内存资源为100M

应用资源清单,可以看到pod无法创建成功,这因为使用的内存超过了上限;
如果容器超过其内存限制,则会被终止
查看日志


删除pod节点,修改上限内存为300M

再次执行清单,并查看pod节点信息,成功创建

查看日志

实验完成之后,将pod.yaml清除

2.cpu限制

首先将server2的cpu设置为2个核心

编辑pod1.yaml文件,将容器的cpu上限设为10,下限设为5,使用2个cpu

执行清单pod1.yaml,pod处于pending状态,因为cpu数量不在限定范围内,虚拟机也就两个cpu;

查看详细信息,cpu限制直接影响调度,调度失败;
调度失败是因为申请的CPU资源超出集群节点所能提供的资源,但CPU 使用率过高,不会被杀死

修改pod1.yaml文件,使其满足cpu要求

删除原来的cpu-demo,重新应用pod1.yaml文件,pod成功运行

3.为namespace设置资源限制

编辑limitrange.yaml文件,设定最大最小内存和cpu限制以及默认运行参数限制;
应用资源清单

查看详细信息;
LimitRange 在 namespace 中施加的最小和最大内存限制只有在创建和更新 Pod 时才会被应用,改变 LimitRange 不会对之前创建的 Pod 造成影响。

接下来注释pod.yaml文件中定义的内存限制,使用limitrange.yaml文件中的默认限制

重新应用资源清单

查看pod详细信息

可以看到pod会使用limitrange.yaml默认的内存和cpu限制

编辑pod.yaml文件,重新打开自定义限制;
应用pod.yaml文件创建pod时报错,因为容器配置文件中设定的内存50Mi限制小于limitrange文件中规定的范围(最低为100Mi)

4.为namespace设置资源配额
  • 创建的ResourceQuota对象将在default名字空间中添加以下限制:
    每个容器必须设置内存请求(memory request),内存限额(memory limit),cpu请求(cpu request)和cpu限额(cpu limit)。
    所有容器的内存请求总额不得超过1 GiB;
    所有容器的内存限额总额不得超过2 GiB;
    所有容器的CPU请求总额不得超过1 CPU;
    所有容器的CPU限额总额不得超过2 CPU。

编辑limitrange.yaml配置文件

执行配额清单limitrange.yaml,查看资源配额

注意有了配额后,创建pod必须指定内存的上限和下限,cpu的上限和下限;
如果将内存限制注释,那么执行清单pod.yaml的时候会报错如下图:

重新编辑配置文件,指定内存和cpu的上下限;
应用配置,查看配额详细信息可以看到已使用的资源量

执行配额清单

将pod.yaml中的限制再次注释,改名为memory-demo-2

查看pod详细信息

查看其cpu和内存的限制

可以看到配额大小发生了变化


再次更改pod.yaml,打开限制,改名为memory-demo-3

此时pod创建失败,因为限额规定每个容器最大cpu使用量为1,而memory-demo-3的cpu限制为2

并查看配额,因为此时请求1个cpu,但是只剩了0.8个可以使用,因此无法为pod分配资源;
修改清单文件

执行清单,并查看配额;
可以看到,它的配额是在不断累加的,直至达到最大限制为之

5. 为Namespace 配置Pod配额

查看pod信息,有3个pod正在运行

ResourceQuota也可以限制namespace中运行的Pod数,超出设定则无法建立;
编辑limitrange.yaml,将ns中的pod数量配额限制为3


执行清单limitrange.yaml,查看配额信息

实验完毕之后,删除pod节点和配额

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/277281.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号