Hello folks,我是 Luga,今天我们来聊一下云原生生态排障大杀器-基于AI 的云原生终极工具:“K8sGPT”。
随着人工智能和机器学习的兴起,企业和组织越来越多地寻找创新方法来利用这些技术来获得竞争优势。 该领域最强大的工具之一便是 K8sGPT,即基于 Kubernetes 的 GPT,它将 Kubernetes 编排的优势与 GPT 模型的高级自然语言处理能力结合在一起。
毫不夸张滴说,K8sGPT 是一种改变游戏规则的工具,有可能彻底改变许多行业,从医疗保健和金融到电子商务和教育。它分析和理解自然语言数据的能力是无与伦比的,这使其成为希望从大量文本数据中获得洞察力的企业和组织的宝贵工具。
— 01—
何为 K8sGPT ?
先来看一张图:
再来看一张图
K8sGPT 是一个用于扫描 Kubernetes Cluster,以及用简单的英语诊断和分类问题的工具。它将 SRE 经验植入其分析仪,并帮助我们提取最有价值的相关信息,以及基于人工智能进行丰富、完善,以支撑问题的解决。
— 02—
K8sGPT 到底是如何工作?
通常来讲,K8sGPT 使用一组分析仪,旨在识别和简化Kubernetes Cluster 中诊断和分类问题的过程。这些分析仪具有 SRE 经验,有助于提供最准确和相关的信息。
关于 K8sGPT 所内置的分析仪,具体可参考如下所示:
1、PodAnalyzer
此分析仪主要检查 Pod 所关联的相关配置,并检查任何可能导致 Pod 崩溃或资源过度使用等问题。
2、PVCAnalyzer
此分析仪主要检查 PVC 的配置信息,并检查任何可能导致数据丢失或其他存储相关问题的问题。
3、ServiceAnalyzer
此分析仪主要检查服务的参数配置情况,并检查可能导致服务停机或性能下降的任何问题。
4、DeploymentAnalyzer
此分析仪主要检查部署的相关配置情况,并检查可能导致资源使用不足或过度使用的任何问题。
5、NodeAnalyzer:此分析仪检查 Kubernetes Cluster 中的节点信息,并检查与节点运行状况、利用率和容量相关的任何问题。
当然,除了上述所列举的核心分析仪外,在实际的业务场景中,仍然有一些有用的分析仪可供使用,例如:入口分析仪、定时任务分析仪、事件分析仪以及其他等等。
对于 AI 后端,K8sGPT 使用 OpenAI 作为默认后端平台。我们可以切换到其他后端,例如 Azure OpenAI 提供商或 FakeAI 提供商等。
03—
K8sGPT 能够帮助我们解决哪些痛点?
基于这款划时代的创新工具,K8sGPT 能够帮我们做的事情还真不少,具体可参考如下所示:
1、诊断 Kubernetes Cluster 故障
K8sGPT 能够帮助我分析来自 Kubernetes Cluster 的日志和其他关键数据,以识别当前系统环境所存在的潜在问题。从而可以帮助我们,特别是 SRE、平台和 DevOps 工程师快速了解其集群中发生了什么,并找到问题的根本原因。
2、Kubernetes Cluster 分类问题
K8sGPT 能够专注于分类和诊断集群中的问题,帮助我们消除了日志和多种工具的噪音,以便快速找到问题的根本原因。
3、提高 Kubernetes Cluster 的可靠性
通过使用 K8sGPT 定期分析 Kubernetes Cluster 的运行状况,使得我们能够在导致停机或其他问题之前主动识别和解决问题。
4、对特定资源进行故障排除
在实际的生产环境场景中,假设我们遇到特定资源的问题,例如,服务或部署,或者在特定命名空间中,K8sGPT 则能够帮助我轻松地对特定资源或特定命名空间进行故障排除。
5、匿名化数据
在分析过程中,K8sGPT 检索可能包含敏感信息的数据,如 Pod 名称、命名空间、资源名称等,这些敏感信息有时被归类为对特定群体甚至更具限制性的个人严格机密(C3、C4数据分类)。K8sGPT 为我们提供了一种功能,通过在发送到 AI 后端时将其屏蔽,并将其替换为密钥,该密钥可用于在解决方案返回给用户时对数据进行去匿名化,从而轻松匿名化这些数据。
— 04—
如何使用 K8sGPT ?
通常而言,K8sGPT 可以作为 CLI(命令行界面)工具安装,也可以作为 Kubernetes Cluster 中的 Operator 安装。
1、基于 CLI 安装:
[leonli@leonLab ~ ] % brew tap k8sgpt-ai/k8sgpt Warning: No remote 'origin' in /opt/homebrew/Library/Taps/homebrew/homebrew-services, skipping update! Running `brew update --auto-update`... ==> Auto-updated Homebrew! Updated 1 tap (kubescape/tap). You have 16 outdated formulae and 1 outdated cask installed. ==> Tapping k8sgpt-ai/k8sgpt Cloning into '/opt/homebrew/Library/Taps/k8sgpt-ai/homebrew-k8sgpt'... remote: Enumerating objects: 86, done. remote: Counting objects: 100% (86/86), done. remote: Compressing objects: 100% (85/85), done. remote: Total 86 (delta 51), reused 2 (delta 0), pack-reused 0 Receiving objects: 100% (86/86), 18.77 KiB | 98.00 KiB/s, done. Resolving deltas: 100% (51/51), done. Tapped 1 formula (14 files, 37.7KB).
[leonli@leonLab ~ ] % brew install k8sgpt Warning: No remote 'origin' in /opt/homebrew/Library/Taps/homebrew/homebrew-services, skipping update! Running `brew update --auto-update`... ==> Fetching k8sgpt-ai/k8sgpt/k8sgpt ==> Downloading https://github.com/k8sgpt-ai/k8sgpt/releases/download/v0.3.0/k8sgpt_Darwin_arm64.tar.gz ==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/617152691/d9f59995-7f66-468b-9a21-2dd6a2f3c7ea?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKI ######################################################################## 100.0% ==> Installing k8sgpt from k8sgpt-ai/k8sgpt 🍺 /opt/homebrew/Cellar/k8sgpt/0.3.0: 6 files, 55.5MB, built in 3 seconds ==> Running `brew cleanup k8sgpt`... Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
[leonli@leonLab ~ ] % /opt/homebrew/Cellar/k8sgpt/0.3.0/bin/k8sgpt version k8sgpt version 0.3.0
OK,Over 了。
2、基于 Operator 安装:
通常情况下,若基于 Kubernetes Cluster 中安装 K8sGPT,那么使用 k8sgpt-operator 进行。
基于操作员模式,旨在在 Kubernetes Cluster 中启用 K8sGPT。它将允许我们创建一个自定义资源,定义托管 K8sGPT 工作负载的行为和范围。分析和输出也可以配置,以便集成到现有工作流程中。
这种操作模式非常适合持续监控我们所构建的集群环境,并且可以与我们现有的监控(如Prometheus和Alertmanager)进行友好集成。
[leonli@leonLab ~ ] % helm repo add k8sgpt https://charts.k8sgpt.ai/ [leonli@leonLab ~ ] % helm install release k8sgpt/k8sgpt-operator -n k8sgpt-operator-system --create-namespace
接下来,我们再简要介绍一下运行示例,具体如下所示:
(1)创建密钥operator-system
[leonli@leonLab ~ ] % kubectl create secret generic k8sgpt-sample-secret --from-literal=openai-api-key=$OPENAI_TOKEN -n k8sgpt- operator-system
(2)应用K8sGPT配置对象
[leonli@leonLab ~ ] % kubectl apply -f - << EOF apiVersion: core.k8sgpt.ai/v1alpha1 kind: K8sGPT metadata: name: k8sgpt-sample namespace: k8sgpt-operator-system spec: model: gpt-3.5-turbo backend: openai noCache: false version: v0.3.0 enableAI: true secret: name: k8sgpt-sample-secret key: openai-api-key EOF
(3)查看部署结果
一旦应用了自定义资源,将开始安装 K8sGPT 组件,此时,我们将能够在几分钟后看到分析的结果对象,具体如下所示:
[leonli@leonLab ~ ] % kubectl get results -o json | jq . { "apiVersion": "v1", "items": [ { "apiVersion": "core.k8sgpt.ai/v1alpha1", "kind": "Result", "metadata": { "creationTimestamp": "2023-04-26T09:45:02Z", "generation": 1, "name": "placementoperatorsystemplacementoperatorcontrollermanagermetricsservice", "namespace": "default", "resourceVersion": "108371", "uid": "f0edd4de-92b6-4de2-ac86-5bb2b2da9736" }, "spec": { "details": "The error message means that the service in Kubernetes doesn't have any associated endpoints, which should have been labeled with \"control-plane=controller-manager\". \n\nTo solve this issue, you need to add the \"control-plane=controller-manager\" label to the endpoint that matches the service. Once the endpoint is labeled correctly, Kubernetes can associate it with the service, and the error should be resolved.",
— 05—
常用 K8sGPT 操作示例?
安装完成后,我们可以查看当前 K8sGPT 组件的版本,具体如下所示:
[leonli@leonLab ~ ] % /opt/homebrew/Cellar/k8sgpt/0.3.0/bin/k8sgpt version k8sgpt version 0.3.0
我们发现,当前当前 K8sGPT 为最新版,此时,我们可以使用 “--help ” 命令进行索引指示操作。
例如,基于 k8sgpt filters list 命令进行操作,具体如下所示:
以及运行以下命令来分析 Kubernetes Cluster 中的问题,具体可参考:
当然,除了上述的命令行外,如下相关的命令行在日常的场景中应用也较为广泛,比如如下等等。
[leonli@leonLab ~ ] % k8sgpt generate && k8sgpt auth &&
随着企业和组织不断寻找利用人工智能和机器学习的创新方法,K8sGPT 正在成为一种强大的工具,可以帮助他们实现目标。 凭借其先进的自然语言处理能力和 Kubernetes 编排的优势,K8sGPT 有可能改变我们分析和理解文本数据的方式,并推动许多行业的创新。
Adiós !