阿里云容器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
从图片中的信息可以得知,出现问题的节点以及相关的信息,从而可以快速根据关键字进行诊断。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
3天前
|
存储 Kubernetes C++
【专栏】Kubernetes VS Docker Swarm了解两者特点,助力选取合适容器编排工具
【4月更文挑战第27天】对比Kubernetes和Docker Swarm:K8s在可扩展性和自动化方面出色,有强大社区支持;Swarm以简易用著称,适合初学者。选择取决于项目需求、团队技能和预期收益。高度复杂项目推荐Kubernetes,快速上手小项目则选Docker Swarm。了解两者特点,助力选取合适容器编排工具。
|
2天前
|
存储 Java Serverless
ACK One Argo 工作流集群:玩转容器对象存储
ACK One Argo 工作流集群:玩转容器对象存储
ACK One Argo 工作流集群:玩转容器对象存储
|
2天前
|
监控 Java 网络性能优化
容器内存可观测性新视角:WorkingSet 与 PageCache 监控
本文介绍了 Kubernetes 中的容器工作内存(WorkingSet)概念,它用于表示容器内存的实时使用量,尤其是活跃内存。
容器内存可观测性新视角:WorkingSet 与 PageCache 监控
|
2天前
|
存储 Kubernetes 监控
使用Kubernetes进行容器编排:技术详解与实践
【5月更文挑战第16天】Kubernetes,简称K8s,是开源容器编排系统,用于自动化部署、扩展和管理容器化应用。核心概念包括节点、Pod(最小部署单元)、服务、标签和副本集。其特点有高可用性、可扩展性、自动化和可移植性。实践使用涉及安装配置集群、编写YAML部署清单、应用部署、监控管理和扩展更新。Kubernetes帮助提升应用的可用性、可扩展性和可移植性。
|
3天前
|
分布式计算 Kubernetes 监控
容器服务Kubernetes版产品使用合集之怎么实现把 spark 跑在k8s
容器服务Kubernetes版,作为阿里云提供的核心服务之一,旨在帮助企业及开发者高效管理和运行Kubernetes集群,实现应用的容器化与微服务化。以下是关于使用这些服务的一些建议和合集,涵盖基本操作、最佳实践、以及一些高级功能的使用方法。
18 1
|
3天前
|
Prometheus 监控 Cloud Native
构建高效稳定的Docker容器监控体系
【5月更文挑战第14天】 在现代微服务架构中,Docker容器作为应用部署的基本单元,其运行状态的监控对于保障系统稳定性和性能至关重要。本文将探讨如何构建一个高效且稳定的Docker容器监控体系,涵盖监控工具的选择、关键指标的采集、数据可视化以及告警机制的设计。通过对Prometheus和Grafana的整合使用,实现对容器资源利用率、网络IO以及应用健康状态的全方位监控,确保系统的高可用性和故障快速响应。
|
3天前
|
Prometheus 监控 Cloud Native
构建高效稳定的Docker容器监控体系
【5月更文挑战第13天】在微服务架构和容器化部署日益普及的背景下,对Docker容器的监控变得尤为重要。本文将探讨一种构建高效稳定Docker容器监控体系的方法,通过集成Prometheus和cAdvisor工具,实现对容器资源使用情况、性能指标和运行状态的实时监控。同时,结合Grafana进行数据可视化,为运维人员提供直观的分析界面,以便及时发现和解决潜在问题,保障系统的高可用性和稳定性。
29 6
|
3天前
|
Kubernetes Java 调度
Java容器技术:Docker与Kubernetes
Java容器技术:Docker与Kubernetes
27 0
|
3天前
|
运维 Prometheus 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第29天】在微服务架构日益普及的当下,Docker作为轻量级容器的代表,被广泛应用于服务部署与管理。然而,随之而来的是复杂化的服务监控问题。本文旨在探讨如何构建一个高效且稳定的Docker容器监控体系,确保服务的高可用性。我们将从监控工具的选择、关键监控指标的确定,以及告警机制的设计等方面进行详细阐述,并提供一系列优化实践,以期为运维人员提供参考和指导。
|
3天前
|
Prometheus 监控 Cloud Native
构建高效的Docker容器监控体系
【4月更文挑战第28天】 在微服务架构和容器化部署日益普及的今天,对容器进行有效的性能监控成为确保系统稳定性的关键。本文将深入探讨如何构建一个高效的Docker容器监控体系,覆盖从监控指标的选择、数据采集、存储到可视化展示的全流程。我们将分析现有监控工具的优势与局限,并提出一种综合使用Prometheus、Grafana和自定义监控脚本的解决方案,旨在为运维人员提供实时、准确的容器监控数据,帮助快速定位并解决潜在问题。
21 1

相关产品

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

    更多