很多人一听自愈,就误以为 Kubernetes 会自动修复一切。
不是。
它真正擅长的是:把运行形态拉回你声明的目标。
类比成舰队:
- 一个任务舱炸了,补一个新的
- 某艘母舰挂了,把任务舱调到别的母舰
- 某个入口后端不健康了,把它从流量名单里摘掉
Kubernetes 自愈大致分三层:
容器坏了 -> kubelet 按策略重启容器
Pod 坏了 -> Deployment / StatefulSet 补新 Pod
Node 坏了 -> 控制平面在别处重建可替代的 Pod配合探针理解最好:
livenessProbe:你死没死,死了重启readinessProbe:你现在能不能接流量,不能就先摘流startupProbe:你是不是启动慢,避免还没起来就被错杀
所以 Kubernetes 的“自愈”不是:
- 修复你代码里的死锁
- 修复你错误的 SQL
- 修复内存泄漏根因
- 保证数据库绝不丢数据
它能做的是:
- 重启
- 替换
- 重新调度
- 重新接线
一句很重要的话:
Kubernetes 擅长替换坏实例,不擅长理解你的业务语义。