Knative Eventing 中如何排查Event事件处理异常

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 在 Knative Eventing 如果事件处理过程出现异常,如何进行排查?本文通过一个实际中遇到的事件处理异常 issue 的角度, 介绍了事件排查处理方式。

在Knative Eventing中如果遇到事件未处理的异常情况,如何进行排查?

首先需要明确当前版本的事件处理模型

社区给出的0.3版本事件处理模型
image

0.5版本事件处理模型
image

参照事件处理模型依次从上游到下游进行排查处理

这里以0.5事件处理模型下,部署Kubernetes Event Source example 为例:

1) 查看部署事件源

# kubectl get KubernetesEventSource testevents -o yaml

2) 查看 Broker

kubectl get broker default -o yaml

3) 查看 Ingress

// Ingress service
# kubectl get svc default-broker -o yaml
// Ingress deployment
# kubectl get deployments default-broker-ingress -o yaml

4) 查看 Channel

// 查看Channel资源
# kubectl get channel default-broker-8ml79 -o yaml
// 查看Channel 分发日志信息
# kubectl -n knative-eventing logs --tail=500 in-memory-channel-dispatcher-5d4c7f6cfb-xj7lg dispatcher

image

5) 查看 Subscription

# kubectl get subscription default-testevents-trigger-thdv4 -o yaml

6) 查看 Filter

# kubectl logs --tail=500 default-broker-filter-65656d665f-zflfz filter

image

此处我们可以发现有异常错误信息
经排查是由于CoreDNS不兼容导致的, 社区已经提出issue, 当前部署环境使用的是1.1.3, 升级到1.2.6即可解决这个问题。

通过上面这个例子我们可以大致了解event中处理事件的流程。当然如何没有发现问题,我们可以继续向下游继续排查。我们可以查看部署的服务是否Ok
7) 最后测试服务是否正常

// 获取istio外部访问地址
# kubectl -n istio-system get svc istio-ingressgateway
// 执行curl 访问进行测试服务是否正常
# curl -H "Host: event-display.default.example.com" http://172.19.xx.xx

其它

针对 Eventing 中事件处理过程是否能提供事件追踪机制,以方便问题排查, 社区计划在 v0.6.0 版本中添加 Tracing support, 有兴趣的可以关注一下

参考

https://github.com/knative/docs/tree/master/docs/eventing/debugging

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
消息中间件 弹性计算 监控
AutoScaling 事件通知功能
ESS 伸缩组是具有相同应用场景的 ECS 实例的集合,通过伸缩活动来调节组内实例个数,通过判断伸缩组内实例数的变化,ESS 伸缩活动被分为不同的类型。ESS 新上线事件通知功能,您可以为伸缩组配置不同类型伸缩活动的事件通知,当伸缩组发生该类型的伸缩活动时,事件通知机制会通知您伸缩活动的详细信息。
2487 0
Knative Eventing 中如何实现 Registry 事件注册机制
在最新的 Knative Eventing 0.6 版本中新增了 Registry 特性, 为什么要增加这个特性, 该特性是如何实现的。针对这些问题,希望通过本篇文章给出答案。
3763 0
|
Kubernetes Cloud Native 网络协议
Knative 事件驱动实践:通过 EventBridge 触发事件
Knative是一款基于Kubernetes的 Serverless 框架。其目标是制定云原生、跨平台的 Serverless 容器编排标准。Knative通过整合容器构建(或者函数)、工作负载管理(动态扩缩)以及事件驱动这三者来实现的这一Serverless标准。那么如何给 Knative 提供生产级别的事件驱动能力?这里我们可以通过事件总线 EventBridge 来实现.事件总线EventB
203 0
Knative 事件驱动实践:通过 EventBridge 触发事件
|
消息中间件 弹性计算 Kubernetes
基于Knative的消息流事件处理最佳实践
本文中描述了事件通过阿里云消息队列Kafka实时推送到服务端进行数据和业务处理,并基于Knative的弹性来实现满足资源高峰需求,做到真正的按需使用,实时弹性,整个过程完全自动化,极大的减少了业务开发人员在基础设施上的心智负担。
基于Knative的消息流事件处理最佳实践
|
Kubernetes Go API
开发 k8s 管理平台 - k8sailor 13. 使用 k8s informer 订阅集群事件
开发 k8s 管理平台 - k8sailor 13. 使用 k8s informer 订阅集群事件
208 0
开发 k8s 管理平台 - k8sailor 13. 使用 k8s informer 订阅集群事件
|
弹性计算 开发工具 Python
演练系统事件处理程序? So Easy~
演练事件处理程序有点难 ECS实例系统事件是影响实例运行状态的有计划或非预期事件。为了ECS实例上的业务平稳运行,最佳的做法是通过程序自动化地处理事件。您可以参考这篇文章:使用OpenAPI自动化处理ECS系统事件但这里有一个问题,程序写完了不好测试。
1716 0
|
消息中间件 监控 NoSQL
工作用Go: 异步任务怎么写4 | Trace: 异步任务还能进行链路追踪么?
工作用Go: 异步任务怎么写4 | Trace: 异步任务还能进行链路追踪么?
432 0
工作用Go: 异步任务怎么写4 | Trace: 异步任务还能进行链路追踪么?
【Emit基础】IL中发布、订阅、触发事件
在下面的例子中,我定义了一个事件发布类Computer,事件订阅者ComputerManager。Computer发布了一个OnAction事件,并且该事件在Increase方法被调用时触发。
640 0
|
jenkins API 持续交付
jira webhook 事件触发并程序代码调用jenkins接口触发构建操作
要解决的问题 开发管理工具触发站点构建事件,事件处理中需要调用Jenkins接口开始构建动作。 我的应用场景: 使用jira作为管理工具,在jira中创建自定义的工作流来规定测试,上线,发布等流程,并通过自动化工具完成这一系列的操作。
2345 0
|
JSON 运维 Kubernetes
如何通过Kubernetes事件来报告错误
在Kubernetes中,有Event机制,可以做到把一些事件,比如警告、错误等信息记录下来
如何通过Kubernetes事件来报告错误