0
点赞
收藏
分享

微信扫一扫

第一章 资源限制

资源限制介绍

1、如果运行的容器没有定义资源(memory、cpu)限制。但是在namespace定义了LimitRanage限制。那么该容器会继承LimitRanage中的默认限制

2、如果Namespace没有定义LimitRange限制,那么该容器可以只要蓿主机的最大可用资源,直到无资源可用而触发主机(oom killer)

​​https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/assign-cpu-resource/​​

cpu以核心为单进行限制,单位可以是整核、浮点核心数或毫核(m/milli)

2=2核心=200% 0.5=500m=50% 1.2=1200m=120%

​​https://kubernetes.io/zh-cn/docs/tasks/configure-pod-container/assign-memory-resource/​​

memory以字节为单位,单位可以是E、P、T、G、M、K、Ei、Pi、Ti、Gi、Mi、Ki

1536Mi=1.5Gi

requests(请求)为kubernetes scheduler执行pod调度时node节点至少需要拥有的资源。

limits(限制)为pod运行成功后最多可以使用的资源上限

限制分类介绍

​限制单个容器的资源限制(可配置默认值)

限制单个pod的资源限制(可配置默认值)

限制单个命名空间使有的资源​

对单个容器的CPU和memory实现资源限制

containers:
- name: limit-test-container
image: lorel/docker-stress-ng
resources:
limits:
cpu: "2"
memory: "512Mi"
requests:
memory: "512M"
cpu: "2"

对单个Pod的CPU和memory实现资源限制

apiVersion: v1
kind: LimitRange
metadata:
name: limitrange
namespace: test
spec:
limits:
- type: Container #限制的资源类型
max:
cpu: "2" #限制单个容器的最大可以用的CPU
memory: "2Gi" #限制单个容器的最大可以用的内存
min:
cpu: "500m" #限制单个容器的最小需要使用CPU
memory: "512Mi" #限制单个容器的最小需要使用的内存
default:
cpu: "500m" #默认单个容器的CPU限制
memory: "512Mi" #默认单个容器的内存限制
defaultRequest:
cpu: "500m" #默认单个容器的CPU创建请求
memory: "512Mi" #默认单个容器的内存创建请求
maxLimitRequestRatio:
cpu: 2 #限制CPU limit/request比值最大为2,限制的CPU数除请求的CPU不能大于2
memory: 2 #限制内存limit/request比值最大为2,限制的内存数除请求的内存数不能大于2
- type: Pod
max:
cpu: "4" #限制单个Pod的最大CPU,所有容器CPU数加起来最大不能超过4
memory: "4Gi" #限制单个Pod最大内存,所有容器内存加起来最大不能超过4
- type: PersistentVolumeClaim
max:
storage: 50Gi #限制PVC最大的requests.storage
min:
storage: 30Gi #限制PVC最小的requests.storage

使用了LimitRange后,如果容器不配置资源限额,则默认按照LimitRange默认限额走。

对namespace的CPU和内存以及pod做资源限制

apiVersion: v1
kind: ResourceQuota
metadata:
name: quota
namespace: test
spec:
hard:
requests.cpu: "8"
limits.cpu: "8"
requests.memory: 8Gi
limits.memory: 8Gi
requests.nvidia.com/gpu: 4
pods: "6"
services: "6"

表示该test命名空间下的所有pod下的所有容器请求的CPU数量加起来不能超过8

表示该test命名空间下的所有pod下的所有容器限制的CPU数量加起来不能超过8

表示该test命名空间下的所有pod下的所有容器请求的内存数量加起来不能超过8

表示该test命名空间下的所有pod下的所有容器限制的内存数量加起来不能超过8

表示该test命名空间下的所有pod的数量不能超过6

表示该test命名空间下的所有service的数量不能超过6


举报

相关推荐

Java第一章

python第一章

docker 第一章

第一章.概论

第一章 绪论

第一章介绍

第一章 起步

0 条评论