阿里云容器Kubernetes监控(六) - 使用eventer与npd实时告警节点异常

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 前言 在开始给大家讲解如何通过eventer与npd来实现节点异常告警之前,要稍微给大家解释一下为什么用三篇的篇幅来介绍eventer。在kubernetes中,会将交付场景中的大部分实体都抽象为一个逻辑的概念,例如:接入层抽象为Service,存储层抽象为PV/PVC,不同种类的应用抽象为Deployment、StatefulSet等等。

前言

在开始给大家讲解如何通过eventer与npd来实现节点异常告警之前,要稍微给大家解释一下为什么用三篇的篇幅来介绍eventer。在kubernetes中,会将交付场景中的大部分实体都抽象为一个逻辑的概念,例如:接入层抽象为Service,存储层抽象为PV/PVC,不同种类的应用抽象为Deployment、StatefulSet等等。这种抽象的方式不仅仅将交付变成了软件定义式的配置,更多的是规约了一种标准化,这种标准化不仅仅是交付内容的标准化,也包括了交付方式的标准化,甚至交付生命周期的标准化。

交付内容的标准化与交付方式的标准化是非常好理解的,那么交付生命周期的标准化怎么理解呢。我们可以通过kubectl describe deploy [deploy name]的方式查看一个Deployment的状态描述。

image

在这个例子中,我们查看了coredns这样的一个Deployment的内容,我们会发现除了原本定义的字段之外,kubernetes还会在你定义的数据结构上添加ConditionsEvents两个字段,而这两个字段表述的内容实际上定义了应用所处的状态机的状态与状态转换的原因与内容。Conditions中预定义了一些条件,当满足条件时Status字段会变成True,而发生重要的状态转换时,Controller会自动生成相关的EventEvent分为Normal与Warning两个维度,Warning事件通常表示一些需要特别关注bad smell,而这种机制成为了在Kubernetes中实时告警的基础。

节点异常告警

在Kubernetes中,节点是常常被大家忽略的实体,因为大部分的开发人员感知到的内容主要是应用的抽象,而节点作为承载应用的实体直接被运维同学接管,在一个标准的worker节点上,通常会运行一些系统组件的Static PodDaemonSet,除此之外,还有最重要的Docker Engine。那么当Docker Engine或者更底层的Linux Kernel出现问题时,有什么办法能够快速告警并处理呢?

在回答这个问题前,我们再看回头看下刚才Deployment的状态描述,开发人员可以通过DeploymentConditionsEvent快速得知应用的状态并进行处理,节点是否也可以通过类似的方式处理呢。带着问题,我们kubectl describe查看一个节点的状态。
image

不出所料,在Kubernetes中,节点的生命周期管理也是通过同样的机制进行处理的。那么节点上遇到的Docker Engine、Linux Kernel的问题怎么和上述的方式进行整合进行判断与处理呢?

Node Problem Detector(NPD)是Kubernetes中负责节点健康诊断的一个DaemonSet,和传统的诊断告警系统相比,npd的方式更kubernetes,他将诊断的问题进行分类,并转换为不同的ConditionsEvent,也就是说,节点上面一旦Docker Engine Hang或者Linux Kernel异常,就会产生一条关于异常节点的事件,运维人员可以通过kubectl describe node [node name]的方式快速查看产生问题的原因和信息。那么如何建立完整的监控链路保证问题的及时发现呢?还记得上篇文章中的eventer中,eventer可以将相关的事件实时告警到钉钉或者离线到SLS。

那么至此,我们只需要将npd与eventer部署到集群中,配置相应的离线链路,即可实现针对节点异常的告警了。

操作步骤

  1. 登陆容器服务控制台,使用模板部署npd
    npd的部署可以参考这篇文章中介绍的步骤。
  2. 登陆容器服务控制台,部署eventer
    希望通过钉钉进行实时告警的开发者可以参考这篇文章。希望通过SLS进行关键字告警的开发者可以参考这篇文章
  3. 模拟Docker Engine异常的事件,在一个节点上执行如下脚本
echo "Error trying v2 registry: failed to register layer: rename /var/lib/docker/image/test /var/lib/docker/image/ddd: directory not empty.*" |systemd-cat -t docker

