k8s AIOps
主要介绍下k8sgpt
官站
github
介绍
k8sgpt 是一个用于扫描Kubernetes集群、诊断和分级问题的工具。它以简单的英语呈现问题,并将站点可靠性工程(SRE)的经验编码到其分析器中。通过AI丰富问题的解释,k8sgpt帮助提取最相关的信息。它支持与多个AI服务提供商的开箱即用集成,包括OpenAI、Azure、Cohere、Amazon Bedrock、Google Gemini以及本地模型. 这意味着您可以根据自己的需求选择不同的AI服务提供商。
k8sgpt内置了如下的分析器:
podAnalyzer
pvcAnalyzer
rsAnalyzer
serviceAnalyzer
eventAnalyzer
ingressAnalyzer
statefulSetAnalyzer
deploymentAnalyzer
cronJobAnalyzer
nodeAnalyzer
mutatingWebhookAnalyzer
validatingWebhookAnalyzer
特性
-
核心分析器:
- K8sGPT 的核心是基于自然语言处理(NLP)和机器学习(ML)的智能分析器。
- 当工程师输入一个简单的英文句子描述问题时,K8sGPT会将其转化为对集群状态的描述。
- 然后,它利用 AI 算法对集群状态进行深度分析,提取最相关的信息,并通过自然语言生成回复。
-
应用场景:
- K8sGPT 适用于多种场景,例如:
- 集群状态监控:通过输入简单的英文句子,工程师可以快速了解集群的整体状态,包括 CPU、内存、网络等资源的使用情况。
- 故障排查:当集群出现故障时,工程师可以输入相关的英文句子描述问题,K8sGPT会迅速分析并给出可能的故障原因和解决方案。
- 性能优化:工程师可以通过输入有关性能问题的英文句子,让 K8sGPT 分析集群的性能瓶颈和优化建议。
- 安全审计:K8sGPT 可以检测集群的安全漏洞和风险,为安全审计提供有力的支持。
- K8sGPT 适用于多种场景,例如:
-
优势:
- 高效便捷:通过简单的英文句子输入,工程师可以快速获取诊断结果,大大提高了工作效率。
- 实时监控:K8sGPT 可以对集群状态进行实时监控和分析,及时发现潜在的问题和风险。
- 智能分析:利用 AI 算法,K8sGPT 提高了诊断的准确性和可靠性。
K8sGPT 作为基于 AI 的云原生终极工具,为云原生软件工程师提供了强大的支持。
环境
操作系统:
Static hostname: node1
Icon name: computer-vm
Chassis: vm
Machine ID: 22349ac6f9ba406293d0541bcba7c05d
Boot ID: 3261349e4b7b4981a32d255a82484ab8
Virtualization: vmware
Operating System: Ubuntu 22.04.4 LTS
Kernel: Linux 5.15.0-107-generic
Architecture: x86-64
Hardware Vendor: VMware, Inc.
Hardware Model: VMware Virtual Platform
K8s:
Client Version: v1.29.5
Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
Server Version: v1.29.5
安装
wget https://github.com/k8sgpt-ai/k8sgpt/releases/download/v0.3.32/k8sgpt_amd64.deb
dpkg -i k8sgpt_amd64.deb
使用月之暗面LLM
月之暗面的api是和openai兼容的
-
申请API
moonshot API -
删除默认的openai设置
cp ~/.config/k8sgpt/k8sgpt.yaml ~/.config/k8sgpt/k8sgpt.yaml.orig
>~/.config/k8sgpt/k8sgpt.yaml
- 生成k8sgpt配置文件
k8sgpt auth add -b openai -u https://api.moonshot.cn -m moonshot-v1-8k
# 填入API key
- 查看yaml文件
# cat ~/.config/k8sgpt/k8sgpt.yaml
ai:providers:- name: openaimodel: moonshot-v1-8kpassword: sk-hdKOoZgHOXRDrDfFO4wP9BGZrYdx43qGVqBNuvGL4R28c62abaseurl: https://api.moonshot.cntemperature: 0.7topp: 0.5topk: 50maxtokens: 2048defaultprovider: ""
kubeconfig: ""
kubecontext: ""
测试
k8sgpt analyze --explain
k8sgpt analyze --explain -o json
k8sgpt filters list
其他命令
Run a scan with the default analyzers
k8sgpt generate
k8sgpt auth add
k8sgpt analyze --explain
k8sgpt analyze --explain --with-doc
Filter on resource
k8sgpt analyze --explain --filter=Service
Filter by namespace
k8sgpt analyze --explain --filter=Pod --namespace=default
Output to JSON
k8sgpt analyze --explain --filter=Service --output=json
Anonymize during explain
k8sgpt analyze --explain --filter=Service --output=json --anonymize
Using filters
List filters
k8sgpt filters list
Add default filters
k8sgpt filters add [filter(s)]
Examples :
- Simple filter :
k8sgpt filters add Service
- Multiple filters :
k8sgpt filters add Ingress,Pod
Remove default filters
k8sgpt filters remove [filter(s)]
Examples :
- Simple filter :
k8sgpt filters remove Service
- Multiple filters :
k8sgpt filters remove Ingress,Pod
Additional commands
List configured backends
k8sgpt auth list
Update configured backends
k8sgpt auth update $MY_BACKEND1,$MY_BACKEND2..
Remove configured backends
k8sgpt auth remove -b $MY_BACKEND1,$MY_BACKEND2..
List integrations
k8sgpt integrations list
Activate integrations
k8sgpt integrations activate [integration(s)]
Use integration
k8sgpt analyze --filter=[integration(s)]
Deactivate integrations
k8sgpt integrations deactivate [integration(s)]
Serve mode
k8sgpt serve
Analysis with serve mode
grpcurl -plaintext -d '{"namespace": "k8sgpt", "explain": false}' localhost:8080 schema.v1.ServerService/Analyze
FAQ
目前有那些大模型ai可以自动运维k8s集群
目前有一些大模型 AI 工具可以帮助自动运维 Kubernetes(K8s)集群。让我为您介绍其中两个:
-
k8sgpt:这是一个新一代AI驱动的Kubernetes诊断工具,专门用于扫描Kubernetes集群、诊断和分级问题。它将站点可靠性工程(SRE)的经验编码到其分析器中,并通过AI丰富问题的解释。k8sgpt支持与多个AI服务提供商的开箱即用集成,包括OpenAI、Azure、Cohere、Amazon Bedrock、Google Gemini以及本地模型¹. 您可以在k8sgpt官网上了解更多信息。
-
KServe + vLLM:这是一个与云无关的标准大模型推理平台,专为大模型应用高度可扩展而构建。KServe封装了自动扩展、网络、健康检查和服务器配置的复杂性,使得生产大模型应用服务变得简单、可插拔。vLLM是一种快速且易于使用的低延迟模型推理引擎,支持高吞吐量和GPU利用率。您可以使用KServe + vLLM部署大模型的推理服务,将大模型应用到实际业务场景中.
还有其他类似的AI自动运维K8s集群的工具吗?
当然,除了之前提到的 k8sgpt 和 KServe + vLLM,还有其他一些类似的AI自动运维K8s集群的工具。以下是其中两个值得关注的工具:
-
Kubectl-GPT:这是一个Kubectl插件,可以使用GPT模型从自然语言输入生成Kubectl命令。您只需输入您想要执行的操作,Kubectl-GPT会自动转换成相应的Kubernetes集群命令。您可以使用Homebrew或Krew来安装Kubectl-GPT,并在终端中运行命令.
-
使用Homebrew安装:
brew tap devinjeon/kubectl-gpt brew install kubectl-gpt
-
使用Krew安装:
kubectl krew index add devinjeon https://github.com/devinjeon/kubectl-gpt kubectl krew install devinjeon/gpt
您可以通过自然语言输入运行命令行工具,生成Kubectl命令,例如:
kubectl gpt "Print the creation time and pod name of all pods in all namespaces."
-
-
Kube-Copilot:这是由OpenAI支持的Kubernetes Copilot。它具有以下主要功能:
- 使用ChatGPT(GPT-4或GPT-3.5)自动执行Kubernetes集群操作。
- 诊断和分析Kubernetes工作负载的潜在问题。
- 根据提示说明生成Kubernetes清单。
- 利用本地kubectl和trivy命令进行Kubernetes集群访问和安全漏洞扫描。
您可以通过Helm或kubectl在Kubernetes中运行Kube-Copilot,也可以在本地安装并使用pip命令安装Kube-Copilot².
安装示例(使用Helm):
# 使用Helm和OpenAI API密钥 helm install kube-copilot kube-copilot \--repo https://feisky.xyz/kube-copilot \--set openai.apiModel=gpt-4 \--set openai.apiKey=$OPENAI_API_KEY
或者,您可以使用kubectl运行Kube-Copilot:
kubectl run -it --rm copilot \--env="OPENAI_API_KEY=$OPENAI_API_KEY" \--restart=Never \--image=ghcr.io/feiskyer/kube-copilot \-- execute --verbose 'What Pods are using max memory in the cluster'
这些工具将帮助您更好地管理和运维Kubernetes集群,提高效率并优化资源利用率。
k8sgpt可以接本地的ollama模型吗
当然可以!k8sgpt 可以接入本地部署的 ollama 模型。让我为您详细介绍一下如何实现这个集成。
-
安装 Ollama:
- 首先,您需要安装 Ollama。您可以从官方网站下载 Ollama 的 Windows 安装程序并进行安装。
- 安装完成后,您需要设置 Ollama 的存储位置,可以通过设置环境变量来实现。
-
下载 Ollama 模型:
- 在 Ollama 官网上,您可以找到模型列表。复制您想要使用的模型的名称。
- 打开命令行(cmd),粘贴模型名称并开始下载。下载完成后,您可以在本地的命令行中与模型进行对话。
-
安装部署 Fastgpt:
- 您还可以部署 Fastgpt,这是一个与云无关的标准大模型推理平台。您可以使用 Docker Compose 快速部署 Fastgpt。
- 配置 Fastgpt 的模型,将 Ollama 集成到您的应用中。
-
配置 ChatOllama:
- 访问 ChatOllama,配置 Ollama 的地址。
- 下载 embedding 和 chat 模型,进行推理和对话。
-
配置 One API:
- 创建一个令牌并设置无限访问时间。
- 创建 chat 和 embedding 渠道,将 Ollama 集成到您的应用中。
-
配置 Fastgpt:
- 找到 Fastgpt 的配置文件
config.json
,配置 Ollama 模型。 - 重新启动 Fastgpt。
- 找到 Fastgpt 的配置文件
现在,您已经成功将本地的 Ollama 模型集成到 k8sgpt 中,可以开始使用了!
k8sgpt只是调用ai的接口让ai来处理k8s集群状态和输出答案吗
k8sgpt 不仅仅是调用 AI 接口来处理 Kubernetes 集群状态和输出答案。它是一个更为复杂和高级的工具,结合了 Kubernetes 的集群管理能力和 AI 的智能分析能力。以下是 k8sgpt 工作原理的简要概述:
-
数据收集:
- k8sgpt 首先从 Kubernetes 集群中收集数据,包括 Pods、Services、Nodes 等资源的状态和配置信息。
-
问题诊断:
- 当用户提出问题时,k8sgpt 会分析集群数据,并利用 AI 模型来理解问题的上下文和具体细节。
-
智能分析:
- AI 模型会对问题进行深入分析,找出可能的原因,并生成解决方案的建议。
-
自然语言处理:
- k8sgpt 使用自然语言处理技术来解析用户的查询,并将 AI 的分析结果转换为易于理解的自然语言回答。
-
持续学习:
- k8sgpt 的 AI 模型可以通过持续学习来改进其诊断和分析能力,以提供更准确和有效的支持。
总的来说,k8sgpt 是一个综合性的工具,它不仅仅是简单地调用 AI 接口,而是通过智能化的方式来增强 Kubernetes 集群的管理和运维。它的目标是使集群管理更加高效、简单和智能。