在 Kubernetes 上运行任意 AI 代理:一步一步

发布: (2025年12月14日 GMT+8 07:35)
4 min read
原文: Dev.to

Source: Dev.to

前置条件

要跟随本指南操作,您需要:

  • 一个已安装 kagent 的 Kubernetes 集群。如果您尚未安装 kagent,请参阅此处的操作指南。
  • Python 3.10 或更高版本。
  • 已安装 Docker Desktop(或 Docker 引擎)以构建容器镜像。

什么是 BYO 代理

BYO(Bring Your Own,自己带来)意味着您可以使用 kagent 支持的任何提供商创建代理。无论您是使用 CrewAI、ADK、LangChain 或其他框架用 Python 编写代理,kagent 都可以导入它。唯一额外的步骤是将代理容器化,这在 Dockerfile 中非常直接(请参见 创建代理 部分的示例)。

构建代理

以下章节将带您使用代理开发工具包(ADK)构建自定义代理,并使用现有代理作为参考。

创建代理

  1. 安装 Google ADK 库(如有需要请使用 pip3):

    pip install google-adk
  2. 脚手架一个新的 ADK 代理:

    adk create NAME_OF_YOUR_AGENT

    这将在 adk/NAME_OF_YOUR_AGENT 目录下创建一个入门模板。

  3. 运行脚手架生成的代理以验证其工作正常:

    cd adk/NAME_OF_YOUR_AGENT && adk run NAME_OF_YOUR_AGENT

    ADK 脚手架输出

使用已有代理

为简化流程,您可以从预构建的代理仓库开始。

  1. 克隆示例仓库并进入 ADK 示例目录:

    git clone https://github.com/thenjdevopsguy/agentic-demo-code.git
    cd agentic-demo-code/adk/troubleshoot-agent
  2. 查看提供的 Dockerfile

    # STAGE 1: base image
    ARG DOCKER_REGISTRY=ghcr.io
    ARG VERSION=0.7.4
    FROM $DOCKER_REGISTRY/kagent-dev/kagent/kagent-adk:$VERSION
    
    WORKDIR /app
    
    COPY troubleshootagent/ troubleshootagent/
    COPY pyproject.toml pyproject.toml
    COPY uv.lock uv.lock
    COPY how-it-works.md how-it-works.md
    
    RUN uv sync --locked --refresh
    
    CMD ["troubleshootagent"]
  3. 构建容器镜像:

    docker build . -t troubleshootagent:latest

    如果出现关于 uv sync 的错误,请先生成锁文件:

    uv lock

    构建成功后您会看到类似的输出:

    Docker 构建成功

  4. 将镜像推送到镜像仓库(Docker Hub 免费;示例使用 GitHub Container Registry):

    docker tag troubleshootagent:latest adminturneddevops/troubleshootagent:latest
    docker push adminturneddevops/troubleshootagent:latest

    如果您不想推送镜像,也可以在下一步中直接引用 adminturneddevops/troubleshootagent:latest,因为该镜像是公开的。

在 Kubernetes 上部署代理

镜像准备好后,使用 kagent 的 CRD 以声明式方式部署它。

  1. 设置大语言模型(LLM)凭证(示例使用 Google Gemini;请根据需要替换为您的提供商):

    export GOOGLE_API_KEY=YOUR_API_KEY_HERE
  2. 创建 Kubernetes Secret 来存储 API 密钥:

    apiVersion: v1
    kind: Secret
    metadata:
      name: kagent-google
      namespace: kagent
    type: Opaque
    stringData:
      GOOGLE_API_KEY: $GOOGLE_API_KEY

    应用 Secret:

    kubectl apply -f-
  3. 定义代理自定义资源:

    apiVersion: kagent.dev/v1alpha2
    kind: Agent
    metadata:
      name: troubleshoot-agent
      namespace: kagent
    spec:
      description: Platform Engineering troubleshoot expert.
      type: BYO
      byo:
        deployment:
          image: adminturneddevops/troubleshootagent:latest
          env:
            - name: GOOGLE_API_KEY
              valueFrom:
                secretKeyRef:
                  name: kagent-google
                  key: GOOGLE_API_KEY

    应用代理清单:

    kubectl apply -f-
  4. 验证代理 Pod 是否在 kagent 命名空间中运行:

    kubectl get pods -n kagent

    您应该会看到类似的 Pod:

    代理 Pod 状态

现在,代理已经部署完成,可在 kagent 中使用。

Back to Blog

相关文章

阅读更多 »