在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值
示例配置
#yamlapiVersion: v1kind: Podmetadata:name: myappspec:containers:- name: appimage: myapp:1.0resources:requests:memory: "256Mi"limits:memory: "512Mi"
调度器会寻找至少有256Mi可用内存的节点,但容器内存使用超过512Mi时会被终止。
文章转载自运维笔谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




