Image Pull Stuck
Kube Event Log
Stuck with the following log.
bash
Normal Pulling 30m kubelet Pulling image "docker-hub.foobar.work/foobar-test/code-go:release-22971"
Get Problem Node
bash
kubectl get po -o wide | grep foo
bash
kubectl get node -o wide
Describe Node Status
Check node events
bash
kubectl describe node bar
bash
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning EvictionThresholdMet 24m (x13 over 7h10m) kubelet Attempting to reclaim ephemeral-storage
Normal NodeHasDiskPressure 24m (x6 over 7h10m) kubelet Node development-work-04 status is now: NodeHasDiskPressure
Normal NodeHasNoDiskPressure 19m (x6 over 7h5m) kubelet Node development-work-04 status is now: NodeHasNoDiskPressure
- 24m (x6 over 7h10m)
- NodeHasDiskPressure in 24m ago.
- NodeHasDiskPressure happened 6 times over 7h10m.
- NodeHasDiskPressure in 24m ago.
- 19m (x6 over 7h5m)
- NodeHasNoDiskPressure in 19m ago.
- NodeHasNoDiskPressure happened 6 times over 7h5m.
- NodeHasNoDiskPressure in 19m ago.
事件清理的机制
在 Kubernetes 中,事件(Events) 会持续保留,直到它们被清理或者达到一定的过期时间。即使节点恢复了正常状态,这些事件并不会立即消失,而是会根据 事件的生命周期 以及 Kubernetes 的事件清理机制被自动清除。
- 事件的保留时间(TTL)
- 默认情况下,Kubernetes 中的事件会保留 1小时,超过这个时间后,事件会被清理。
- 清理事件的过程由 Event Controller 负责,它会定期检查事件的创建时间,并删除超过保留时间的事件。
- 事件与节点的状态
- 即使节点的状态恢复为 正常,事件仍然会存在,直到达到清理条件(默认 TTL 为 1 小时)。
- 如果节点上没有发生新的事件,Kubernetes 会根据时间戳自动清除这些历史事件。
具体的清理时间
事件的清理并不需要特别的操作,只要达到以下条件之一,事件会被删除:
- 超过默认保留时间(通常为 1 小时)。
- 通过管理员手动删除事件(例如使用
kubectl delete events
命令)。 - 如果集群的事件存储(如 etcd)空间不足,可能会触发清理。