事件规则用来对K8S中的Event资源进行评估和告警
事件规则结构
事件规则在KubeSphere平台存储在rules.events.kubesphere.io所定义的资源中,其Spec结构如下:
spec└──rules|| ┌──annotations| |——condition0——|——enable (取值true或false来启用或禁用规则,默认false)| |——labels| |——name| └──type (取值alert或notification表示规则的类型)||1,2...
对于type=notification的非告警规则在当前的KubeSphere版本中未有应用,暂可忽略。
内置事件告警规则更新
这里仅针对用于告警目的的内置事件规则进行操作
KubeSphere内置了一些必要的事件告警规则,对平台各类事件进行告警。各内置事件告警规则的定义请参考后文的内置事件告警规则。
基本规则位于kubesphere-logging-system项目下的ks-events-cluster-rules-default资源中,通过以下命令可修改其中的规则:
kubectl -n kubesphere-logging-system edit rules.events.kubesphere.io ks-events-cluster-rules-default
该命令会进入到资源的编辑界面,编辑用法与linux中编辑文件的
vim命令类似。
请参考前文的事件规则结构,对需要调整的告警规则进行操作,比如规则禁用、更新、删除等,然后保存后(同vim命令的保存操作)即可自动同步更新至EventsRuler组件(该组件负责加载事件规则、触发事件告警)。
当只针对个别的告警规则进行删除操作时,可以参考使用以下删除单个告警规则的快捷命令:
# 这里将删除ks-events-cluster-rules-default资源中名称为ContainerBackoff、级别为warning的告警规则# 若要删除其他规则,请调整命令中相应位置处的规则名称和规则级别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 | 任务调度失败 |