如果是钉钉实时告警,那么可以收到类似如下的报警信息。
image
从图片中的信息可以得知,出现问题的节点以及相关的信息,从而可以快速根据关键字进行诊断。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
14天前
|
人工智能 弹性计算 运维
ACK Edge与IDC:高效容器网络通信新突破
本文介绍如何基于ACK Edge以及高效的容器网络插件管理IDC进行容器化。
|
3天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
30 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
1天前
|
Prometheus Kubernetes 监控
OpenAI故障复盘 - 阿里云容器服务与可观测产品如何保障大规模K8s集群稳定性
聚焦近日OpenAI的大规模K8s集群故障,介绍阿里云容器服务与可观测团队在大规模K8s场景下我们的建设与沉淀。以及分享对类似故障问题的应对方案:包括在K8s和Prometheus的高可用架构设计方面、事前事后的稳定性保障体系方面。
|
15天前
|
人工智能 运维 监控
阿里云ACK容器服务生产级可观测体系建设实践
本文整理自2024云栖大会冯诗淳(花名:行疾)的演讲,介绍了阿里云容器服务团队在生产级可观测体系建设方面的实践。冯诗淳详细阐述了容器化架构带来的挑战及解决方案,强调了可观测性对于构建稳健运维体系的重要性。文中提到,阿里云作为亚洲唯一蝉联全球领导者的容器管理平台,其可观测能力在多项关键评测中表现优异,支持AI、容器网络、存储等多个场景的高级容器可观测能力。此外,还介绍了阿里云容器服务在多云管理、成本优化等方面的最新进展,以及即将推出的ACK AI助手2.0,旨在通过智能引擎和专家诊断经验,简化异常数据查找,缩短故障响应时间。
阿里云ACK容器服务生产级可观测体系建设实践
|
16天前
|
运维 Kubernetes 调度
阿里云容器服务 ACK One 分布式云容器企业落地实践
阿里云容器服务ACK提供强大的产品能力,支持弹性、调度、可观测、成本治理和安全合规。针对拥有IDC或三方资源的企业,ACK One分布式云容器平台能够有效解决资源管理、多云多集群管理及边缘计算等挑战,实现云上云下统一管理,提升业务效率与稳定性。
|
15天前
|
Kubernetes 算法 调度
阿里云 ACK FinOps成本优化最佳实践
本文源自2024云栖大会梁成昊演讲,讨论了成本优化策略的选择与实施。文章首先介绍了成本优化的基本思路,包括优化购买方式、调整资源配置等基础策略,以及使用弹性、资源混部等高级策略。接着,文章详细探讨了集群优化和应用优化的具体方法,如使用抢占式实例降低成本、通过资源画像识别并优化资源配置,以及利用智能应用弹性策略提高资源利用效率。
|
15天前
|
弹性计算 调度 数据中心
阿里云 ACK One 注册集群云上弹性:扩展业务新利器
随着企业数字化转型深入,传统IDC数据中心因物理容量限制,难以实现动态扩容,缺乏弹性能力。阿里云ACK One注册集群凭借其高度灵活性和丰富资源选择,成为解决此问题的最佳方案。通过与阿里云资源的整合,ACK One不仅实现了计算资源的按需扩展,提高了资源利用率,还通过按需付费模式降低了成本,使企业能够更高效地应对业务增长和高峰需求。
|
15天前
|
运维 Kubernetes Serverless
阿里云Argo X K8s玩转工作流引擎,实现大规模并行计算
本文基于2024云栖大会田双坤的演讲,介绍了Kubernetes作为云原生操作系统的角色及其在各类任务中的应用,重点探讨了Argo Workflows在Kubernetes上编排并行任务的能力。面对自建Argo Workflows的挑战,如稳定性、成本和安全性等问题,阿里巴巴云推出了全托管的Serverless Argo工作流,提供全托管、免运维、可观测和易集成的特点,显著提升了任务编排的效率和稳定性。适用于数据处理、科学计算、自动驾驶仿真等多个领域。
|
15天前
|
Kubernetes 容灾 调度
阿里云 ACK 高可用稳定性最佳实践
本文整理自2024云栖大会刘佳旭的演讲,主题为《ACK高可用稳定性最佳实践》。文章探讨了云原生高可用架构的重要性,通过Kubernetes的高可用案例分析,介绍了ACK在单集群高可用架构设计、产品能力和最佳实践方面的方法,包括控制面和数据面的高可用策略、工作负载高可用配置、企业版容器镜像服务高可用配置等内容,旨在帮助企业构建更加可靠和高效的应用运行环境。
|
15天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多