AI驱动的Kubernetes MCP服务器
作者:微信文章AI驱动的Kubernetes MCP服务器
AI Kubernetes MCP
随着MCP服务器的热度不断攀升,我的好奇心也与日俱增。当Google宣布Kubectl AI时,我就知道必须尝试创建自己的Kubernetes MCP服务器,这个项目由此诞生。
本文将提供创建AI驱动的Kubernetes MCP服务器的必要步骤。虽然教程易于跟随且耗时不多,但我计划未来通过自动化来改进它。
这个项目既有趣又富有挑战性,希望您也能享受这个过程。
所有可通过kubectl ai执行的操作都包含在mcp-schema.json文件中,稍后克隆下面的仓库时会包含该文件。
GitHub仓库
让我们开始吧!
第一步:创建安全组
登录AWS控制台,创建安全组(mcp-server-sg),并设置以下入站规则:
自定义TCP 3000-32767 (Kubernetes NodePort范围)
SSH 22
HTTP 80
安全组配置第二步:启动EC2实例
现在我们需要创建具有以下规格的EC2实例:
Ubuntu
T2.Medium
30 GiB
创建密钥对(k8-mcp-server)
附加我们在第一步创建的安全组(mcp-server-sg)
使用以下引导脚本安装系统更新、Python和Docker。(这需要放在EC2创建界面的高级部分)
#!/bin/bash
set -e
# 更新系统并安装必要组件
apt-get update -y && apt-get upgrade -y
apt-get install -y curl wget git ca-certificates gnupg lsb-release apt-transport-https software-properties-common
# ---- Python ----
apt-get install -y python3 python3-pip
update-alternatives --install /usr/bin/python python /usr/bin/python3 1
update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
# ---- Docker ----
apt-get install -y docker.io
systemctl enable docker
systemctl start docker
第三步:配置EC2实例
为了本项目,我将通过EC2 Instance Connect连接。
首先需要将ubuntu用户添加到docker组,这样我们就可以不使用sudo运行Docker命令。
sudo usermod -aG docker ubuntu
sudo reboot
等待实例重新启动后重新登录。现在我们可以开始安装其他组件,首先是kubectl。
安装kubectl:
curl -LO https://dl.k8s.io/release/v1.30.1/bin/linux/amd64/kubectl
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
kubectl version --client
安装minikube:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
chmod +x minikube-linux-amd64
sudo mv minikube-linux-amd64 /usr/local/bin/minikube
minikube version
克隆项目仓库:
git clone https://github.com/samcolon/k8s_mcp_server_prod.git
克隆Google kubectl ai仓库:
cd ~
git clone https://github.com/GoogleCloudPlatform/kubectl-ai.git
安装Go:
wget https://go.dev/dl/go1.22.3.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.3.linux-amd64.tar.gz
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> ~/.bashrc
source ~/.bashrc
go version
安装并构建kubectl ai:
cd ~/kubectl-ai
go build -o kubectl-ai ./cmd
sudo mv kubectl-ai /usr/local/bin/
kubectl ai --help
启动minikube:
minikube start --driver=docker
在应用所有Kubernetes清单之前,我们需要使用Gemini API密钥创建一个Kubernetes secret。您可以通过访问https://aistudio.google.com/并在右上角点击Get API key来创建自己的API密钥。
创建API密钥后记下来,以便添加到下面的Kubernetes secret命令中。
创建Kubernetes secret的命令:
kubectl create secret generic gemini-api-key \
--from-literal=GEMINI_API_KEY=your-api-key-here
请确保创建Kubernetes secret,否则pod将无法创建。
现在我们需要将Gemini API密钥导出到EC2 shell中。可以通过执行以下命令完成:
echo 'export GEMINI_API_KEY=your-api-key-here' >> ~/.bashrc
source ~/.bashrc
接下来,进入k8s_mcp_server_prod目录。从那里我们可以部署Kubernetes清单。
kubectl apply -f mcp-deployment.yaml
kubectl apply -f mcp-service.yaml
kubectl apply -f mock-app.yaml
kubectl apply -f rbac.yaml
获取minikube IP和NodePort(记下这两个值并暂时保存)
minikube ip
kubectl get svc mcp-service
在我的例子中,我的minikube ip是192.168.49.2,NodePort是30173。
下一步是将以下内容添加到我们的kubectl-ai config.yaml中。目前这个文件不存在,我们可以用这个命令创建它:
mkdir -p ~/.kube/kubectl-ai
nano ~/.kube/kubectl-ai/config.yaml
将以下内容添加到kubectl-ai文件中,并确保在保存前输入您的minikube IP和NodePort。
***在nano中按Ctrl o,Enter,Ctrl x保存文件***
mcp:
endpoint: http://MiniKubeIP:<NodePort>/mcp-schema.json
name: mcp-server
llm:
provider: gemini
model: gemini-1.5-flash
我们可以使用minikube IP和NodePort在curl命令中测试我们的mcp-schema.json是否可访问。
curl http://minikubeIP:<NodePort>/mcp-schema.json
如果一切正确完成,您现在应该能看到位于schema中的命令列表。
这也意味着MCP服务器将能够通过kubectl ai将用户提示转换为命令。由于我们使用的是免费版本,正确的命令是kubectl ai — model gemini-1.5-flash。(使用kubectl ai仅适用于Gemini的专业版用户)
让我们测试一下:
请列出所有正在运行的pod
测试1
请将my-website-app扩展到8个pod
测试2
请列出my-website-app的所有运行pod
测试3
获取my-website-app-866949d66b-677d9的日志
测试4
可以通过mcp-schema.json文件添加更多操作。
再次感谢您阅读本指南。希望我能为您构建自己的AI驱动Kubernetes环境提供清晰的路径。这个项目融合了DevOps、LLM集成和实用的云部署,既有趣又富有挑战性。我鼓励您尝试进一步扩展它。
参考资料
k8s mcp server prod: https://github.com/samcolon/k8s_mcp_server_prod
aistudio.google.com: https://aistudio.google.com/prompts/new_chat
页:
[1]