如何在 Knative 中 Debug 服务

简介: 在 Knative 中部署的服务异常了怎么办?不要担心,本文教你在 Knative 中一步步排查问题。

在Knative中部署的服务异常了怎么办?不要担心,本文教你在 Knative 中一步步排查问题。

查看命令行输出

检查执行部署的命令输出是否成功,如果执行命令部署中断,可以在输出信息中查看部署失败的原因。一般这样的错误都是由于配置文件配置有问题导致的。例如下面的错误信息是由于配置的流量比例不等于100导致的。

Error from server (InternalError): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"serving.knative.dev/v1alpha1\",\"kind\":\"Route\",\"metadata\":{\"annotations\":{},\"name\":\"route-example\",\"namespace\":\"default\"},\"spec\":{\"traffic\":[{\"configurationName\":\"configuration-example\",\"percent\":50}]}}\n"}},"spec":{"traffic":[{"configurationName":"configuration-example","percent":50}]}}
to:
&{0xc421d98240 0xc421e77490 default route-example STDIN 0xc421db0488 264682 false}
for: "STDIN": Internal error occurred: admission webhook "webhook.knative.dev" denied the request: mutation failed: The route must have traffic percent sum equal to 100.
ERROR: Non-zero return code '1' from command: Process exited with status 1

查看应用日志

一般情况下服务异常,可以直接查看当前应用 Pod日志信息。推荐使用日志服务对日志进行收集。这样可以直接在日志服务中查看当前应用异常信息。
查看当前应用 Pod 中 user-container 容器的日志信息:

kubectl logs <pod-name>  user-container

检查路由状态

可以通过下面的命令查看 Routestatus 信息:

kubectl get route <route-name> --output yaml

通过status进行判断,异常的情况下可以看到reason 信息

检查 Ingress 路由

查看 Istio 网关 IP 地址信息

kubectl get svc -n istio-system istio-ingressgateway

检查是否有 EXTERNAL-IP ip, 如果没有的话,一般情况是由于配额不足导致的。

检查 Revision 状态

查看 Revision 信息,执行如下命令:

kubectl get revision <revision-name> --output yaml

如果服务正常,应该是如下信息:

conditions:
  - lastTransitionTime: 2019-08-20T07:52:59Z
    status: "True"
    type: Ready

检查 Pod 状态

执行命令:

$ kubectl get pods
NAME                                                      READY     STATUS             RESTARTS   AGE
configuration-example-00001-deployment-659747ff99-9bvr4   2/2       Running            0          3h
configuration-example-00002-deployment-5f475b7849-gxcht   1/2       CrashLoopBackOff   2          36s

继续查看 Pod 的状态:

kubectl get pod <pod-name> --output yaml

如果发现了containerStatusesuser-container 异常,可以通过上述【查看应用日志】进行分析。

检查 Controller 组件

查看当前 Controller 组件是否正常

$kubectl -n knative-serving get pod
NAME                                READY   STATUS    RESTARTS   AGE
activator-75b69857b7-6rnln          2/2     Running   2          21d
autoscaler-674d79f79c-2zlmh         2/2     Running   1          21d
autoscaler-hpa-679868bd9-zlk6t      1/1     Running   0          21d
controller-5855f47556-qrfgd         1/1     Running   0          21d
networking-istio-6c8d6774f8-944b7   1/1     Running   0          21d
webhook-65f55b444f-stq28            1/1     Running   0          21d

查看 controller 中是否有异常信息输出

kubectl -n knative-serving logs --tail=1000 controller-5855f47556-qrfgd

小结

在部署 Knative 服务中可能会遇到各种问题,希望通过上面介绍的排查手段给你提供帮助。

欢迎加入 Knative 交流群

