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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 前言 在开始给大家讲解如何通过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搭建和管理企业级网站应用
目录
相关文章
|
12天前
|
人工智能 Prometheus 监控
使用 NVIDIA NIM 在阿里云容器服务(ACK)中加速 LLM 推理
本文介绍了在阿里云容器服务 ACK 上部署 NVIDIA NIM,结合云原生 AI 套件和 KServe 快速构建高性能模型推理服务的方法。通过阿里云 Prometheus 和 Grafana 实现实时监控,并基于排队请求数配置弹性扩缩容策略,提升服务稳定性和效率。文章提供了详细的部署步骤和示例,帮助读者快速搭建和优化模型推理服务。
71 7
使用 NVIDIA NIM 在阿里云容器服务(ACK)中加速 LLM 推理
|
6天前
|
存储 Kubernetes 持续交付
深入浅出 Kubernetes:掌握容器编排的艺术
Kubernetes作为容器编排领域的领头羊,提供了运行分布式系统的强大框架,支持自动化部署、扩展和管理容器化应用。本文深入浅出地介绍了Kubernetes的核心概念与关键组件,包括服务发现、存储编排及自动部署等特性。通过Minikube、kubeadm及云服务商等多种方式部署集群,并使用`kubectl`、YAML配置文件和Helm进行资源管理。掌握Kubernetes将成为软件开发者的宝贵技能。
|
16天前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
33 0
|
19天前
|
Kubernetes Cloud Native 应用服务中间件
云原生入门:Kubernetes 和容器化技术的实践之旅
【8月更文挑战第31天】 在这篇文章中,我们将踏上一场探索云原生世界的旅程。我们将从基础的容器化技术讲起,逐步深入到Kubernetes这个强大的容器编排工具。文章会通过一个实际的例子,带领大家了解如何将一个简单的应用容器化并在Kubernetes集群上运行起来。无论你是云原生领域的新手,还是希望巩固知识的开发者,这篇文章都会为你提供一次实操的机会,让你对云原生有一个更加直观的认识。
|
25天前
|
存储 Kubernetes Go
【Azure K8S | AKS】在AKS集群中创建 PVC(PersistentVolumeClaim)和 PV(PersistentVolume) 示例
【Azure K8S | AKS】在AKS集群中创建 PVC(PersistentVolumeClaim)和 PV(PersistentVolume) 示例
|
16天前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
101 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
16天前
|
Kubernetes 负载均衡 前端开发
二进制部署Kubernetes 1.23.15版本高可用集群实战
使用二进制文件部署Kubernetes 1.23.15版本高可用集群的详细教程,涵盖了从环境准备到网络插件部署的完整流程。
33 2
二进制部署Kubernetes 1.23.15版本高可用集群实战
|
16天前
|
存储 Kubernetes 测试技术
k8s使用pvc,pv,sc关联ceph集群
文章介绍了如何在Kubernetes中使用PersistentVolumeClaim (PVC)、PersistentVolume (PV) 和StorageClass (SC) 来关联Ceph集群,包括创建Ceph镜像、配置访问密钥、删除默认存储类、编写和应用资源清单、创建资源以及进行访问测试的步骤。同时,还提供了如何使用RBD动态存储类来关联Ceph集群的指南。
33 7
|
16天前
|
存储 Kubernetes 数据安全/隐私保护
k8s对接ceph集群的分布式文件系统CephFS
文章介绍了如何在Kubernetes集群中使用CephFS作为持久化存储,包括通过secretFile和secretRef两种方式进行认证和配置。
25 5
|
16天前
|
Kubernetes 负载均衡 应用服务中间件
kubeadm快速构建K8S1.28.1高可用集群
关于如何使用kubeadm快速构建Kubernetes 1.28.1高可用集群的详细教程。
35 2

相关产品

  • 容器服务Kubernetes版