摘要:本文介绍了几种限制资源使用的方法。 方法2的例子有它的位置。 虽然限制方法 1 很好,但它不是必需的,很容易忘记,而且占用太多资源。 因此,设置全局资源限制是必要的。 ,以防止这种情况发生。
本文介绍了K8S中限制资源使用的几种方法。
资源类型
K8S 允许限制两种类型的资源:CPU 和内存。
CPU单元如下。
一个正实数,表示分配的 CPU 数量。 也可以使用小数点。 例如,0.5代表0.5。 CPU指的是CPU的一半时间。 2代表两个CPU。
正整数m也代表1000m=1,所以500m就是0.5对应 。
内存单位:
正整数,直接数字代表字节
k、 K、ki、千字节
m、M、mi、兆字节
g、G、Gi、千兆字节
t >、T、Ti、太字节
p、P、 Pi ,PB
方法一:在 pod 容器规范中设置资源限制
在 K8S 中,资源设置适用于 Pod 内的容器。 主要有两大类。 Limit上限控制和require下限控制。 它的位置是:
spec.containers[].resources.limits.cpu
spec.containers[].resources.limits.memory
spec.containers[].resources.requests.cpu
spec.containers[].resources.requests.memory
示例:
apiVersion: v1kind: Podmetadata: name:frontendspec:containers: - name: . .. 图片:... 资源: 请求:内存:“64Mi” cpu:“250m” 限制:内存:“128Mi” cpu:“500m”
方法二:命名空间限制
虽然方法一比较好,但是不是必需的,而且很容易忘记设置Limits/Requests,导致过度使用主机资源。 。 ,因此,为了防止这种情况发生,需要设置全局资源限制。 K8S 通过在命名空间中设置LimitRange来实现此目标。
设置默认请求/限制:
默认请求/limit 而Pod规范中没有设置request/limit,这个设置会限制资源的无限制使用,有效避免使用。
设置位于此处:
spec.limits[].default.cpu,默认限制
spec.limits[].default.memory,同上
spec.limits[].defaultRequest.cpu,默认请求
spec.limits[].defaultRequest.memory,同上
示例:
apiVersion: v1kind: LimitRangemetadata : 名称: 规格: 限制: - 默认: 内存: 512Mi cpu: 1 默认请求: 内存: 256Mi cpu: 0.5 类型: 容器
配置请求 / 限制约束
K8S 还允许您对请求/限制设置以下限制:
针对特定资源的请求的约束是>=特定值
针对特定资源的限制必须是 ><=特定值
这样会随机设置pod规范中的limit,可以有效避免资源耗尽的情况请求。 是随机设置的,这会导致 Pod 无法获得足够的资源。 情况。
设置位于此处:
spec.limits[].max.cpu,limit是必需的 <= value
spec.limits[].max.memory,与上面相同
spec.limits[]。分钟。 CPU,请求必须是>=特定值
spec.limits[].min.memory,同上
示例:
apiVersion: v1kind: LimitRangemetadata: name: spec:limits: [ k4] 最大:内存:1Gi cpu:800m 最小:内存:500Mi cpu:200m 类型:容器
参考
管理容器的计算资源
配置默认命名空间的内存请求和限制
配置命名空间的默认 CPU 请求和限制
配置命名空间的最小和最大内存约束
配置最小和最大内存约束最大 CPU 限制
评论前必须登录!
注册