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

docker containerd 3 - 小镇

docker & containerd 3

下面给你一份**“Kubernetes 节点从加入到 Pod Running + 故障分析完整生产级文档”**(可以直接当排障手册用)。


📘 Kubernetes 节点完整生命周期 & 排障手册


🧭 一、节点加入流程(kubeadm join)

kubeadm join↓
kubelet 启动↓
bootstrap kubeconfig↓
连接 apiserver (6443)↓
Node Registration↓
Node = Unknown↓
kubelet 心跳上报↓
Node Controller 判定↓
Node = Ready

🧠 二、Node Ready 判定机制

✔ Node Condition

Condition含义
Ready kubelet 正常
MemoryPressure 内存压力
DiskPressure 磁盘压力
PIDPressure 进程数压力
NetworkUnavailable 网络不可用

✔ Ready 判定逻辑

kubelet 心跳正常
AND
CNI 正常
AND
无资源压力
= Ready

🚀 三、Pod 生命周期流程

Pod Created↓
Scheduler 选择 Node↓
kubelet watch Pod↓
container runtime 创建容器↓
CNI 分配 IP↓
kubelet 更新状态↓
Pod Running

📊 四、Pod 状态全集(生产标准)

状态含义常见原因
Pending 未调度 scheduler / node notReady
ContainerCreating 创建中 CNI / runtime / volume
Running 正常 -
Succeeded 成功结束 Job
Failed 失败退出 应用 crash
CrashLoopBackOff 重启失败 程序问题
ImagePullBackOff 拉镜像失败 registry / DNS
ErrImagePull 拉镜像错误 tag / 网络
Unknown Node异常 kubelet down

🐳 五、runtime 状态对照

containerd

状态含义
SANDBOX_CREATING Pod网络创建中
RUNNING 容器运行
EXITED 退出
IMAGE_PULL_ERROR 镜像失败

Docker(旧)

状态含义
Created 创建
Running 运行
Restarting 重启
Exited 退出

🌐 六、CNI(flannel)流程

Pod 创建↓
flannel 分配 Pod IP↓
VXLAN 建立隧道↓
跨节点通信

⚠️ 七、Pod 卡住的核心原因分类

1️⃣ Scheduler 问题

  • Node NotReady

  • 资源不足


2️⃣ kubelet 问题

  • 10250 端口异常

  • 心跳延迟

  • runtime阻塞


3️⃣ runtime 问题(最常见)

  • containerd hang

  • image pull 卡死

  • sandbox 创建失败


4️⃣ CNI 问题

  • flannel crash

  • VXLAN 不通

  • IP 分配失败


5️⃣ 网络冲突

  • service CIDR 冲突

  • docker bridge 冲突

  • route 表污染


🔥 八、完整排障流程(生产标准)

Step 1:节点状态

kubectl get nodes -o wide

Step 2:Pod 状态

kubectl get pod -A -o wide

Step 3:Pod 事件

kubectl describe pod <pod>

Step 4:kubelet

journalctl -u kubelet -f

Step 5:runtime

crictl ps -a
crictl logs <id>

Step 6:CNI

kubectl logs -n kube-system -l app=flannel

Step 7:网络

ip route
iptables-save

🧨 九、你当前环境的“异常信号总结”

你这个环境已经出现:

  • kubelet join 冲突

  • 10250 占用

  • flannel 多节点运行久(300+ days)

  • container runtime 不稳定迹象

👉 属于:

⚠️ “长期运行 + 网络 overlay + 节点污染型集群”


🚨 十、什么时候需要重建节点(很关键)

✔ 建议直接重建:

  • kubelet反复异常

  • containerd hang

  • flannel不稳定

  • iptables混乱

  • join失败多次


❌ 不建议重建:

  • 单个 Pod 异常

  • 镜像问题

  • 配置问题


🧠 一句话总结

Kubernetes 的本质不是“Pod运行”,而是:
kubelet + runtime + CNI + network + scheduler 的协同状态机


🚀 如果你下一步需要

我可以帮你补一份更狠的:

👉 “生产级 K8s 节点重建标准流程(无污染版本 / flannel专用)”

可以直接用来一键修复你这种环境。