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

Kubernetes 1.27.2 kubelet日志报错‘Failed updating cpu usage nano core’求助

Kubelet日志持续报错:"Failed updating cpu usage nano core"(zero or negative interval)

环境版本信息

  • CentOS Linux release 7.9.2009 (Core)
  • GO version go1.20.4
  • Docker-CE 24.0.2
  • cri-dockerd 0.3.2
  • Containerd Containerd.io 1.6.21
  • Kubernetes组件版本:
    • kube-apiserver:v1.27.2
    • kube-controller-manager:v1.27.2
    • kube-scheduler:v1.27.2
    • kube-proxy:v1.27.2
    • pause:3.9/pause:3.6(pause:3.6是kubectl init流程所需,原因未知)
    • etcd:3.5.7-0
    • coredns:v1.10.1

问题现象

master节点kubelet的journalctl日志持续输出以下错误:

Jun 06 09:33:00 controller-master kubelet[945]: E0606 09:33:00.520295     945 cri_stats_provider.go:757] "Failed updating cpu usage nano core" err="zero or negative interval (1686015180512008450 - 1686041401143535060)"
Jun 06 09:33:00 controller-master kubelet[945]: E0606 09:33:00.520325     945 cri_stats_provider.go:757] "Failed updating cpu usage nano core" err="zero or negative interval (1686015180513632138 - 1686041401144229382)"
Jun 06 09:33:00 controller-master kubelet[945]: E0606 09:33:00.520355     945 cri_stats_provider.go:757] "Failed updating cpu usage nano core" err="zero or negative interval (1686015180515665184 - 1686041401135390384)"
Jun 06 09:33:00 controller-master kubelet[945]: E0606 09:33:00.520386     945 cri_stats_provider.go:757] "Failed updating cpu usage nano core" err="zero or negative interval (1686015180517282786 - 1686041401133856169)"

错误核心为zero or negative interval,表明kubelet统计CPU使用率时,两次采样的时间戳出现倒序(后一次采样时间早于前一次)。

解决方案

1. 检查并修复节点时间同步

时间戳倒序最常见原因是节点时间回退或不同步。执行以下命令检查时间同步状态:

timedatectl status

确保NTP服务处于active状态,且节点时间与集群内其他节点一致。若时间不同步,重启时间同步服务:

systemctl restart chronyd
# 若使用ntpd则执行:
# systemctl restart ntpd

2. 升级cri-dockerd至稳定版本

cri-dockerd 0.3.2存在时间采样相关的已知bug,升级至0.3.4及以上版本可修复该问题:

  • 下载对应版本二进制文件:
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.4/cri-dockerd-0.3.4.amd64.tgz
  • 解压并替换现有二进制:
tar xvf cri-dockerd-0.3.4.amd64.tgz
mv cri-dockerd /usr/bin/
  • 重启相关服务:
systemctl restart cri-dockerd
systemctl restart kubelet

3. 排查containerd与cri-dockerd的冲突

同时运行containerd和cri-dockerd可能引发兼容性问题。若仅使用Docker作为容器运行时,可停止containerd服务:

systemctl stop containerd
systemctl disable containerd

之后重启kubelet服务。

4. 验证kubelet统计配置

检查kubelet配置文件(如/var/lib/kubelet/config.yaml),确认stats-collection-interval参数设置合理(默认10秒),避免因采样间隔过短导致时间戳冲突。

5. 临时缓解:重启kubelet服务

若需快速临时消除错误,可重启kubelet重置统计状态:

systemctl restart kubelet

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:54:55