Kubernetes AI代理

一个通过自然语言与Kubernetes集群交互的AI代理工具,简化集群管理操作。

  • by selvanayaki678
  • HCL
  • 本地部署
  • 更新于
在 GitHub 查看 selvanayaki678/k8s-ai-agent

使用说明

Kubernetes AI 代理

使用简单的问题与您的Kubernetes集群交谈!

这有什么作用?

用简单的英语询问有关Kubernetes集群的问题并获得答案。

示例:

  • “列出我的所有Pod”
  • “哪些吊舱在运行?”
  • “显示我的服务”

先决条件

在开始之前,请确保您已经:

  • AWS账户 具有凭据(访问密钥ID和秘密访问密钥)
  • 码头工人 已安装在您的计算机上
  • 地形 已安装(以创建集群)
  • kubectl 的 已安装(用于管理Kubernetes)
  • Python 3.10+ 安装
  • Git 安装

什么是MCP服务器?

MCP=模型上下文协议

这是一座让人工智能与Kubernetes对话的桥梁。没有MCP,AI不知道如何从集群中获取信息。

可以这样想: 一个帮助AI和Kubernetes相互理解的翻译器。

Strands是什么?

一个Python工具,用于连接:

  • 人工智能模型(亚马逊基岩)
  • 工具(MCP服务器)

它使构建人工智能代理变得容易!

运作原理

     YOU
      ↓
  AI Agent (Python)
      ↓
  Amazon Bedrock ↔ MCP Server
  (AI Brain)        (Kubernetes Expert)
                         ↓
                    Kubernetes Cluster

简单流程:

  1. 你问了一个问题
  2. AI Agent将其发送到亚马逊基岩(智能AI)
  3. Bedrock要求MCP服务器从Kubernetes获取信息
  4. MCP服务器读取集群并返回数据
  5. 你得到你的答案!

完整架构

graph TB
    subgraph "Setup Phase"
        A[1. Configure AWS Credentials] --> B[2. Create EKS Cluster<br/>using Terraform]
        B --> C[3. Build MCP Server<br/>Docker Image]
        C --> D[4. Push to Docker Hub]
        D --> E[5. Deploy MCP Server<br/>to Kubernetes]
    end
    
    subgraph "Kubernetes Cluster"
        E --> F[MCP Server Pod<br/>with RBAC Permissions]
        F --> G[LoadBalancer Service<br/>Port 8080]
        F --> H[Kubernetes API<br/>Reads cluster info]
    end
    
    subgraph "AI Agent Setup"
        G --> I[6. Copy LoadBalancer URL]
        I --> J[7. Update k8s-ai-agent.py]
        J --> K[8. Install Python Packages]
        K --> L[9. Run AI Agent]
    end
    
    subgraph "Runtime Flow"
        M[You Ask Question:<br/>'List all pods'] --> N[Python AI Agent]
        N --> O[Amazon Bedrock AI<br/>Claude Model]
        O --> P[MCP Server<br/>via LoadBalancer]
        P --> H
        H --> Q[Returns Cluster Data]
        Q --> P
        P --> O
        O --> N
        N --> R[You Get Answer:<br/>Pod list with status]
    end
    
    style A fill:#e1f5ff
    style B fill:#e1f5ff
    style D fill:#ffe1e1
    style F fill:#fff4e1
    style G fill:#ffe1ff
    style O fill:#e1ffe1
    style R fill:#90EE90

安装指南

步骤1:配置AWS

aws configure

您将被要求:

  • AWS访问密钥ID:您的AWS访问密钥
  • AWS秘密访问密钥:您的AWS密钥
  • 默认区域:选择一个地区(例如。, us-east-1)
  • 默认输出格式:按Enter键(默认值很好)

步骤2:创建EKS集群

cd EKS-cluster
terraform init
terraform plan --var-file=vpc-eks-cluster.tfvars
terraform apply --var-file=vpc-eks-cluster.tfvars

⏱️ 这大约需要10-15分钟。Terraform将在AWS上创建Kubernetes集群。

步骤3:将MCP服务器部署到Kubernetes

3.1克隆MCP服务器存储库

git clone https://github.com/containers/kubernetes-mcp-server.git
cd kubernetes-mcp-server

3.2构建和推送Docker镜像

docker build -t your-username/k8s-mcp-server:v1 .
docker push your-username/k8s-mcp-server:v1

重要提示: 替换 your-username 使用您的Docker Hub用户名。

