自建Kubernetes集群如何接入事件通知告警

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 报警配置功能提供容器场景报警能力的统一管理,包括容器服务异常事件报警,以及容器场景指标报警,支持在创建集群时默认开启报警功能。容器服务的报警规则支持通过集群内部署CRD的方式配置管理。本文介绍如何接入报警配置功能及授予报警功能资源的访问权限。

报警配置功能提供容器场景报警能力的统一管理,包括容器服务异常事件报警,以及容器场景指标报警,支持在创建集群时默认开启报警功能。容器服务的报警规则支持通过集群内部署CRD的方式配置管理。本文介绍如何接入报警配置功能及授予报警功能资源的访问权限。


功能使用场景

容器服务报警配置功能集合容器场景的监控报警能力,提供报警的统一配置管理,有如下几个典型的使用场景:

  • 集群运维可以通过监控报警第一时间了解集群管控、存储、网络、弹性扩缩容等异常事件。例如,可通过配置并查看集群异常事件报警规则集感知集群节点或容器节点通用异常;通过配置并查看集群存储异常事件报警规则集感知集群存储的变更与异常;通过配置并查看集群网络异常事件报警规则集感知集群网络的变更与异常;通过配置并查看集群管控运维异常报警规则集感知集群管控的变更与异常等。
  • 应用开发可以通过监控报警第一时间了解在集群中运行应用的异常事件、指标是否异常。例如,集群容器副本异常或者应用Deployment的CPU、内存水位指标是否超过阈值等。可通过开启报警配置功能中的默认报警规则模板,即可快速接受集群内应用容器副本的异常事件报警通知。例如,通过配置并订阅关注集群容器副本异常报警规则集感知所属应用的Pod是否异常。
  • 应用管理关注运行在集群上的应用健康、容量规划、集群运行稳定性及异常甚至是错误报警等贯穿应用生命周期的一系列问题。例如,通过配置并订阅关注集群重要事件报警规则集感知集群内所有Warning、Error等异常报警;关注集群资源异常报警规则集感知集群的资源情况,从而更好地做容量规划等。
  • 多集群管理当您有多个集群需要管理,为集群配置报警规则往往会是一个重复繁琐且难以同步的操作。容器服务报警配置功能,支持通过集群内部署CRD配置的方式管理报警规则。可通过维护多个集群中同样配置的CRD资源,来方便快捷地实现多集群中报警规则的同步配置。


前提条件


步骤一:在自建集群中配置报警组件RAM权限

