文章总结: kubectl-ai是一个Kubernetes智能助手,可将用户意图转化为精确的K8s操作,支持Gemini、OpenAI等多种AI模型。文章介绍了安装方法、使用方式、配置选项以及MCP模式,并提供基准测试结果。该工具简化了Kubernetes管理,提高了运维效率,适合云原生环境下的自动化操作。 综合评分: 88 文章分类: 云安全,安全工具,AI安全,应用安全,解决方案
kubectl-ai——k8s的智能助手
原创
一个人挺好
一个人挺好zhy
2025年9月9日 21:31 贵州
kubectl-ai作为一个智能界面,将用户意图转化为精确的Kubernetes操作,使Kubernetes管理更容易访问和高效。
项目地址:https://github.com/GoogleCloudPlatform/kubectl-ai
快速启动
首先,确保kubectl已安装并配置。
安装
快速安装(仅限Linux MacOS)
curl -sSL https://raw.githubusercontent.com/GoogleCloudPlatform/kubectl-ai/main/install.sh | bash
其他安装方法
手动安装(Linux、MacOS和Windows)
- 从目标计算机的版本页面下载最新版本。
- 解压缩发行版,使二进制文件可执行,并将其移动到$PATH中的一个目录(如下所示)。
tar -zxvf kubectl-ai_Darwin_arm64.tar.gz chmod a+x kubectl-ai sudo mv kubectl-ai /usr/local/bin/
使用Krew安装(Linux/macOS/Windows)
首先,你需要安装krew,请参考krew文档了解更多细节,然后你可以安装krew
kubectl krew install ai
现在你可以像这样调用kubectl-ai作为kubectl插件:kubectl ai。
在NixOS上安装
在NixOS上安装kubectl-ai有多种方法。对于永久安装,请将以下内容添加到您的NixOS-Configuration中:
environment.systemPackages=withpkgs;[kubectl-ai];
对于临时安装,您可以使用以下命令:
nix-shell -p kubectl-ai
使用
kubectl-ai支持来自gemini,vertexai,azopenai,openai,grok,bedrock和本地LLM提供商(如ollama和llama.cpp)的AI模型。
使用Gemini(默认)
将Gemini API密钥设置为环境变量。如果您没有密钥,请从Google AI Studio获取。
export GEMINI_API_KEY=your_api_key_here kubectl-ai# Use different gemini modelkubectl-ai --model gemini-2.5-pro-exp-03-25# Use 2.5 flash (faster) modelkubectl-ai --quiet --model gemini-2.5-flash-preview-04-17 "check logs for nginx app in hello namespace"
使用其他AI模型
使用本地运行的AI模型(ollama或llama.cpp)
您可以在本地运行的AI模型中使用kubectl-ai。kubectl-ai支持ollama和llama.cpp使用本地运行的AI模型。
此外,modelserving目录提供了工具和说明,用于在本地或Kubernetes集群上部署您自己的基于llama.cpp的LLM服务端点。这允许您直接在环境中托管Gemma等模型。
使用Google的gemma3模型与ollama的示例:
# assuming ollama is already running and you have pulled one of the gemma models# ollama pull gemma3:12b-it-qat# if your ollama server is at remote, use OLLAMA_HOST variable to specify the host# export OLLAMA_HOST=http://192.168.1.3:11434/# enable-tool-use-shim because models require special prompting to enable tool callingkubectl-ai --llm-provider ollama --model gemma3:12b-it-qat --enable-tool-use-shim# you can use `models` command to discover the locally available models>> models
使用Grok
您可以通过设置您的X.AI API密钥来使用X.AI的Grok模型:
export GROK_API_KEY=your_xai_api_key_here kubectl-ai --llm-provider=grok --model=grok-3-beta
使用AWS Bedrock
您可以将AWS Bedrock Claude模型与您的AWS凭据一起使用:
# Configure AWS credentials using AWS SSOaws sso login --profile your-profile-name# Or use other AWS credential methods (IAM roles, environment variables, etc.)# Use Claude 4 Sonnet (default)kubectl-ai --llm-provider=bedrock --model=us.anthropic.claude-sonnet-4-20250514-v1:0# Use Claude 3.7 Sonnetkubectl-ai --llm-provider=bedrock --model=us.anthropic.claude-3-7-sonnet-20250219-v1:0# Override model via environment variableexport BEDROCK_MODEL=us.anthropic.claude-sonnet-4-20250514-v1:0 kubectl-ai --llm-provider=bedrock
AWS Bedrock使用标准AWS SDK凭据链,支持:
- AWS SSO配置文件
- IAM角色(适用于EC2/ECS/Lambda)
- 环境变量(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY)
- AWS CLI配置文件
使用Azure OpenAI
您还可以通过设置OpenAI API密钥并指定提供程序来使用Azure OpenAI部署:
export AZURE_OPENAI_API_KEY=your_azure_openai_api_key_hereexport AZURE_OPENAI_ENDPOINT=https://your_azure_openai_endpoint_here kubectl-ai --llm-provider=azopenai --model=your_azure_openai_deployment_name_here# oraz login kubectl-ai --llm-provider=openai://your_azure_openai_endpoint_here --model=your_azure_openai_deployment_name_here
使用OpenAI
您还可以通过设置OpenAI API密钥并指定提供程序来使用OpenAI模型:
export OPENAI_API_KEY=your_openai_api_key_here kubectl-ai --llm-provider=openai --model=gpt-4.1
使用OpenAI兼容的API
例如,您可以使用阿里云qwen-xxx模型如下
export OPENAI_API_KEY=your_openai_api_key_hereexport OPENAI_ENDPOINT=https://dashscope.aliyuncs.com/compatible-mode/v1 kubectl-ai --llm-provider=openai --model=qwen-plus
以交互方式运行:
kubectl-ai
交互模式允许您与kubectl-ai聊天,按顺序提出多个问题,同时保留之前交互的上下文。只需输入您的查询并按Enter键即可收到回复。要退出交互式shell,请键入exit或按Ctrl+C。
或者,以任务作为输入运行:
kubectl-ai --quiet "fetch logs for nginx app in hello namespace"
联合收割机与其他unix命令:
kubectl-ai < query.txt# ORecho"list pods in the default namespace"| kubectl-ai
您甚至可以将位置参数与stdin输入结合使用联合收割机。位置参数将用作stdin内容的前缀:
cat error.log | kubectl-ai "explain the error"
我们还通过opt-in支持运行之间的持久性。这允许您将会话保存到本地文件系统,并恢复它以维护以前的上下文。它甚至可以在不同的接口之间工作!
kubectl-ai --new-session # start a new sessionkubectl-ai --list-sessions # list all saved sessionskubectl-ai --resume-session 20250807-510872 # resume session 20250807-510872kubectl-ai --delete-session 20250807-510872 # delete session 20250807-510872
配置
您也可以使用YAML配置文件在kubectl-ai配置~/.config/kubectl-ai/config.yaml:
mkdir -p ~/.config/kubectl-ai/ cat <<EOF > ~/.config/kubectl-ai/config.yamlmodel: gemini-2.5-flash-preview-04-17llmProvider: geminitoolConfigPaths: ~/.config/kubectl-ai/tools.yamlEOF
验证您的配置:
kubectl-ai --quiet model
更多的配置选项
下面是一个完整的配置文件,其中包含所有可用选项及其默认值:
# LLM provider configurationllmProvider: "gemini"# Default LLM providermodel: "gemini-2.5-pro-preview-06-05"# Default modelskipVerifySSL: false # Skip SSL verification for LLM API calls# Tool and permission settingstoolConfigPaths: ["~/.config/kubectl-ai/tools.yaml"] # Custom tools configuration pathsskipPermissions: false # Skip confirmation for resource-modifying commandsenableToolUseShim: false # Enable tool use shim for certain models# MCP configurationmcpServer: false # Run in MCP server modemcpClient: false # Enable MCP client modeexternalTools: false # Discover external MCP tools (requires mcp-server)# Runtime settingsmaxIterations: 20# Maximum iterations for the agentquiet: false # Run in non-interactive moderemoveWorkdir: false # Remove temporary working directory after execution# Kubernetes configurationkubeconfig: "~/.kube/config"# Path to kubeconfig file# UI configurationuiType: "terminal"# UI mode: "terminal" or "web"uiListenAddress: "localhost:8888"# Address for HTML UI server# Prompt configurationpromptTemplateFilePath: ""# Custom prompt template fileextraPromptPaths: [] # Additional prompt template paths# Debug and trace settingstracePath: "/tmp/kubectl-ai-trace.txt"# Path to trace file
所有这些设置都可以通过以下方式配置:
- 命令行标志(例如,
--model=gemini-2.5-pro) - 配置文件(
~/.config/kubectl-ai/config.yaml) - 环境变量(例如,
GEMINI_API_KEY)
命令行标志优先于配置文件设置。
工具
kubectl-ai利用LLM使用一组强大的工具建议和执行Kubernetes操作。它带有内置工具,如kubectl和bash。
您还可以通过定义自己的自定义工具来扩展其功能。默认情况下,kubectl-ai在~/.config/kubectl-ai/tools.yaml中查找您的工具配置。
要指定工具配置文件或包含工具配置文件的目录,请用途:
./kubectl-ai --custom-tools-config=<path-to-tools-directory>"your prompt here"
有关如何配置自己的工具的更多详细信息,请访问此处。
Docker快速入门
这个项目提供了一个Docker镜像,为您提供了一个独立的环境来运行kubectl-ai,包括针对GKE集群。
在GKE上运行容器
步骤1:建立形象
使用以下命令克隆存储库并构建映像
git clone https://github.com/GoogleCloudPlatform/kubectl-ai.gitcd kubectl-ai docker build -t kubectl-ai:latest -f images/kubectl-ai/Dockerfile .
步骤2:连接到GKE集群
设置应用程序默认凭据并连接到GKE集群。
gcloud auth application-default login # If in a gcloud shell this is not necessarygcloud container clusters get-credentials <cluster-name> --zone <zone>
步骤3:运行kubectl-ai容器
下面是一个示例命令,可用于启动带有本地托管的web-ui的容器。请务必将占位符值替换为您的特定Google Cloud项目ID和位置。注意,如果你在cloudshell机器上,你不需要挂载gcloud config目录。
docker run --rm -it -p 8080:8080 -v ~/.kube:/root/.kube -v ~/.config/gcloud:/root/.config/gcloud -e GOOGLE_CLOUD_LOCATION=us-central1 -e GOOGLE_CLOUD_PROJECT=my-gcp-project kubectl-ai:latest --llm-provider vertexai --ui-listen-address 0.0.0.0:8080 --ui-type web
有关从容器映像运行的更多信息,请参见CONTAINER.md
MCP客户端模式 注意:MCP客户端模式在kubectl-ai版本v0.0.12及更高版本中可用。
kubectl-ai可以连接到外部MCP服务器,以访问除内置工具外的其他工具。
快速启动
启用MCP客户端模式:
kubectl-ai --mcp-client
配置
创建或编辑~/.config/kubectl-ai/mcp.yaml以自定义MCP服务器:
servers: # Local MCP server (stdio-based)# sequential-thinking: Advanced reasoning and step-by-step analysis - name: sequential-thinkingcommand: npxargs: - -y - "@modelcontextprotocol/server-sequential-thinking"# Remote MCP server (HTTP-based) - name: cloudflare-documentationurl: https://docs.mcp.cloudflare.com/mcp# Optional: Remote MCP server with authentication - name: custom-apiurl: https://api.example.com/mcpauth: type: "bearer"token: "${MCP_TOKEN}"
系统自动:
- 参数名称(snake_case → camelCase)
- 处理类型转换(字符串→数字/布尔值)
- 为未知服务器提供回退行为
无需额外设置-只需使用--mcp-client标志,AI将可以访问所有已配置的MCP工具。
有关MCP客户端模式的详细配置选项、故障排除和高级功能,请参阅MCP客户端文档。
有关多服务器编排和安全自动化示例,请参阅MCP客户端集成指南。
Extras
您可以为特定操作使用以下特殊关键字:
model:显示当前选择的模型。models:列出所有可用的型号。tools:列出所有可用的工具。version:显示kubectl-ai版本。reset:清除会话上下文。clear:清除终端屏幕。exit或quit:终止交互式shell(Ctrl+C也可以)。
作为kubectl plugin插件
也可以运行kubectl ai。kubectl在您的PATH中查找任何名称以kubectl-开头的可执行文件作为插件。
MCP服务器模式
kubectl-ai可以充当MCP服务器,将kubectl工具暴露给其他MCP客户端(如Claude,Cursor或VS Code)。服务器可以在两种模式下运行:
基本MCP服务器(仅限内置工具)
仅公开kubectl-ai的原生Kubernetes工具:
kubectl-ai --mcp-server
增强型MCP服务器(具有外部工具发现功能)
此外,还可以从其他MCP服务器中发现和公开工具,作为统一的界面:
kubectl-ai --mcp-server --external-tools
这创建了一个强大的工具聚合中心,其中kubectl-ai既充当:
- MCP服务器:向客户端公开kubectl工具
- MCP客户端:使用来自其他MCP服务器的工具
增强模式为AI客户端提供了对Kubernetes操作和通用工具(文件系统、Web搜索、数据库等)的访问。通过单个MCP端点。
有关详细的配置、示例和故障排除,请参阅MCP服务器文档。
k8s-bench
kubectl-ai项目包括k8s-bench-一个基准测试,用于评估不同LLM模型在kubernetes相关任务上的性能。
最新基准结果(2025年8月)
在适当的CNI环境下对相同的10任务Kubernetes基准进行综合评估:
| Model | Success | Fail | Success Rate | | — | — | — | — | | gemini-2.5-flash-preview-04-17 | 10 | 0 | 100% | | gemini-2.5-pro-preview-03-25 | 10 | 0 | 100% | | AWS Bedrock Claude 3.7 Sonnet | 10 | 0 | 100% | | AWS Bedrock Claude Sonnet 4 | 10 | 0 | 100% | | gemma-3-27b-it | 8 | 2 | 80% |
测试环境:Kind cluster v1.27.3 with Calico CNI(full NetworkPolicy support) 任务:pod、pod-mount-pod映射、pod-resources-limits、pod-network-policy、fix-crashloop、fix-image-pull、fix-service-routing、list-images-for-pod、scale-deployment、scale-down-deployment
查看原文:《kubectl-ai——k8s的智能助手》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论