AIGC内容分享(十九):插上 AIGC 翅膀的 Kubernetes AIOps工具 - K8sGPT

这篇具有很好参考价值的文章主要介绍了AIGC内容分享(十九):插上 AIGC 翅膀的 Kubernetes AIOps工具 - K8sGPT。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

介绍

概述

K8sGPT

安装

配置 OpenAI

初步尝试

根因分析

更多用法

总结


介绍

    因为 AIGC的巨大成功, AIOps 中引入大语言模型也引起了很多人的关注,这其中 Kubernetes 为代表的基础设施领域也不例外。软件工程师是自动化的狂热爱好者,因此面向 Kubernetes 运维的 AI 工具开始出现是很自然的。

    大多数这些工具都是为终端 (CLI) 使用而设计的。Kubernetes 是容器编排的首选平台,但其复杂性可能令人望而生畏。AI 支持的工具可以通过将运维任务自动化、提高平台可靠性和提供智能辅助来帮助大家更好落地 Kubernetes 平台。

    OpenAI 提供了一套开源工具,可用于为 Kubernetes 构建人工智能驱动的解决方案。在本文中,我们以 K8sGPT 为例为读者介绍一下这一领域中目前热度比较高的一个工具 - K8sGPT。

概述

    Kubernetes 用户不可避免地会遇到集群问题,需要调试和修复才能保持 Pod 和 Service监控运行。无论是学习 Kubernetes还是管理大型复杂生产环境,排查集群内出现的问题都可能充满挑战且耗时的。

    云原生 DevOps 在管理容器、微服务和自动扩展功能方面涉及很多复杂性。生成式人工智能可以帮助排除故障并执行与 Kubernetes 等平台相关的一些操作任务。这可能涉及使用自然语言提示来启动、回滚或获取集群的可观测性。

    例如,在KubeCon + CloudNativeCon 2023(https://thenewstack.io/kubiya-launches-first-generative-ai-for-platform-engineering)上,Kubiya 首次推出了生成式 AI 工作流程引擎,能够在 Slack 内解释此类命令。扩展自然语言处理可能有助于平台团队创建新的工作流程,以抽象化使用云原生平台的复杂性。

K8sGPT

    K8sGPT是一个相对较新的开源项目,它使用 AI 模型来解释 Kubernetes 错误消息并提供集群运行洞察。它已被两个组织在生产中使用,并已申请成为 CNCF 沙箱项目。

K8sGPT 特点:

● 提供 Kubernetes 错误消息的详细和上下文解释

● 提供集群运行洞察

● 支持多种安装选项

● 支持不同的AI后端

    K8sGPT 是同类项目中最著名和最广泛使用的项目。它由 Alex Jones 推出,被宣传为“为每个人赋予 Kubernetes 超能力”的一种方式。

    K8sGPT 是一个 CLI 工具,带有一个主要命令k8sgpt analyze,旨在发现 Kubernetes 集群中的问题。它通过使用“分析器”来实现这一点,“分析器”定义每个 Kubernetes 对象的逻辑及其可能遇到的问题。例如,Kubernetes 服务的分析器将检查特定服务是否存在并具有端点(Endpoint),以及其端点是否准备就绪。

    识别这样的问题本身并不是有很大的挑战,但是当我们要求 k8sgpt 解释我们可以对此采取哪些措施时,神奇的事情就会发生。为此,我们需要运行命令k8sgpt analyze --explain。这将向 AIGC 询问针对您的具体情况的说明并显示它们。这些说明将包括解决问题所需采取的操作,包括我们只需复制和粘贴即可执行的特定 kubectl 命令。这是因为所有需要用到的 Kubernetes 资源的名称都已经被提取。

AIGC内容分享(十九):插上 AIGC 翅膀的 Kubernetes AIOps工具 - K8sGPT,AI(人工智能) 内容分享,AIGC 内容分享,Kubernetes 内容分享,AIGC,kubernetes,gpt

安装

    K8sGTP 可以安装在多种环境中,详细可以参考安装文档(https://docs.k8sgpt.ai/getting-started/installation)。笔者使用的是 Macbook,所以首选使用 homebrew 来安装 K8sGPT 。运行以下命令:​​​​​​​

brew tap k8sgpt-ai/k8sgptbrew install k8sgpt

    要查看 K8sGPT 提供的所有命令,请使用“--help”标志:​​​​​​​

k8sgpt --help
Kubernetes debugging powered by AI

Usage:
  k8sgpt [command]

Available Commands:
  analyze     This command will find problems within your Kubernetes cluster
  auth        Authenticate with your chosen backend
  cache       For working with the cache the results of an analysis
  completion  Generate the autocompletion script for the specified shell
  filters     Manage filters for analyzing Kubernetes resources
  generate    Generate Key for your chosen backend (opens browser)
help        Help about any command
  integration Integrate another tool into K8sGPT
  serve       Runs k8sgpt as a server
  version     Print the version number of k8sgpt

Flags:
      --config string        Default config file(/Users/wangtianqing/Library/Application Support/k8sgpt/k8sgpt.yaml)
  -h, --help                 helpfor k8sgpt
      --kubeconfig string    Path to a kubeconfig. Only required if out-of-cluster.
      --kubecontext string   Kubernetes context to use. Only required if out-of-cluster.

Use "k8sgpt [command] --help"formore information about a command.

    我们还可以在文档中查看不同命令的描述。接下来,我们需要设置 OpenAI 的 token。

配置 OpenAI

    我们需要注册一个OpneAI 帐户和一个正在运行的 Kubernetes 集群;任何集群,例如 microk8s 或 minikube 就足够了。注册 OpneAI 帐户后,我们需要访问以下站点生成新的 API 密钥https://platform.openai.com/account/api-keys。或者我们可以运行以下命令,K8sGPT 将在默认浏览器中打开同一站点:

k8sgpt generate

    K8sGPT 与 OpenAI 交互需要此密钥。使用新创建的 API 密钥/令牌授权 K8sGPT:​​​​​​​

k8sgpt auth add openaiWarning: backend input is empty, will use the default value: openaiWarning: model input is empty, will use the default value: gpt-3.5-turboEnter openai Key: openai added to the AI backend provider list

    我们可以使用以下命令列出 AI 后端:​​​​​​​

k8sgpt auth list --detailsShow password ? (y/n)yDefault:> openaiActive:> openai   - Model: gpt-3.5-turboUnused:> localai> azureopenai> cohere> amazonbedrock> amazonsagemaker> google> noopai

    同样,K8sGPT AI Backends 文档(https://docs.k8sgpt.ai/reference/providers/backend/)提供了有关不同可用人工智能后端的更多信息。

初步尝试

    接下来,我们将在 Kubernetes 集群中部署恶意 Deployment。此时Pod 将出现 CrashLoopBackOff。以下是 YAML:​​​​​​

apiVersion: apps/v1kind: Deploymentmetadata:  name: nginx-deployment  labels:    app: nginxspec:  replicas: 3  selector:    matchLabels:      app: nginx  template:    metadata:      labels:        app: nginx    spec:      containers:      - name: nginx        image: nginx:1.14.2        ports:        - containerPort: 80        securityContext:          readOnlyRootFilesystem: true

备注:以下设置是导致 Pod crash 的根因。​​​​​​​

securityContext:          readOnlyRootFilesystem: true

接下来,我们将为示例应用程序创建专用命名空间并部署:​​​​​​​

kubectl create ns demonamespace/demo created
kubectl apply -f ./k8sgpt-deployment.yaml -n demodeployment.apps/nginx-deployment created

    此时我们可以看到 Pod 出现了故障:​​​​​​​

kubectl get po -n demoNAME                                READY   STATUS             RESTARTS         AGEnginx-deployment-866dc6df9c-9v498   0/1     CrashLoopBackOff   17(4m36s ago)   79mnginx-deployment-866dc6df9c-gg5g8   0/1     CrashLoopBackOff   17(4m44s ago)   79mnginx-deployment-866dc6df9c-t8d5j   0/1     CrashLoopBackOff   17(4m44s ago)   79m

    接下来我们需要查看出现 CrashLoopBackOff 的原因:​​​​​​​

kubectl describe po nginx-deployment-866dc6df9c-9v498 -n demo...Events:  Type     Reason     Age                  From               Message  ----     ------     ----                 ----               -------  Normal   Scheduled  3m12s                default-scheduler  Successfully assigned demo/nginx-deployment-866dc6df9c-9v498 to docker-desktop  Normal   Pulling    3m13s                kubelet            Pulling image "nginx:1.14.2"  Normal   Pulled     2m52s                kubelet            Successfully pulled image "nginx:1.14.2"in20.848s (20.848s including waiting)  Normal   Created    87s (x5 over 2m52s)  kubelet            Created container nginx  Normal   Started    87s (x5 over 2m52s)  kubelet            Started container nginx  Normal   Pulled     87s (x4 over 2m51s)  kubelet            Container image "nginx:1.14.2" already present on machine  Warning  BackOff    74s (x9 over 2m50s)  kubelet            Back-off restarting failed container nginx in pod nginx-deployment-866dc6df9c-9v498_demo(6cee8bb0-31d2-4ea2-8c3d-96648e8ad50c)

    此时我们可以运行 K8sGPT analyze命令来访问 pod 的运行信息来分析错误的原因:​​​​​​​

k8sgpt analyzeAI Provider: AI not used; --explain not set
0 demo/nginx-deployment-866dc6df9c-9v498(Deployment/nginx-deployment)- Error: back-off 5m0s restarting failed container=nginx pod=nginx-deployment-866dc6df9c-9v498_demo(6cee8bb0-31d2-4ea2-8c3d-96648e8ad50c)- Error: the last termination reason is Error container=nginx pod=nginx-deployment-866dc6df9c-9v498
1 demo/nginx-deployment-866dc6df9c-gg5g8(Deployment/nginx-deployment)- Error: back-off 5m0s restarting failed container=nginx pod=nginx-deployment-866dc6df9c-gg5g8_demo(5446f35e-99ff-4edf-8cf5-fe36c1eb5d08)- Error: the last termination reason is Error container=nginx pod=nginx-deployment-866dc6df9c-gg5g8
2 demo/nginx-deployment-866dc6df9c-t8d5j(Deployment/nginx-deployment)- Error: back-off 5m0s restarting failed container=nginx pod=nginx-deployment-866dc6df9c-t8d5j_demo(332933e6-04f3-4886-80d8-de08db235fe0)- Error: the last termination reason is Error container=nginx pod=nginx-deployment-866dc6df9c-t8d5j

    要使用 OpenAI,请使用 --explain 参数:​​​​​​​

k8sgpt analyze --explain... 0% |                                                                                                                | (0/3, 0 it/hr) [0s:0s]Error: exhausted API quota for AI provider openai: error, status code: 429, message: You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.

    此处作者账号被限流了,作为对比,我直接使用ChatGPT 3.5 来询问相关问题(原理实际上是一样的,核心怎么组织 prompt 模版):​​​​​​​

我在 Kubernetes 集群上运行了一个 deployment,有如下信息:nginx-deployment-866dc6df9c-9v498   0/1     CrashLoopBackOff   17 (4m36s ago)   79m通过 describe pod,发现如下信息:Warning  BackOff  2m38s (x369 over 98m)  kubelet  Back-off restarting failed container nginx in pod nginx-deployment-866dc6df9c-9v498_demo(6cee8bb0-31d2-4ea2-8c3d-96648e8ad50c)请问出现 CrashLoopBackOff 的可能原因是什么?并请提供相关命令。

    ChatGPT 的回答如下:


    CrashLoopBackOff 表明容器在启动后不断地失败并重启。要找到问题的原因,你可以执行以下步骤:

1.  查看 Pod 的详细信息:

kubectl describe pod nginx-deployment-866dc6df9c-9v498

    这将提供有关 Pod 的详细信息,包括容器的事件和警告。你之前提到了一个 Warning,你可以查看这个 Warning 的详细信息,以获取更多关于问题的上下文。

2.  查看容器日志:

kubectl logs nginx-deployment-866dc6df9c-9v498 -c nginx

    通过查看容器的日志,你可以获得容器启动时的详细错误信息。这有助于识别导致容器崩溃的具体问题。

3.  检查 Pod 事件:

kubectl get events --sort-by='.metadata.creationTimestamp'|grep nginx-deployment-866dc6df9c-9v498

    通过检查 Pod 的事件,你可以了解容器启动和失败的时间点,并查看相关的事件消息。

4.  查看容器状态:

kubectl get pod nginx-deployment-866dc6df9c-9v498 -o jsonpath='{.status.containerStatuses[*].state}'

    这将显示容器的当前状态,有助于了解容器是在哪个阶段失败。

5.  检查资源定义:

    检查 Deployment 或 Pod 的资源定义,确保容器所需的资源(如 CPU 和内存)得到了正确配置。

    通过执行以上步骤,你应该能够找到导致 CrashLoopBackOff 的具体原因。在解决问题时,关注容器的启动日志和 Pod 的事件,这些信息通常能够提供关键线索。


根因分析

    当然了,根据笔者之前整理的 Pod 故障诊断:Kubernetes Pod 异常诊断,此时我们应该结合容器日志排查:​​​​​​​

kubectl logs nginx-deployment-866dc6df9c-gg5g8 -n demo2024/01/06 01:28:51 [emerg]1#1: mkdir() "/var/cache/nginx/client_temp" failed (30: Read-only file system)nginx: [emerg] mkdir()"/var/cache/nginx/client_temp" failed (30: Read-only file system)

    所以 crashloopback 是由于我们上面的安全设置所导致的。

更多用法

详细请参考:https://github.com/k8sgpt-ai/k8sgpt/tree/main。

总结

    我们可以看到 K8sGPT 给我们带来的价值:

1.  K8sGPT 内置了多种 Kubernetes 资源的分析器,可以针对每种资源的故障的做数据的整理和分析(不依赖于 AIGC):​​​​​​​​​​​​​​

Enabled by default●  podAnalyzer●  pvcAnalyzer●  rsAnalyzer●  serviceAnalyzer●  eventAnalyzer●  ingressAnalyzer●  statefulSetAnalyzer●  deploymentAnalyzer●  cronJobAnalyzer●  nodeAnalyzer●  mutatingWebhookAnalyzer●  validatingWebhookAnalyzerOptional●  hpaAnalyzer●  pdbAnalyzer●  networkPolicyAnalyzer●  gatewayClass●  gateway●  httproute

2.  K8sGPT 可以检索官方文档来对错误信息进行解析(类似于在知识库中做关键字检索);

k8sgpt analyze --with-doc

3.  K8sGPT支持多种 AIGC 提供方,可以使用大语言模型来对错误信息做进一步的分析,其核心还是提示词工程。

    总之 K8sGPT 本身就是一种很好的故障辅助诊断工具,有了 AIGC 的翅膀,则让定位问题的过程会更加快速。文章来源地址https://www.toymoban.com/news/detail-812714.html

到了这里,关于AIGC内容分享(十九):插上 AIGC 翅膀的 Kubernetes AIOps工具 - K8sGPT的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AI将会为人类插上了强力的翅膀

    半年过去了,以ChatGPT为首的大模型对这个世界产生了翻天覆地的变化,兴奋者有之,恐惧者有之,思索着亦有之。或许真如很多人的预测,AGI将会出现,人类作为硅基智慧的垫脚石遁入历史的红尘中。 不过目前短期十几年来看,人工智能替代人类估计还是科幻的事情,但是

    2024年02月11日
    浏览(39)
  • AI时代,当项目经理遇到ChatGPT,插上腾飞的翅膀!

    随着人工智能技术的不断发展, ChatGPT 作为一种基于自然语言处理技术的人工智能模型,已经广泛应用于各个领域。在项目管理领域, ChatGPT 可以帮助项目经理插上翅膀,提高项目管理效率和质量。 ChatGPT 可以帮助项目经理对任务进行有效分配和跟踪。通过对任务的描述和分

    2024年02月08日
    浏览(30)
  • PHP实践:用Yconf配置扩展为项目插上性能的翅膀

    🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🏆本文已收录于PHP专栏:PHP进阶实战教程。 🏆另有专栏PHP入门基础教程,

    2024年02月09日
    浏览(35)
  • VR云游:让旅游产业插上数字化翅膀,打造地方名片

    自多地入冬降温以来,泡温泉成了许多人周末度假的选择,在气温持续走低的趋势下,温泉游也迎来了旺季;但是依旧有些地区温度依旧温暖,例如南京的梧桐美景也吸引了不少游客前去打卡,大家穿着汉服与金黄的树叶合影,并解锁出更多新玩法,也拉动了当地的旅游新消

    2024年02月04日
    浏览(39)
  • AI爆款文案 巧用AI大模型让文案变现插上翅膀

    💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】 🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址 🤟 基于Web端打造的:👉轻量化工具创作平台 💅 想寻找共同学习交流,摸鱼划水的小伙伴,请点击【全栈技术交流群】 1.爆款文案一键式创作 :通

    2024年04月11日
    浏览(38)
  • AI时代Python量化交易实战:ChatGPT让量化交易插上翅膀

    目录 一、引言 二、ChatGPT与量化交易的融合 三、实践应用:ChatGPT在量化交易中的成功案例 四、挑战与前景 五、结论 《AI时代Python量化交易实战:ChatGPT让量化交易插上翅膀》📚→ 当当 | 京东 亮点 内容简介 获取方式 前些天发现了一个巨牛的人工智能学习网站,通俗易懂

    2024年02月03日
    浏览(40)
  • AI时代产品经理升级之道:ChatGPT让产品经理插上翅膀

    💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 AI时代的产品经理面临着前所未有的机遇和挑战。随着人工智能技术的不断发展和

    2024年02月06日
    浏览(43)
  • 《AI时代架构师修炼之道:ChatGPT让架构师插上翅膀》

    本专注于帮助架构师在AI时代 实现晋级、提高效率的图书 书中介绍了如何使用 ChatGPT 来完成架构设计的各个环节 并通过实战案例展示了ChatGPT在实际架构设计中的应用方法 关键点 1.架构设计新模式:让架构设计更高效、更快捷、更完美。 2.全流程解析:涵盖架构设计的不同应

    2024年02月06日
    浏览(41)
  • AI时代架构师修炼之道:ChatGPT让架构师插上翅膀

    随着数字化时代的到来,软件架构师面临着越来越多的挑战,如快速响应需求变化、保证系统稳定性、优化性能等。为了应对这些挑战,提高工作效率是必不可少的。而ChatGPT作为一种强大的自然语言处理工具,可以为软件架构师提供许多帮助。本文将介绍如何使用ChatGPT提高

    2024年02月06日
    浏览(41)
  • AI时代项目经理与架构师的成长之道:ChatGPT让你插上翅膀

    💂 个人网站:【工具大全】【游戏大全】【神级源码资源网】 🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】 💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 在AI时代,项目经理和架构师的角色变得越发关键,他们需要不断学习和适应新技

    2024年02月04日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包