1. 对 Pod 进行资源分配和资源限制
有两种方式可以限制资源:
在 Pod 的属性中配置
resource 字段
通过 limitRange 限制
注意:
在 kubernetes 系统上,1 个单位的 cpu 相当于虚拟机上的一颗虚拟 cpu(vcpu),或者相当于物理机上的一个超线程(HyperThread,也就是一个逻辑CPU)
支持分数计量方式
一个核心(1 core)相当于 1000 个微核心(millicores)
resource 下有两个字段:
requests : 表示容器所在节点资源的最小值
limits : 表示消耗资源的最大值
其中:requests 和 limits 下都有两个字段以供限制:
memory : 内存
cpu : cpu
yaml 文件的模板为:
一个 LimitRange(限制范围) 对象提供的限制能够做到:
在一个命名空间中实施对每个 Pod 或 Container 最小和最大的资源使用量的限制。
在一个命名空间中实施对每个 PersistentVolumeClaim 能申请的最小和最大的存储空间大小的限制。
在一个命名空间中实施对一种资源的申请值和限制值的比值的控制。也就是设置一个命名空间中对计算资源的默认申请/限制值,并且自动的在运行时注入到多个 Container 中
注意:如果 Pod 中设置了 resources 来限制,又有 limitrange 限制,那么:
如果容器里声明了请求和限制大于或者小于 LimitRange 里的 max 或者 min,都会导致 Pod 创建不成功。
limitRange 的 yaml 文件:
limitRange 设置 default 默认值:
注意:如果容器里没有声明请求和限制则,使用默认的请求和限制
2. 对命名空间进行资源配额
对命名空间进行资源配额,例如: 某个命名空间中最多能创建多少个 Pod
注意:
limitRange 用来限制每个 Pod 的资源
resourceQuota 用来限制项目里可以使用多少资源
评论