重新认识Kubernetes events

Last Updated on 2024-08-27 by likun.gong

event是什么

Kubernetes 中的组件状态发生变化,它就会产生一个事件,也就是 event 。在 event 中提供了集群的状态和健康信息,例如:

  1. 容器创建失败
  2. Pod 在不停的被调度

事件存储在 Etcd 中,默认只存储最近 1 个小时。如果需要持久化事件,可以通过 kubernetes-event-exporter 持久化到 ElasticSearch 中。

event的数据结构

平时使用比较多的查看 event 的方法

kubectl describe node <node_name>

kubectl describe pod <pod_name>

这里显示了常用的字段,如果需要查看完整的字段,可以

kubectl get events -ojson

过滤对应资源的时间,并且定制输出字段,例如可以查看 Pod 从创建到启动的各个时间,分析 Pod 启动的各个过程花费的时间,是否有优化的地方。例如可以在事件中查到容器启动时拉取镜像花费了多久时间。

kubectl -n cloud  get events \
    -o custom-columns=Time:.lastTimestamp,From:.source.component,Type:.type,Reason:.reason,Message:.message \
    --field-selector involvedObject.name=temporary-pod,involvedObject.kind=Pod

应该关注哪些event

event 中包含了很多重要的信息,我们需要关注起来,并配置对应的告警。

  1. Failed events: 容器创建失败
  2. Eviction events: Pod 因为资源不够被驱逐
  3. Volume events: 卷挂载失败
  4. Scheduling events: 调度失败
  5. Unready node events: worker node 未就绪

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注