image

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
JavaScript 前端开发 Shell
Node.js Shell 脚本开发指南(上)
Node.js Shell 脚本开发指南(上)
408 0
|
人工智能 自然语言处理 API
图片转音乐模型来了!Image to Music V2 :只需上传一张照片,自动转换成与图片内容匹配的音频!
图片转音乐模型来了!Image to Music V2 :只需上传一张照片,自动转换成与图片内容匹配的音频!
1585 1
|
C++
【C++】关于fixed和setprecision的学习和介绍
【C++】关于fixed和setprecision的学习和介绍
1302 0
|
机器学习/深度学习 算法 搜索推荐
Featurewiz-Polars:基于XGBoost的高性能特征选择框架,一行代码搞定特征选择
Featurewiz是一个强大的特征选择库,提供高度自动化的特征选择、全面的特征工程功能,并实现了高效的mRMR算法。它已成为许多数据科学家的首选工具,拥有140多篇Google Scholar引用。最新版Featurewiz-Polars通过集成Polars引擎,在处理速度和大规模数据集处理能力上显著提升。
435 2
Featurewiz-Polars:基于XGBoost的高性能特征选择框架,一行代码搞定特征选择
|
机器学习/深度学习 算法 安全
NeurIPS 2024:数学推理场景下,首个分布外检测研究成果来了
在深度学习领域,模型的鲁棒性与可靠性至关重要。针对数学推理这一复杂生成场景,传统OOD检测方法因输出空间高密度特征而面临挑战。为此,研究团队提出基于轨迹波动性的TV分数方法,通过计算样本嵌入偏移轨迹的波动性来检测OOD样本。实验表明,该方法在数学推理和选择题任务中优于传统算法,展示了其潜在优势和通用性。尽管存在局限性,TV分数为数学推理场景下的OOD检测提供了创新思路。论文地址:https://arxiv.org/abs/2405.14039
327 2
|
存储 JavaScript PHP
HTML中form 的作用?
HTML中form 的作用?
524 0
|
人工智能 自然语言处理 搜索推荐
梅俊:如何用好A1,轻松写好汇报、通知、复盘?
《如何用AI辅助高效写公文》课程由公文写作专家梅俊老师主讲,旨在帮助解决公文写作难题。课程涵盖广泛,不仅限于法定公文,还包括事务类公文,适合各类职场人士。梅俊老师结合15年写作经验和AI研究,提出7步法,包括问题拆解、信息分析、内容生成等,强调人与AI的协作,而非完全依赖AI。课程通过实例演示如何利用AI工具如kimichat和秘塔AI搜索提高写作效率,同时提醒用户需判断信息质量和内容质量。课程教授从初级到高级的14种公文写作,鼓励学员实践并形成“AI思维”。
1391 1
|
网络协议
计算机网络中常用的网络协议
以上是一些常见的网络协议及其分类,不同的网络协议在计算机网络中扮演着不同的角色,共同构成了网络通信的基础
1314 1
|
编解码 Android开发 UED
安卓UI/UX设计原则:打造引人入胜的用户体验
【4月更文挑战第13天】本文探讨了安卓UI/UX设计的关键原则,包括一致性、简洁性、反馈、清晰性、效率和适应性。一致性要求视觉和行为保持一致,利用系统UI;简洁性减少用户行动,简化导航;反馈需即时且明确;清晰性强调表达清晰,布局有序;效率关注性能优化和任务简化;适应性涉及多设备适配和用户多样性。遵循这些原则,可创建出色应用,提供无缝用户体验。设计应持续迭代,适应技术发展和用户需求。
850 6
|
JavaScript 前端开发 关系型数据库
旅游规划助手:结合Vue的交云性设计和Python的强大后端功能
【4月更文挑战第11天】本文探讨了如何使用Vue.js和Python(Flask或Django)构建旅游规划助手应用,简化旅行规划。首先,确保安装了Python、Node.js、数据库系统和Git。接着,介绍如何用Python搭建后端API,分别展示了Flask和Django的例子。然后,利用Vue.js初始化前端项目,结合Vuex和Vue Router构建用户界面。最后,通过Axios实现前端与后端的数据通信。这样的架构有利于团队协作和代码维护,便于扩展应用功能。
409 2