暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kubernetes中Pod调度与内存设置Request的关系

运维笔谈 2025-04-06
185

在Kubernetes中,Pod的调度确实主要基于资源请求(request)而非实际使用量。

一、内存Request的作用

1. 调度依据:Kubernetes调度器使用Pod的`spec.containers[].resources.requests.memory`值来决定将Pod放在哪个节点上。

2. 资源预留:节点会为Pod预留请求的内存量,确保Pod有足够资源运行。

3. 调度算法:调度器检查节点是否有足够的未分配内存(节点总内存 - 已分配request内存)来满足新Pod的request。

二、内存Limit

- 内存limit是Pod能使用的最大内存量

- 超过limit会导致容器被OOM killed

- 但limit不影响调度决策

三、最佳实践

1. 合理设置request值:

- 设置过低可能导致节点过度分配。

- 设置过高会浪费集群资源。

2. 监控实际使用量:

    kubectl top pods

       可以帮助调整request和limit值

    示例配置

      #yaml
      apiVersion: v1
      kind: Pod
      metadata:
        name: myapp
      spec:
        containers:
        - name: app
          image: myapp:1.0
          resources:
            requests:
              memory: "256Mi"
            limits:
              memory: "512Mi"

      调度器会寻找至少有256Mi可用内存的节点,但容器内存使用超过512Mi时会被终止。

      文章转载自运维笔谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论