You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes v1.6.7 CPU资源限制不生效问题咨询

解决Kubernetes v1.6.7中Pod超出CPU限制的问题

嘿,针对你在Kubernetes v1.6.7集群里遇到的Pod无视CPU限制的问题,我结合这个老版本的特性整理了几个关键检查点,应该能帮你定位原因:

1. 检查kubelet的--enforce-node-allocatable参数

在v1.6这个早期版本里,kubelet默认可能没完全启用Pod资源限制的强制约束。你得确保kubelet启动参数里包含:

--enforce-node-allocatable=pods

这个参数是让kubelet硬限制Pod资源使用的关键,如果没设置,Pod就可能随心所欲占用CPU。

你可以用下面的命令查看当前kubelet的启动参数:

ps aux | grep kubelet

要是没看到这个参数,就去修改kubelet的配置文件(一般在/etc/systemd/system/kubelet.service.d/10-kubeadm.conf这类路径),加上这个参数后重启kubelet:

systemctl daemon-reload
systemctl restart kubelet

2. 确认节点cgroup CPU子系统正常挂载

Debian 8.7的3.16内核默认支持cgroup,但得确认CPU子系统已经正确挂载:

mount | grep cpu

正常情况下你会看到类似cgroup on /sys/fs/cgroup/cpu type cgroup (rw,relatime,cpu)的输出。要是没挂载,得手动挂载或者检查系统的cgroup配置。

3. 检查Pod的QoS类别

如果你的Deployment只设了CPU limits却没设requests,Pod会被归为BestEffort QoS类别——这种情况下Kubernetes根本不会强制限制CPU使用!你得确保Pod模板里同时配置requests.cpu和limits.cpu,比如:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: example-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: example
    spec:
      containers:
      - name: example-container
        image: nginx
        resources:
          requests:
            cpu: "100m"
          limits:
            cpu: "200m"

当requests和limits相等时,Pod会进入Guaranteed QoS类别,Kubernetes会严格执行CPU限制;就算requests小于limits,Burstable类别也会限制CPU的最大使用量。

4. 检查kubelet的--cpu-cfs-quota参数

v1.6里kubelet默认应该启用了CPU CFS配额(这是实现CPU限制的核心机制),但你还是得确认下启动参数里是不是--cpu-cfs-quota=true(默认是true,但万一被手动改成false就失效了)。同样用ps aux | grep kubelet查看,要是设成false,改回来重启kubelet就行。

额外提一句

Kubernetes v1.6.7确实太老了,早就不在官方支持范围内了,后续版本对资源管理做了超多优化和改进。如果条件允许,建议你升级到新的稳定版本,不仅能解决这类问题,安全性也能提升不少。

内容的提问来源于stack exchange,提问作者matth3o

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:16:18