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)进程来防止资源滥用。

为什么需要资源请求和限制?

  1. 资源公平分配‌:通过资源请求,Kubernetes可以确保每个容器都能获得其所需的最低资源量,从而避免资源争用和性能下降。
  2. 资源保护‌:资源限制可以防止单个容器消耗过多的资源,影响集群中其他容器的正常运行。
  3. 提高集群效率‌:通过合理的资源请求和限制设置,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

posted @ 2025-03-25 11:07  Devopser06  阅读(54)  评论(0)    收藏  举报  来源