k8s 练习 - 资源限制
原创
©著作权归作者所有:来自51CTO博客作者Belbert的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、容器限制
可以在 Pod 中为每个容器设置 CPU 和内存的请求和限制,可以通过在 PodSpec 中定义容器的 resource 字段来实现。
apiVersion: v1
kind: Pod
metadata:
name: wp
namespace: web
spec:
containers:
- name: nginx
image: nginx:1.23.3-alpine
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "1500m"
- name: php
image: harbor.Belkuy.top/base/php:8.1
resources:
requests:
memory: "256Mi"
cpu: "500m"
limits:
memory: "2Gi"
cpu: "2"
二、Pod 限制
可以在 Pod 级别上设置 CPU 和内存的请求和限制,以控制 Pod 中所有容器的资源使用量,可以通过在 PodSpec 中定义 spec.resources 字段来实现。
apiVersion: v1
kind: Pod
metadata:
name: wp
namespace: web
spec:
containers:
- name: nginx
image: nginx:1.23.3-alpine
- name: php
image: harbor.Belkuy.top/base/php:8.1
resources:
requests:
memory: "512Mi"
cpu: "1"
limits:
memory: "3Gi"
cpu: "3"
三、命名空间限制
可以使用 LimitRange 对象为整个命名空间设置 CPU 和内存的默认请求和限制,以确保命名空间中的所有 Pod 和容器都遵循相同的资源使用限制。这种情况下,所有容器的请求和限制都将遵循这些值。
apiVersion: v1
kind: LimitRange
metadata:
name: limit-range
namespace: web
spec:
limits:
- default:
memory: "256Mi"
cpu: "500m"
defaultRequest:
memory: "128Mi"
cpu: "250m"
type: Container
另外使用 ResourceQuota 对象设置命名空间级别的资源配额,可以用于限制命名空间中所有资源的总量,例如 CPU、内存、存储等。例如限制命名空间 web 中的总 CPU 和内存使用量不超过 4 个 CPU 核和 4GB 的内存。
apiVersion: v1
kind: ResourceQuota
metadata:
name: example-quota
namespace: web
spec:
hard:
cpu: "4"
memory: "4Gi"