Kubernetes中,资源限制包括两个属性:requests(请求)和limits(限制)。它们的区别如下:
Requests(请求)
请求是一个容器所需的最小资源量,Kubernetes必须保证在Pod运行时为容器分配这些资源。如果请求的资源不可用,则Pod将不会启动。如果Pod中的其他容器使用了请求的资源,Kubernetes将不会将资源分配给该容器,直到可用资源满足请求。
Limits(限制)
限制是一个容器能够使用的最大资源量。它是一个上限,如果容器尝试使用超出限制的资源量,Kubernetes将限制该容器的资源使用。如果Pod中的其他容器没有使用限制的资源,那么该容器可以使用超出请求的资源量。
当容器使用的资源超过了它的限制时,Kubernetes将启动一个名为OOMKiller的进程,它会杀死该容器的进程。这将导致容器中正在运行的应用程序被强制终止,从而防止它进一步使用资源。
使用方式
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: my-image
resources:
limits:
cpu: "1"
memory: "256Mi"
requests:
cpu: "0.5"
memory: "128Mi"