当前位置: 首页 > news >正文

Kubernetes 恢复虚拟机快照后 Pod 一直 ContainerCreating,Calico Unauthorized 问题排查全过程(新手踩坑记录)

最近在做 Kubernetes 实验的时候,我遇到了一个非常离谱的问题:恢复虚拟机快照之后,Pod 一直卡在ContainerCreating
当时我一度以为是镜像拉取失败、网络问题,甚至怀疑是时间同步的问题。折腾了很久才发现,原来是Calico 网络插件认证失效

这篇文章就记录一下我整个排查和解决的过程,希望以后自己再遇到类似问题能少走点弯路。


一、事情的起因

我当时在虚拟机里跑了一个 Kubernetes 集群,里面已经部署了一些组件,比如:

  • monitoring(Prometheus 监控)

  • argocd

  • ai-services(我自己部署的 ollama 服务)

后来因为实验需要,我直接恢复了 VMware 的快照

恢复之后第一件事我就看了一下集群状态:

kubectl get pods -A

结果发现:

ai-services ollama-xxxx 0/1 ContainerCreating

一直卡着不动。


二、最开始的错误判断

一开始我以为是镜像拉取问题

因为ContainerCreating很多时候是:

  1. 拉取镜像

  2. 创建容器

  3. 挂载卷

  4. 启动容器

所以我第一反应是:

  • Docker Hub 网络慢

  • 镜像没拉下来

但是等了很久也没动静。


三、查看 Pod 详细信息

于是我开始用 Kubernetes 排错最常用的一条命令:

kubectl describe pod <pod名字> -n ai-services

然后在Events里面看到了关键报错:

Failed to create pod sandbox: plugin type="calico" failed (add): error getting ClusterInformation: connection is unauthorized: Unauthorized

看到这里基本就确定了:

不是镜像问题,是网络插件的问题。

我用的 Kubernetes 网络插件是Calico


四、为什么恢复快照会导致这个问题

后来查了一下原理,大概是这样的:

Kubernetes 里面很多组件都会用ServiceAccount Token去访问 API Server。

比如:

  • kubelet

  • calico

  • controller

而这些 Token 是会刷新的。

当我恢复虚拟机快照的时候,就会出现一个问题:

API Server 状态 = 新的 Calico Pod 里的 Token = 旧的

于是 Calico 访问 API Server 的时候就会报:

Unauthorized

然后就导致:

Pod 网络创建失败 ↓ Pod sandbox 创建失败 ↓ Pod 一直 ContainerCreating

五、解决办法(其实非常简单)

知道原因之后解决方法就很简单了:

重启 Calico。

执行:

kubectl delete pod -n kube-system -l k8s-app=calico-node

然后再执行:

kubectl delete pod -n kube-system -l k8s-app=calico-kube-controllers

Kubernetes 会自动重新创建这些 Pod。

新的 Pod 会重新获取 Token。


六、验证是否恢复正常

然后我再看了一下系统组件:

kubectl get pods -n kube-system

calico-node变成:

Running

再查看业务 Pod:

kubectl get pods -A

这时候我的ollama终于变成:

Running

问题解决。


七、这次踩坑总结

这次最大的教训就是:

恢复虚拟机快照对 Kubernetes 影响非常大。

因为 Kubernetes 里面很多组件都是有:

  • Token

  • 证书

  • 状态同步

一旦时间回退或者状态回退,就可能导致认证问题。

以后如果我再遇到:

Pod ContainerCreating Calico Unauthorized

我会第一时间想到:

重启 Calico。


八、给和我一样的新手的建议

如果你也遇到类似情况,可以按这个顺序排查:

1️⃣ 看 Pod 状态

kubectl get pods -A

2️⃣ 查看 Pod 详细信息

kubectl describe pod <pod名>

3️⃣ 看 Events

如果出现:

calico Unauthorized

直接重启 Calico:

kubectl delete pod -n kube-system -l k8s-app=calico-node

基本就能解决。


结尾

这次折腾了很久,其实最后发现解决方法只有一条命令。

有时候Kubernetes 排错就是这样:

你可能会怀疑网络、怀疑镜像、怀疑配置,但最后发现只是某个组件需要重启。

记录一下这次踩坑,希望以后少踩坑。

http://www.jsqmd.com/news/471743/

相关文章:

  • Android Studio SDK安装踩坑实录:从代理设置到HAXM安装的完整解决方案
  • CH9120芯片实战:5分钟搞定以太网转串口透传(附配置工具下载)
  • OpenClaw 智能搜索 Skill 创建:从零到一的保姆级图文教程
  • Python → WASM+WASI编译避坑手册:12个生产环境踩过的坑,第7个90%开发者仍在犯
  • Claude Cowork:10GB 虚拟机暗中运行,安全还是负担?
  • Charles抓包工具安卓配置:为什么你的手机请求看不到?(附最新证书解决方案)
  • LoadRunner四大版本实战指南:从Professional到Developer的选型与部署策略
  • 实战解析:如何通过requestrepo高效检测XXE漏洞
  • OpenStreetMap:开源地图如何挑战科技巨头的垄断地位
  • 小白也能看懂!3分钟掌握AI Agent设计模式,收藏这份进阶指南!
  • Gaussian如何计算垂直激发能
  • 西门子S7-1200与V90伺服PN口通信实战:从GSD安装到轴控制全流程
  • 基于ChatGPT3.5的车辆计数数据集优化:从CARPK到PUCPR+的标注转换实践
  • 2026春招AI岗位激增14倍!程序员收藏:转型窗口期指南,高薪等你拿!
  • 收藏!年薪千万的 AI 人才争夺战:腾讯、阿里、字节到底在抢什么样的人?
  • Proton VPN连接失败的3种常见原因及解决方法(附详细操作步骤)
  • 中国大学MOOC英语词汇速记法:5个高频短语拆解技巧(附华中科大真题)
  • AI概念大解析:从大模型到通用智能体,小白必收藏指南!
  • 小白必看:收藏这份Agent Skills入门指南,轻松玩转大模型!
  • 小白必看!轻松掌握AI底层逻辑,点赞收藏这份超全指南!
  • 西门子S7-200 PLC与MCGS组态的花式音乐喷泉系统设计
  • Windows系统下彻底禁用有道云笔记自动更新|实测7.2.7版本稳定方案
  • 收藏!小白程序员必看:AI Agent与大模型微调入门指南
  • Java做人工智能:核心重点、落地难点与解决方案
  • WinCC Professional中通信状态变量的实战应用:从配置到远程监控
  • 5分钟搞定NATAPP内网穿透:从购买隧道到外网访问全流程(附常见错误排查)
  • chronyd配置避坑实录:从时间漂移1小时到毫秒级同步
  • 肠道宏基因组分析实战:从质控到去宿主的完整流程(附脚本)
  • ConfyUI WD14模型手动安装避坑指南:从GitHub克隆到正确配置
  • Coze工作流实战:打造智能视频混剪流水线