事件规则用来对K8S中的Event资源进行评估和告警

事件规则结构

事件规则在KubeSphere平台存储在rules.events.kubesphere.io所定义的资源中,其Spec结构如下:

  1. spec
  2. └──rules
  3. |
  4. | ┌──annotations
  5. | |——condition
  6. 0——|——enable (取值truefalse来启用或禁用规则,默认false)
  7. | |——labels
  8. | |——name
  9. | └──type (取值alertnotification表示规则的类型)
  10. |
  11. |
  12. 1,2...

对于type=notification的非告警规则在当前的KubeSphere版本中未有应用,暂可忽略。

内置事件告警规则更新

这里仅针对用于告警目的的内置事件规则进行操作

KubeSphere内置了一些必要的事件告警规则,对平台各类事件进行告警。各内置事件告警规则的定义请参考后文的内置事件告警规则

基本规则位于kubesphere-logging-system项目下的ks-events-cluster-rules-default资源中,通过以下命令可修改其中的规则:

  1. kubectl -n kubesphere-logging-system edit rules.events.kubesphere.io ks-events-cluster-rules-default

该命令会进入到资源的编辑界面,编辑用法与linux中编辑文件的vim命令类似。

请参考前文的事件规则结构,对需要调整的告警规则进行操作,比如规则禁用、更新、删除等,然后保存后(同vim命令的保存操作)即可自动同步更新至EventsRuler组件(该组件负责加载事件规则、触发事件告警)。

当只针对个别的告警规则进行删除操作时,可以参考使用以下删除单个告警规则的快捷命令:

  1. # 这里将删除ks-events-cluster-rules-default资源中名称为ContainerBackoff、级别为warning的告警规则
  2. # 若要删除其他规则,请调整命令中相应位置处的规则名称和规则级别
  3. kubectl -n kubesphere-logging-system get rules.events.kubesphere.io ks-events-cluster-rules-default -ojson | jq 'delpaths([path(..|select(.type?=="alert" and .name?=="ContainerBackoff" and .labels.severity?=="warning"))])' | kubectl apply -f -

内置事件规则表

规则名称 级别 说明
ContainerFailed warning 容器失败
ContainerPreempting warning 容器抢占中
ContainerBackoff warning 容器回退
ContainerUnhealthy warning 容器状态不良
ContainerProbeWarning warning 容器探测警告
PodKillingExceededGracePeriod warning pod终止超时
PodKillFailed warning pod终止失败
PodContainerCreateFailed warning pod容器创建失败
PodFailed warning pod失败
PodNetworkNotReady warning Pod网络异常
ImagePullPolicyError warning 镜像拉取策略错误
ImageInspectFailed warning 镜像检查失败
KubeletSetupFailed warning kubelet安装失败
VolumeAttachFailed warning 存储卷装载失败
VolumeMountFailed warning 存储卷挂载失败
VolumeResizeFailed warning 存储卷扩缩容失败
FileSystemResizeFailed warning 文件系统扩缩容失败
VolumeMapFailed warning 存储卷映射失败
VolumeAlreadyMounted warning 存储卷已被挂载
NodeRebooted warning 节点重启
ContainerGCFailed warning 容器GC失败
ImageGCFailed warning 镜像GC失败
NodeAllocatableEnforcementFailed warning 节点可分配资源更新失败
SandboxCreateFailed warning Sandbox创建失败
SandboxStatusFailed warning 获取Sandbox状态错误
DiskCapacityInvalid warning 磁盘容量配置不合法
DiskSpaceFreeFailed warning 磁盘空间释放失败
PodStatusSyncFailed warning Pod状态同步失败
ConfigurationValidationFailed warning 配置验证失败
LifecycleHookPostStartFailed warning 容器启动后的生命周期钩子运行失败
LifecycleHookPreStopFailed warning 容器停止前的生命周期钩子运行失败
HPASelectorError warning HPA选择器错误
HPAMetricError warning HPA对象指标错误
HPAConvertFailed warning HPA转换失败
HPAGetScaleFailed warning HPA规模获取失败
HPAComputeReplicasFailed warning HPA副本计算失败
HPARescaleFailed warning HPA规模调整失败
NodeSystemOOM warning 节点内存溢出
VolumeBindingFailed warning 存储卷绑定失败
VolumeMismatch warning 存储卷不匹配
VolumeRecycleFailed warning 存储卷回收失败
VolumeRecyclerPodError warning 存储卷回收器错误
VolumeDeleteFailed warning 存储卷删除失败
VolumeProvisionFailed warning 存储申请失败
VolumeProvisionCleanupFailed warning 清理存储失败
VolumeExternalExpandingError warning 存储外部扩展错误
PodScheduleFailed warning pod调度失败
PodCreateFailed warning pod创建失败
PodDeleteFailed warning pod删除失败
ReplicaSetCreateError warning 副本集创建错误
DeploymentRollbackFailed warning 部署回滚失败
DeploySelectorAll warning deploy选择了所有pod
DaemonSelectorAll warning daemonset选择了所有pod
DaemonPodFailed warning daemonset的pod失败
LoadBalancerSyncFailed warning 负载据衡器不可用
LoadBalancerUnAvailable warning 负载据衡器不可用
LoadBalancerUpdateFailed warning 更新负载据衡器失败
LoadBalancerDeleteFailed warning 负载据衡器删除失败
JobGetFailed warning 任务获取失败
JobCreateFailed warning 任务创建失败
JobDeleteFailed warning 任务删除失败
JobUnexpected warning 任务非预期
JobScheduleFailed warning 任务调度失败