在注册集群中安装组件前,您需要在接入集群中设置AK用来访问云服务的权限。设置AK前,您需要创建RAM用户并为其添加访问相关云资源的权限。

  1. 创建RAM用户。有关如何创建RAM用户的具体步骤,请参见创建RAM用户
  2. 创建权限策略。有关创建权限策略的具体操作步骤,请参见创建自定义策略。请授权RAM权限如下所示:
{
            "Action": [
                "log:*",
                "arms:*",
                "cs:UpdateContactGroup"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
}
  1. 为RAM用户添加权限。有关如何为RAM用户授权的具体步骤,请参见为RAM用户授权
  2. 为RAM用户创建AK。有关如何为子账户创建AK,请参见获取AccessKey
  3. 使用AK在自建Kubernetes集群中创建名为alibaba-addon-secret的Secret资源,步骤二中安装事件中心相关组件时将自动引用此AK访问对应的云服务资源。
kubectl -n kube-system create secret generic alibaba-addon-secret --from-literal='access-key-id=<your access key id>' --from-literal='access-key-secret=<your access key secret>'

您需要将上述代码中替换为您获取的AK信息。


步骤二:组件安装与升级

控制台会自动检测报警配置环境是否符合要求,并会引导进行开通或安装、升级组件。

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏,选择运维管理 > 报警配置
  5. 报警配置页面控制台会自动检查以下条件。若不符合条件,请按以下提示完成操作。
  • 已开通SLS日志服务云产品。当您首次使用日志服务时,需要登录日志服务控制台,根据页面提示开通日志服务。
  • 已安装事件中心。具体操作,请参见事件监控
  • 集群托管组件alicloud-monitor-controller升级到最新版本。更多信息,请参见alicloud-monitor-controllerimage.png

如何接入报警配置功能

步骤一:开启默认报警规则

可在注册集群开启对应报警规则。

  1. 在目标集群左侧导航栏选择运维管理 > 报警配置配置管理。
  2. 报警规则管理页签,打开启动状态可开启对应报警规则集。

image.png

步骤二:手动配置报警规则

可进行报警规则、联系人和联系人分组管理。

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏,选择运维管理 > 报警配置
功能特性 说明
报警规则管理
  • 容器服务报警规则功能会默认生成容器场景下的报警模板(包含异常事件报警、异常指标报警)。
  • 报警规则被分类为若干个报警规则集,可为报警规则集关联多个联系人分组,并启动或关闭报警规则集。
  • 报警规则集中包含多个报警规则,一个报警规则对应单个异常的检查项。多个报警规则集可以通过一个YAML资源配置到对应集群中,修改YAML会同步生成报警规则。
  • 关于报警规则YAML配置,请参见如何通过CRD配置报警规则
  • 关于默认报警规则模板,请参见默认报警规则模板
报警历史 目前可查看最近发送的近100条历史记录。单击对应报警报警规则类型的链接,可跳转到对应监控系统中查看详细规则配置;单击对应报警排查现场的链接可快速定位到异常发生的资源页面(异常事件、指标异常的资源)。
联系人管理 对联系人进行管理,可创建、编辑或删除联系人。
联系人分组管理 对联系人分组进行管理,可创建、编辑或删除联系人分组。当无联系人分组时,控制台会从您的阿里云账号注册信息中同步创建一个默认联系人分组。
  1. 报警规则管理页签,单击编辑联系人分组可设置关联的联系人分组;打开启动状态可开启对应报警规则集。


如何通过CRD配置报警规则

报警配置功能开启时,会默认在kube-system Namespace下创建一个AckAlertRule类型的资源配置,包含默认报警规则模板。容器服务报警规则集可通过此资源配置在集群中。

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,单击集群
  3. 集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情
  4. 在集群管理页左侧导航栏,选择运维管理 > 报警配置
  5. 报警规则管理页签中,单击右上角编辑报警配置,可查看当前集群中的AckAlertRule资源配置,并可通过YAML文件修改。报警规则配置的YAML文件示例如下:
apiVersion: alert.alibabacloud.com/v1beta1
kind: AckAlertRule
metadata:
  name: default
spec:
  groups:
    - name: pod-exceptions                     ## 报警规则集名。
      rules:
        - name: pod-oom                        ## 报警规则名。
          type: event                          ## 报警规则类型,枚举值为event(事件类型)、metric(指标类型)。
          expression: sls.app.ack.pod.oom      ## 报警规则表达式,当规则类型为event时,表达式的值为SLS日志服务事件报警sls_event_id。
          enable: enable                       ## 报警规则开启状态,枚举值为enable、disable。
        - name: pod-failed
          type: event
          expression: sls.app.ack.pod.failed
          enable: enable

默认报警规则模板

在以下情况下ACK会默认创建相应报警规则:

  • 开启默认报警规则功能。
  • 未开启默认报警规则,首次进入报警规则页面。

默认创建的报警规则如下表所示。

规则集类型 规则名 ACK_CR_Rule_Name SLS_Event_ID
critical-events集群重要事件报警规则集 集群error事件 error-event sls.app.ack.error
集群warning事件 warn-event sls.app.ack.warn
cluster-error集群异常事件报警规则集 集群节点docker进程异常 docker-hang sls.app.ack.docker.hang
集群驱逐事件 eviction-event sls.app.ack.eviction
集群GPU的XID错误事件 gpu-xid-error sls.app.ack.gpu.xid_error
集群节点重启 node-restart sls.app.ack.node.restart
集群节点时间服务异常 node-ntp-down sls.app.ack.ntp.down
集群节点PLEG异常 node-pleg-error sls.app.ack.node.pleg_error
集群节点进程异常 ps-hang sls.app.ack.ps.hang
res-exceptions集群资源异常报警规则集 集群节点文件句柄过多 node-fd-pressure sls.app.ack.node.fd_pressure
集群节点磁盘空间不足 node-disk-pressure sls.app.ack.node.disk_pressure
集群节点进程数过多 node-pid-pressure sls.app.ack.node.pid_pressure
集群节点调度资源不足 node-res-insufficient sls.app.ack.resource.insufficient
集群节点IP资源不足 node-ip-pressure sls.app.ack.ip.not_enough
pod-exceptions集群容器副本异常报警规则集 集群容器副本OOM pod-oom sls.app.ack.pod.oom
集群容器副本启动失败 pod-failed sls.app.ack.pod.failed
集群镜像拉取失败事件 image-pull-back-off sls.app.ack.image.pull_back_off
cluster-ops-err集群管控运维异常报警规则集 无可用LoadBalancer slb-no-ava sls.app.ack.ccm.no_ava_slb
同步LoadBalancer失败 slb-sync-err sls.app.ack.ccm.sync_slb_failed
删除LoadBalancer失败 slb-del-err sls.app.ack.ccm.del_slb_failed
删除节点失败 node-del-err sls.app.ack.ccm.del_node_failed
添加节点失败 node-add-err sls.app.ack.ccm.add_node_failed
创建VPC网络路由失败 route-create-err sls.app.ack.ccm.create_route_failed
同步VPC网络路由失败 route-sync-err sls.app.ack.ccm.sync_route_failed
安全巡检发现高危风险配置 si-c-a-risk sls.app.ack.si.config_audit_high_risk
托管节点池命令执行失败 nlc-run-cmd-err sls.app.ack.nlc.run_command_fail
托管节点池未提供任务的具体命令 nlc-empty-cmd sls.app.ack.nlc.empty_task_cmd
托管节点池出现未实现的任务模式 nlc-url-m-unimp sls.app.ack.nlc.url_mode_unimpl
托管节点池发生未知的修复操作 nlc-opt-no-found sls.app.ack.nlc.op_not_found
托管节点池销毁节点发生错误 nlc-des-node-err sls.app.ack.nlc.destroy_node_fail
托管节点池节点排水失败 nlc-drain-node-err sls.app.ack.nlc.drain_node_fail
托管节点池重启ECS未达到终态 nlc-restart-ecs-wait sls.app.ack.nlc.restart_ecs_wait_fail
托管节点池重启ECS失败 nlc-restart-ecs-err sls.app.ack.nlc.restart_ecs_fail
托管节点池重置ECS失败 nlc-reset-ecs-err sls.app.ack.nlc.reset_ecs_fail
托管节点池自愈任务失败 nlc-sel-repair-err sls.app.ack.nlc.repair_fail
cluster-network-err集群网络异常事件报警规则集 Terway资源无效 terway-invalid-res sls.app.ack.terway.invalid_resource
Terway分配IP失败 terway-alloc-ip-err sls.app.ack.terway.alloc_ip_fail
解析ingress带宽配置失败 terway-parse-err sls.app.ack.terway.parse_fail
Terway分配网络资源失败 terway-alloc-res-err sls.app.ack.terway.allocate_failure
Terway回收网络资源失败 terway-dispose-err sls.app.ack.terway.dispose_failure
Terway虚拟模式变更 terway-virt-mod-err sls.app.ack.terway.virtual_mode_change
Terway触发PodIP配置检查 terway-ip-check sls.app.ack.terway.config_check
Ingress重载配置失败 ingress-reload-err sls.app.ack.ingress.err_reload_nginx
cluster-storage-err集群存储异常事件报警规则集 云盘容量少于20Gi限制 csi_invalid_size sls.app.ack.csi.invalid_disk_size
容器数据卷暂不支持包年包月类型云盘 csi_not_portable sls.app.ack.csi.disk_not_portable
挂载点正在被进程占用,卸载挂载点失败 csi_device_busy sls.app.ack.csi.deivce_busy
无可用云盘 csi_no_ava_disk sls.app.ack.csi.no_ava_disk
云盘IOHang csi_disk_iohang sls.app.ack.csi.disk_iohang
磁盘绑定的PVC发生slowIO csi_latency_high sls.app.ack.csi.latency_too_high
磁盘容量超过水位阈值 disk_space_press sls.app.ack.csi.no_enough_disk_space


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
2天前
|
Kubernetes Java API
Kubernetes详解(三)——Kubernetes集群组件
Kubernetes详解(三)——Kubernetes集群组件
12 1
|
7天前
|
运维 监控 Kubernetes
Kubernetes 集群的监控与维护策略
【5月更文挑战第4天】 在当今微服务架构盛行的时代,容器化技术已成为软件开发和部署的标准实践。Kubernetes 作为一个开源的容器编排平台,因其强大的功能和灵活性而广受欢迎。然而,随着 Kubernetes 集群规模的扩大,集群的监控和维护变得日益复杂。本文将探讨 Kubernetes 集群监控的重要性,分析常见的监控工具,并提出一套有效的集群维护策略,以帮助运维人员确保集群的健康运行和高可用性。
39 10
|
8天前
|
存储 运维 监控
Kubernetes 集群的持续监控与优化策略
【5月更文挑战第3天】在微服务架构和容器化部署日益普及的背景下,Kubernetes 已成为众多企业的首选容器编排平台。然而,随着集群规模的增长和业务复杂度的提升,有效的集群监控和性能优化成为确保系统稳定性和提升资源利用率的关键。本文将深入探讨针对 Kubernetes 集群的监控工具选择、监控指标的重要性解读以及基于数据驱动的性能优化实践,为运维人员提供一套系统的持续监控与优化策略。
|
11天前
|
运维 Kubernetes 监控
Kubernetes 集群的监控与维护策略
【4月更文挑战第30天】 在现代云计算环境中,容器化技术已成为应用程序部署和管理的重要手段。其中,Kubernetes 作为一个开源的容器编排平台,以其强大的功能和灵活性受到广泛欢迎。然而,随之而来的是对 Kubernetes 集群监控和维护的复杂性增加。本文将探讨针对 Kubernetes 集群的监控策略和维护技巧,旨在帮助运维人员确保集群的稳定性和高效性。通过分析常见的性能瓶颈、故障诊断方法以及自动化维护工具的应用,我们将提供一套实用的解决方案,以优化 Kubernetes 环境的性能和可靠性。
|
11天前
|
运维 Kubernetes 监控
Kubernetes集群的持续性能优化策略
【4月更文挑战第30天】 在动态且不断扩展的云计算环境中,保持应用性能的稳定性是一个持续的挑战。本文将探讨针对Kubernetes集群的持续性能优化策略,旨在为运维工程师提供一套系统化的性能调优框架。通过分析集群监控数据,我们将讨论如何诊断常见问题、实施有效的资源管理和调度策略,以及采用自动化工具来简化这一过程。
|
11天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理策略
【4月更文挑战第30天】 在微服务架构日益普及的当下,容器化技术与编排工具如Kubernetes成为了运维领域的重要话题。有效的监控和日志管理对于保障系统的高可用性和故障快速定位至关重要。本文将探讨在Kubernetes环境中实施监控和日志管理的最佳实践,包括选用合适的工具、部署策略以及如何整合这些工具来提供端到端的可见性。我们将重点讨论Prometheus监控解决方案和EFK(Elasticsearch, Fluentd, Kibana)日志管理堆栈,分析其在Kubernetes集群中的应用,并给出优化建议。
|
11天前
|
Kubernetes 应用服务中间件 nginx
K8S二进制部署详解,一文教会你部署高可用K8S集群(二)
K8S二进制部署详解,一文教会你部署高可用K8S集群(二)
|
11天前
|
Kubernetes 网络安全 数据安全/隐私保护
K8S二进制部署详解,一文教会你部署高可用K8S集群(一)
K8S二进制部署详解,一文教会你部署高可用K8S集群(一)
|
12天前
|
SQL Kubernetes 调度
【一文看懂】部署Kubernetes模式的Havenask集群
本次分享内容为havenask的kubernetes模式部署,由下面2个部分组成(部署Kubernetes模式Havenask集群、 Kubernetes模式相关问题排查),希望可以帮助大家更好了解和使用Havenask。
26 1
|
12天前
|
Kubernetes 网络协议 Python
一文教会你,如何通过kubeadm,在生产环境部署K8S高可用集群(二)
一文教会你,如何通过kubeadm,在生产环境部署K8S高可用集群(二)

相关产品

  • 容器服务Kubernetes版