2025,每天10分钟,跟我学K8S(二十二)- 对象属性 - resources资源限制
在生产环境和测试环境共用node节点的情况下,如果物理资源不够用,不可避免会出现抢占物理资源的情况,在Kubernetes中,resources 指的是容器或Pod可以使用的计算资源,主要包括CPU和内存。Kubernetes通过资源请求(requests)和资源限制(limits)来管理这些资源。
CPU资源
CPU资源通常以“毫核”(m)为单位进行分配,1核等于1000毫核。例如,如果您想为一个容器分配0.5核的CPU资源,您可以设置CPU的请求和限制为500m。
内存资源
内存资源通常以字节为单位进行分配,但更常用的单位是Mi(兆字节)或Gi(吉字节)。例如,为容器分配512Mi的内存资源,意味着设置了512兆字节的内存请求或限制。
资源请求与限制
- 资源请求(requests):容器正常运行所需的最低资源量。Kubernetes调度器会根据资源请求来找到合适的节点,以确保集群资源的合理利用。
- 资源限制(limits):容器可以使用的最大资源量。如果容器超过了其资源限制,Kubernetes会进行限制,例如通过节流(throttling)或杀死(killing)进程来防止资源滥用。
为什么需要资源请求和限制?
- 资源公平分配:通过资源请求,Kubernetes可以确保每个容器都能获得其所需的最低资源量,从而避免资源争用和性能下降。
- 资源保护:资源限制可以防止单个容器消耗过多的资源,影响集群中其他容器的正常运行。
- 提高集群效率:通过合理的资源请求和限制设置,Kubernetes可以更好地利用集群资源,提高整体性能和效率。
下面是一个创建deployment的yaml示例。从注释来看可以很明白的知道,example-container容器请求了64Mi的内存和250m的CPU资源,同时设置了128Mi的内存和500m的CPU资源限制。您可以根据实际需求调整这些值。
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-deployment
namespace: dev
spec:
replicas: 3 # 副本数
selector:
matchLabels:
app: example-app
template:
metadata:
labels:
app: example-app
spec:
containers:
- name: nginx-res
image: m.daocloud.io/docker.io/nginx # 使用nginx镜像
ports:
- containerPort: 80
resources: # 资源请求和限制
requests:
memory: "64Mi" # 内存请求
cpu: "250m" # CPU请求
limits:
memory: "128Mi" # 内存限制
cpu: "500m" # CPU限制
查看这个namespace下的pod

浙公网安备 33010602011771号