一、容器限制

可以在 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"