kubectl-ai——k8s的智能助手

admin 2025-12-22 04:23:03 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: kubectl-ai是一个Kubernetes智能助手,可将用户意图转化为精确的K8s操作,支持Gemini、OpenAI等多种AI模型。文章介绍了安装方法、使用方式、配置选项以及MCP模式,并提供基准测试结果。该工具简化了Kubernetes管理,提高了运维效率,适合云原生环境下的自动化操作。 综合评分: 88 文章分类: 云安全,安全工具,AI安全,应用安全,解决方案


cover_image

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)

  1. 从目标计算机的版本页面下载最新版本。
  2. 解压缩发行版,使二进制文件可执行,并将其移动到$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支持来自geminivertexaiazopenaiopenaigrokbedrock和本地LLM提供商(如ollamallama.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-aikubectl-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&nbsp;<&nbsp;query.txt#&nbsp;ORecho"list pods in the default namespace"|&nbsp;kubectl-ai

您甚至可以将位置参数与stdin输入结合使用联合收割机。位置参数将用作stdin内容的前缀:

cat error.log&nbsp;|&nbsp;kubectl-ai&nbsp;"explain the error"

我们还通过opt-in支持运行之间的持久性。这允许您将会话保存到本地文件系统,并恢复它以维护以前的上下文。它甚至可以在不同的接口之间工作!

kubectl-ai --new-session&nbsp;#&nbsp;start a new sessionkubectl-ai --list-sessions&nbsp;#&nbsp;list all saved sessionskubectl-ai --resume-session 20250807-510872&nbsp;#&nbsp;resume session 20250807-510872kubectl-ai --delete-session 20250807-510872&nbsp;#&nbsp;delete session 20250807-510872

配置

您也可以使用YAML配置文件在kubectl-ai配置~/.config/kubectl-ai/config.yaml

mkdir -p&nbsp;~/.config/kubectl-ai/ cat&nbsp;<<EOF&nbsp;> ~/.config/kubectl-ai/config.yamlmodel: gemini-2.5-flash-preview-04-17llmProvider: geminitoolConfigPaths: ~/.config/kubectl-ai/tools.yamlEOF

验证您的配置:

kubectl-ai --quiet model

更多的配置选项

下面是一个完整的配置文件,其中包含所有可用选项及其默认值:

#&nbsp;LLM provider configurationllmProvider:&nbsp;"gemini"#&nbsp;Default LLM providermodel:&nbsp;"gemini-2.5-pro-preview-06-05"#&nbsp;Default modelskipVerifySSL:&nbsp;false &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#&nbsp;Skip SSL verification for LLM API calls#&nbsp;Tool and permission settingstoolConfigPaths:&nbsp;["~/.config/kubectl-ai/tools.yaml"] &nbsp;#&nbsp;Custom tools configuration pathsskipPermissions:&nbsp;false &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;#&nbsp;Skip confirmation for resource-modifying commandsenableToolUseShim:&nbsp;false &nbsp; &nbsp; &nbsp; &nbsp;#&nbsp;Enable tool use shim for certain models#&nbsp;MCP configurationmcpServer:&nbsp;false &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#&nbsp;Run in MCP server modemcpClient:&nbsp;false &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#&nbsp;Enable MCP client modeexternalTools:&nbsp;false &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;#&nbsp;Discover external MCP tools (requires mcp-server)#&nbsp;Runtime settingsmaxIterations:&nbsp;20#&nbsp;Maximum iterations for the agentquiet:&nbsp;false &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;#&nbsp;Run in non-interactive moderemoveWorkdir:&nbsp;false &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;#&nbsp;Remove temporary working directory after execution#&nbsp;Kubernetes configurationkubeconfig:&nbsp;"~/.kube/config"#&nbsp;Path to kubeconfig file#&nbsp;UI configurationuiType:&nbsp;"terminal"#&nbsp;UI mode: "terminal" or "web"uiListenAddress:&nbsp;"localhost:8888"#&nbsp;Address for HTML UI server#&nbsp;Prompt configurationpromptTemplateFilePath:&nbsp;""#&nbsp;Custom prompt template fileextraPromptPaths:&nbsp;[] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#&nbsp;Additional prompt template paths#&nbsp;Debug and trace settingstracePath:&nbsp;"/tmp/kubectl-ai-trace.txt"#&nbsp;Path to trace file

所有这些设置都可以通过以下方式配置:

  1. 命令行标志(例如,--model=gemini-2.5-pro
  2. 配置文件(~/.config/kubectl-ai/config.yaml
  3. 环境变量(例如,GEMINI_API_KEY

命令行标志优先于配置文件设置。

工具

kubectl-ai利用LLM使用一组强大的工具建议和执行Kubernetes操作。它带有内置工具,如kubectlbash

您还可以通过定义自己的自定义工具来扩展其功能。默认情况下,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&nbsp;kubectl-ai docker build -t kubectl-ai:latest -f images/kubectl-ai/Dockerfile&nbsp;.

步骤2:连接到GKE集群

设置应用程序默认凭据并连接到GKE集群。

gcloud auth application-default login&nbsp;#&nbsp;If in a gcloud shell this is not necessarygcloud container clusters get-credentials&nbsp;<cluster-name>&nbsp;--zone&nbsp;<zone>

步骤3:运行kubectl-ai容器

下面是一个示例命令,可用于启动带有本地托管的web-ui的容器。请务必将占位符值替换为您的特定Google Cloud项目ID和位置。注意,如果你在cloudshell机器上,你不需要挂载gcloud config目录。

docker run --rm -it -p 8080:8080 -v&nbsp;~/.kube:/root/.kube -v&nbsp;~/.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: &nbsp;#&nbsp;Local MCP server (stdio-based)#&nbsp;sequential-thinking: Advanced reasoning and step-by-step analysis&nbsp; &nbsp;-&nbsp;name:&nbsp;sequential-thinkingcommand:&nbsp;npxargs: &nbsp; &nbsp; &nbsp; -&nbsp;-y&nbsp; &nbsp; &nbsp; &nbsp;-&nbsp;"@modelcontextprotocol/server-sequential-thinking"#&nbsp;Remote MCP server (HTTP-based)&nbsp; &nbsp;-&nbsp;name:&nbsp;cloudflare-documentationurl:&nbsp;https://docs.mcp.cloudflare.com/mcp#&nbsp;Optional: Remote MCP server with authentication&nbsp; &nbsp;-&nbsp;name:&nbsp;custom-apiurl:&nbsp;https://api.example.com/mcpauth: &nbsp; &nbsp; &nbsp;type:&nbsp;"bearer"token:&nbsp;"${MCP_TOKEN}"

系统自动:

  • 参数名称(snake_case → camelCase)
  • 处理类型转换(字符串→数字/布尔值)
  • 为未知服务器提供回退行为

无需额外设置-只需使用--mcp-client标志,AI将可以访问所有已配置的MCP工具。

有关MCP客户端模式的详细配置选项、故障排除和高级功能,请参阅MCP客户端文档。

有关多服务器编排和安全自动化示例,请参阅MCP客户端集成指南。

Extras

您可以为特定操作使用以下特殊关键字:

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

作为kubectl plugin插件

也可以运行kubectl aikubectl在您的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的智能助手》

评论:0   参与:  2