3.3更新部署文件

打开 deployment.yaml 并更新图像名称:

image: your-username/k8s-mcp-server:v1  # Change this to your Docker Hub username

3.4部署到Kubernetes

kubectl apply -f deployment.yaml

这将创建:

  • 命名空间: mcp-system (MCP服务器的单独空间)
  • 服务账户: mcp-server-sa (服务器的身份)
  • 集群角色:读/写Pod、服务、部署的权限
  • 部署:运行MCP服务器pod
  • 负载均衡器:使服务器可从外部访问

3.5验证部署

kubectl get svc -n mcp-system
kubectl get pods -n mcp-system

等待吊舱状态显示 Running LoadBalancer显示 EXTERNAL-IP.

输出示例:

NAME         TYPE           EXTERNAL-IP                                                              PORT(S)
mcp-server   LoadBalancer   a1b2c3d4e5f6g7h8i9j0.us-east-1.elb.amazonaws.com                       8080:31234/TCP

步骤4:设置Python AI代理

4.1复制负载平衡器URL

复制 EXTERNAL-IP 从上一步开始。

4.2更新代理配置

打开 ai-agent/k8s-ai-agent.py 并更新:

LOADBALANCER_URL = "http://YOUR-EXTERNAL-IP-HERE:8080/sse"

例子:

LOADBALANCER_URL = "http://a1b2c3d4e5f6g7h8i9j0.us-east-1.elb.amazonaws.com:8080/sse"

4.3安装Python包

cd ai-agent
uv venv
source .venv/Scripts/activate  # On Windows
# OR
source .venv/bin/activate      # On Mac/Linux

uv pip install -r requirements.txt

步骤5:运行AI代理

python k8s-ai-agent.py

对话示例

You: List all pods

Agent: Here are your pods in the cluster:
- mcp-server-5f8f798d8d-94bjd (Running)
- nginx-deployment-7d48b9c8f-xk2l9 (Running)
- redis-master-0 (Running)

You: Show me services

Agent: Here are your services:
- mcp-server (LoadBalancer, port 8080)
- kubernetes (ClusterIP, port 443)
- nginx-service (NodePort, port 80)

You: exit
Goodbye!

项目结构

k8s-ai-project/
├── EKS-cluster/         # Terraform files to create Kubernetes cluster
├── k8s-mcp-server/      # MCP Server deployment files
│   └── deployment.yaml  # Kubernetes resources
└── ai-agent/            # Python AI agent
    ├── k8s-ai-agent.py  # Main agent script
    └── requirements.txt # Python dependencies

故障排除

问题:“连接到MCP服务器失败”

解决方案:

# Check if MCP Server pod is running
kubectl get pods -n mcp-system

# Check pod logs for errors
kubectl logs -n mcp-system -l app=mcp-server

# Verify LoadBalancer has external IP
kubectl get svc -n mcp-system

问题:“找不到AWS凭据”

解决方案:

# Reconfigure AWS credentials
aws configure

# Verify credentials
aws sts get-caller-identity

问题:“端口已在使用中”

解决方案: MCP服务器使用端口8080。确保没有其他应用程序正在使用此端口。

问题:MCP服务器出现“权限被拒绝”错误

解决方案: 检查ClusterRole是否具有正确的权限:

kubectl describe clusterrole mcp-server-role

清理

要删除所有内容并避免AWS收费:

# Delete MCP Server
kubectl delete -f deployment.yaml

# Delete EKS Cluster
cd EKS-cluster
terraform destroy --var-file=vpc-eks-cluster.tfvars

你学到了什么

✅ 如何在AWS上创建Kubernetes集群
✅ 如何将应用程序部署到Kubernetes
✅ 什么是MCP服务器及其工作原理
✅ 如何构建一个与Kubernetes对话的AI代理
✅ 人工智能模型如何与云基础设施交互

关键概念解释

为什么我们需要所有这些工具?

  • 地形:自动创建Kubernetes集群(而不是在AWS控制台中单击)
  • 码头工人:打包MCP服务器,使其可以在任何地方运行
  • kubectl 的:用于管理Kubernetes的命令行工具
  • MCP服务器:人工智能和Kubernetes之间的桥梁
  • 缕:使人工智能模型与工具的连接变得容易
  • 亚马逊基石:理解你问题的人工智能大脑

由...制作❤️ - 问你的Kubernetes集群任何问题!

有问题吗? 在GitHub上发布一个问题!