AI powered Kubernetes Assistant - kubectl-ai使用指南

AI powered Kubernetes Assistant - kubectl-ai使用指南

技术背景

kubectl-ai 是一款由人工智能驱动的 Kubernetes 代理工具,它可以在终端中运行,帮助用户更高效地管理 Kubernetes 集群。通过集成多种 AI 模型,kubectl-ai 能够理解用户的自然语言查询,并执行相应的 kubectl 命令,同时提供结果和解释。

实现步骤

1. 环境准备

首先,确保已经安装并配置好 kubectl。

2. 安装 kubectl-ai

从发布页面为目标机器下载最新版本的 kubectl-ai。解压发布包,使二进制文件可执行,并将其移动到 $PATH 中的目录。

1
2
3
tar -zxvf kubectl-ai_Darwin_arm64.tar.gz
chmod a+x kubectl-ai
sudo mv kubectl-ai /usr/local/bin/

3. 使用不同的 AI 模型

使用 Gemini(默认)

将你的 Gemini API 密钥设置为环境变量。如果没有密钥,可以从 Google AI Studio 获取。

1
2
export GEMINI_API_KEY=your_api_key_here
kubectl-ai

使用不同的 Gemini 模型:

1
kubectl-ai --model gemini-2.5-pro-exp-03-25

使用 2.5 flash(更快)模型:

1
kubectl-ai --quiet --model gemini-2.5-flash-preview-04-17 "check logs for nginx app in hello namespace"

使用本地运行的 AI 模型(ollama 或 llamacpp)

以使用 Google 的 gemma3 模型和 ollama 为例:

1
2
3
4
5
6
7
8
# 假设 ollama 已经运行,并且你已经拉取了 gemma 模型之一
# ollama pull gemma3:12b-it-qat

# 启用工具使用垫片,因为模型需要特殊提示来启用工具调用
kubectl-ai --llm-provider ollama --model gemma3:12b-it-qat --enable-tool-use-shim

# 可以使用 `models` 命令发现本地可用的模型
>> models

使用 Grok

设置 X.AI 的 API 密钥:

1
2
export GROK_API_KEY=your_xai_api_key_here
kubectl-ai --llm-provider=grok --model=grok-3-beta

使用 Azure OpenAI

设置 OpenAI API 密钥并指定提供程序:

1
2
3
4
5
6
export AZURE_OPENAI_API_KEY=your_azure_openai_api_key_here
export AZURE_OPENAI_ENDPOINT=https://your_azure_openai_endpoint_here
kubectl-ai --llm-provider=azopenai --model=your_azure_openai_deployment_name_here
# 或者
az login
kubectl-ai --llm-provider=openai://your_azure_openai_endpoint_here --model=your_azure_openai_deployment_name_here

使用 OpenAI

设置 OpenAI API 密钥并指定提供程序:

1
2
export OPENAI_API_KEY=your_openai_api_key_here
kubectl-ai --llm-provider=openai --model=gpt-4.1

使用 OpenAI 兼容 API

例如,使用阿里云的 qwen-xxx 模块:

1
2
3
export OPENAI_API_KEY=your_openai_api_key_here
export OPENAI_ENDPOINT=https://dashscope.aliyuncs.com/compatible-mode/v1
kubectl-ai --llm-provider=openai --model=qwen-plus

4. 运行模式

交互式运行

1
kubectl-ai

在交互式模式下,你可以与 kubectl-ai 进行聊天,按顺序提出多个问题,同时保持之前交互的上下文。只需输入查询并按 Enter 键即可接收响应。要退出交互式 shell,输入 exit 或按 Ctrl+C。

以任务作为输入运行

1
kubectl-ai -quiet "fetch logs for nginx app in hello namespace"

与其他 Unix 命令结合使用

1
2
3
kubectl-ai < query.txt
# 或者
echo "list pods in the default namespace" | kubectl-ai

甚至可以将位置参数与标准输入结合使用。位置参数将用作标准输入内容的前缀:

1
cat error.log | kubectl-ai "explain the error"

5. 特殊关键字使用

可以使用以下特殊关键字执行特定操作:

  • model:显示当前选择的模型。
  • models:列出所有可用的模型。
  • version:显示 kubectl-ai 的版本。
  • reset:清除对话上下文。
  • clear:清除终端屏幕。
  • exitquit:终止交互式 shell(Ctrl+C 也有效)。

6. 作为 kubectl 插件调用

通过 kubectl 插件接口使用:

1
kubectl ai

只要 kubectl-ai 在你的 $PATH 中,kubectl 就会找到它。有关插件的更多信息,请参阅:https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/

核心代码

以下是一些使用 kubectl-ai 的示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 获取默认命名空间中 Pod 的信息
kubectl-ai -quiet "show me all pods in the default namespace"

# 创建一个新的部署
kubectl-ai -quiet "create a deployment named nginx with 3 replicas using the nginx:latest image"

# 解决问题
kubectl-ai -quiet "double the capacity for the nginx app"

# 使用 Azure OpenAI 代替 Gemini
kubectl-ai --llm-provider=azopenai --model=your_azure_openai_deployment_name_here -quiet "scale the nginx deployment to 5 replicas"

# 使用 OpenAI 代替 Gemini
kubectl-ai --llm-provider=openai --model=gpt-4.1 -quiet "scale the nginx deployment to 5 replicas"

最佳实践

  • 在使用不同的 AI 模型时,根据具体需求选择合适的模型。例如,如果需要更快的响应速度,可以选择 Gemini 2.5 flash 模型。
  • 在交互式模式下,充分利用上下文保持功能,逐步深入解决问题。
  • 结合其他 Unix 命令使用 kubectl-ai,提高工作效率。

常见问题

  • API 密钥问题:确保正确设置了相应 AI 模型的 API 密钥,否则会导致无法正常使用。
  • 模型不可用:如果使用本地模型,确保 ollama 或 llama.cpp 已经正确运行,并且模型已经拉取。
  • 插件调用问题:如果 kubectl 无法找到 kubectl-ai 插件,检查 kubectl-ai 是否在 $PATH 中。