K8s Pod管理与资源限制配置

准备工作:你需要知道的基础概念与环境

在动手配置之前,先理解两个核心术语。资源请求(requests)是Pod启动时保证获得的最低资源量,调度器会根据它选择合适的节点。资源限制(limits)是Pod允许使用的最大资源上限,超过限额的Pod可能被杀死或限流。
内存单位常用Mi(兆字节)或Gi(吉字节),CPU单位常用m(毫核,1000m=1核)。

你的环境需要满足:已部署Kubernetes集群,并且kubectl客户端已连接集群。
可以用kubectl cluster-info验证连接状态。
如果没有集群,建议使用Minikube或Kind搭建本地测试环境。

编写YAML:为Pod配置CPU与内存限制

创建一个名为nginx-limits.yaml的文件,内容如下。
这个示例定义了一个Nginx Pod,设置CPU请求为250m(即0.25核),内存请求为256Mi;
CPU限制为500m,内存限制为512Mi。

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx
    image: nginx:latest
    resources:
      requests:
        memory: "256Mi"
        cpu: "250m"
      limits:
        memory: "512Mi"
        cpu: "500m"

这里的关键点:resources字段必须写在containers下
requests和limits中的CPU和内存键值对不要写错单位。
CPU单位用m或整数(如1代表1核),内存用Mi、Gi或Ki。

保存文件后,执行kubectl apply -f nginx-limits.yaml创建Pod。
创建成功后,可以使用kubectl get pod nginx-pod查看状态,直到显示Running。

避坑指南:常见错误与注意事项

新手最常遇到的问题是Pod处于Pending状态,原因通常是节点资源不足无法满足requests。
可以用kubectl describe pod nginx-pod查看Events部分,看到“0/1 nodes are available: 1 Insufficient cpu”之类的提示。
解决方法:检查节点可用资源,或调低requests值。

另一个坑是OOMKilled(内存超出限制被杀死)。
如果Pod实际使用内存超过limits值,Pod会被终止并自动重启。
查看kubectl get pod显示Restart次数增多时,可以用kubectl logs nginx-pod --previous查看上次崩溃日志。
建议根据应用负载设置合理的limits,比requests高20%-50%即可。

注意:如果不设置requests,K8s会默认使用limits值作为requests,可能导致资源浪费或调度失败。
所以即使你只关心上限,也建议显式写出requests。

效果验证:查看Pod真实资源使用情况及验证限制

Pod运行后,用以下命令查看资源使用:

kubectl top pod nginx-pod

输出会显示CPU和内存的当前使用量。
对比你设定的requests和limits,确认Pod实际占用落在预期范围内。

为了测试内存限制是否生效,可以用一个压力工具。
例如替换容器镜像为progrium/stress,并在Pod中执行内存压力命令。
但生产环境不推荐。
更安全的方式是观察kubectl describe pod nginx-pod中的Events,如果内存超过limits会记录“OOMKilled”事件。

你也可以用kubectl edit pod nginx-pod临时调整资源数值,然后再次观察Pod行为。
注意:修改只对当前Pod生效,如果Pod被重建会恢复原配置。

常见问题解答

问:CPU限制设置后怎么感觉没效果?
答:CPU限制是通过CFS配额实现的,在单核高负载时才会明显。可以用kubectl exec进入Pod,执行cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us查看实际配额值(-1表示不限)。

问:内存限制设置得太低,Pod一直重启怎么办?
答:先调高limits,或者检查应用是否有内存泄漏。可以用kubectl logs查看日志,排除代码问题。

问:能不能动态调整正在运行的Pod资源?
答:K8s 1.19+支持InPlaceUpdate(alpha功能),但生产环境不推荐。通常建议删除并重新创建Pod,或者通过Deployment更新。

通过本文的完整步骤,你已经掌握了K8s Pod管理与资源限制配置的核心操作。
建议从简单的YAML开始,逐步调整实际生产中的资源数值,并配合监控工具(如Prometheus)长期观察。
遇到异常时,先回看避坑部分,再结合kubectl describe定位问题。

分享到:
上一篇
K8s零基础集群搭建实战:从三台CentOS开始
下一篇
K8s Service服务发布配置:零基础也能搞懂的实操教程
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意