K8s(16)——资源限制

目录

资源限制与资源类型

内存限制

limitrange

ResourceQuota


资源限制与资源类型


Kubernetes采用request和limit两种限制类型来对资源进行分配。

request(资源需求):即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod,这就是资源下限。
limit(资源限额):即运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源上限。

内存限制

为了实验效果,提前给仓库上传了stress镜像

编辑pod.yaml文件

[root@k8s2 limit]# vim limit.yaml

apiVersion: v1

kind: Pod

metadata:

name: memory-demo

spec:

containers:

- name: memory-demo

image: stress

args:

- --vm

- "1"

- --vm-bytes

- 200M  #使用200M

resources:

requests:

memory: 50Mi  #下限50M

limits:

memory: 100Mi #上限100M

应用pod.yaml文件,很明显pod无法启动,这因为使用的内存超过了上限。可以查看日志

[root@k8s2 limit]# kubectl apply -f limit.yaml

很明显pod无法启动,这因为使用的内存超过了上限。

[root@k8s2 limit]# kubectl get pod

NAME READY STATUS RESTARTS AGE

memory-demo 0/1 OOMKilled 0 2s

limitrange

默认cpu内存设定,最大最小限制

[root@k8s2 limit]# cat range.yaml

apiVersion: v1

kind: LimitRange

metadata:

name: limitrange-memory

spec:

limits:

- default: #默认资源设置

cpu: 0.5

memory: 512Mi

defaultRequest:

cpu: 0.1

memory: 256Mi

max:

cpu: 1

memory: 1Gi

min:

cpu: 0.1

memory: 100Mi

type: Container

[root@k8s2 limit]# kubectl apply -f range.yaml

设定完成后,pod需满足设定cpu和内存范围,不设定则默认生效。

创建的pod自动添加限制

[root@k8s2 limit]# kubectl run demo --image nginx

 自定义限制的pod也需要在limitrange定义的区间内

ResourceQuota

资源配额

创建的ResourceQuota对象将在default名字空间中添加以下限制:
每个容器必须设置内存请求(memory request),内存限额(memory limit),cpu请求(cpu request)和cpu限额(cpu limit),以及pod数量

[root@k8s2 limit]# vim range.yaml

apiVersion: v1

kind: LimitRange

metadata:

name: limitrange-memory

spec:

limits:

- default:

cpu: 0.5

memory: 512Mi

defaultRequest:

cpu: 0.1

memory: 256Mi

max:

cpu: 1

memory: 1Gi

min:

cpu: 0.1

memory: 100Mi

type: Container

---

apiVersion: v1

kind: ResourceQuota

metadata:

name: mem-cpu-demo

spec:

hard:

requests.cpu: "1"

requests.memory: 1Gi

limits.cpu: "2"

limits.memory: 2Gi

pods: "2"

[root@k8s2 limit]# kubectl apply -f range.yaml

查看规则

[root@k8s2 limit]# kubectl describe resourcequotas

Name: mem-cpu-demo

Namespace: default

Resource Used Hard

-------- ---- ----

limits.cpu 500m 2

limits.memory 512Mi 2Gi

requests.cpu 100m 1

requests.memory 256Mi 1Gi

  1.  配额是针对namespace施加的总限额,命名空间内的所有pod资源总和不能超过此配额
  2.  创建的pod必须定义资源限制,内存和cpu都得设置

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值