Files
agent_management/ARM64_BUILD_GUIDE.md
2026-02-03 12:25:40 +00:00

4.6 KiB
Raw Permalink Blame History

Agent Manager ARM64 构建和部署指南

本文档说明如何在 ARM64 架构的 AKS 集群上构建和部署 Agent Manager 项目。

前置要求

  1. Docker (支持 buildx)
  2. kubectl (已配置连接到 AKS 集群)
  3. Azure CLI (已登录)
  4. Azure Container Registry (ACR) 访问权限

快速开始

方法 1: 使用快速构建脚本(推荐)

# 一键构建并部署
./build-and-deploy-arm64.sh

方法 2: 使用完整部署脚本

# 构建镜像并部署
./scripts/deploy-to-k8s-arm64.sh

# 或跳过构建,仅部署
./scripts/deploy-to-k8s-arm64.sh --skip-build

详细步骤

1. 配置 Docker Buildx

确保 Docker Buildx 已启用并配置:

# 检查 buildx
docker buildx version

# 创建 ARM64 builder(如果不存在)
docker buildx create --name arm64-builder --use --driver docker-container
docker buildx inspect --bootstrap

2. 登录 Azure Container Registry

ACR_NAME="agnettaiji"
az acr login --name ${ACR_NAME}

3. 构建 ARM64 镜像

ACR_NAME="agnettaiji"
IMAGE_NAME="agent-manager"
IMAGE_TAG="latest-arm64"
FULL_IMAGE_NAME="${ACR_NAME}.azurecr.io/${IMAGE_NAME}:${IMAGE_TAG}"

docker buildx build \
    --platform linux/arm64 \
    -f Dockerfile \
    -t ${FULL_IMAGE_NAME} \
    --push \
    .

4. 部署到 Kubernetes

确保 AKS 集群中有 ARM64 节点:

# 检查节点架构
kubectl get nodes -o wide

# 查看节点标签
kubectl get nodes --show-labels | grep arch

部署应用:

# 创建命名空间(如果不存在)
kubectl apply -f k8s/agent-manager-namespace.yaml

# 创建 ACR Secret(用于拉取镜像)
ACR_NAME="agnettaiji"
ACR_USERNAME=$(az acr credential show --name ${ACR_NAME} --query username -o tsv)
ACR_PASSWORD=$(az acr credential show --name ${ACR_NAME} --query passwords[0].value -o tsv)

kubectl create secret docker-registry acr-secret \
    --namespace=agent-manager \
    --docker-server=${ACR_NAME}.azurecr.io \
    --docker-username=${ACR_USERNAME} \
    --docker-password=${ACR_PASSWORD} \
    --dry-run=client -o yaml | kubectl apply -f -

# 部署应用
kubectl apply -f k8s/agent-manager-deployment.yaml
kubectl apply -f k8s/agent-manager-service.yaml

5. 验证部署

# 查看 Pod 状态
kubectl get pods -n agent-manager -o wide

# 查看 Pod 详细信息(确认调度到 ARM64 节点)
kubectl describe pod -n agent-manager -l app=agent-manager

# 查看日志
kubectl logs -n agent-manager -l app=agent-manager -f

# 查看服务
kubectl get svc -n agent-manager

配置说明

镜像配置

  • 镜像仓库: agnettaiji.azurecr.io
  • 镜像名称: agent-manager
  • ARM64 标签: latest-arm64

节点选择器

部署配置中已设置节点选择器,确保 Pod 调度到 ARM64 节点:

nodeSelector:
  kubernetes.io/arch: arm64

资源限制

默认资源配置:

  • 请求: CPU 200m, 内存 256Mi
  • 限制: CPU 500m, 内存 512Mi

可根据需要调整 k8s/agent-manager-deployment.yaml 中的资源配置。

故障排查

问题 1: 镜像拉取失败

症状: Pod 状态为 ImagePullBackOff

解决:

  1. 检查 ACR Secret 是否正确创建
  2. 确认 ACR 已附加到 AKS: az aks update --name <aks-name> --resource-group <rg> --attach-acr <acr-name>
  3. 检查镜像标签是否正确

问题 2: Pod 无法调度

症状: Pod 状态为 Pending

解决:

  1. 检查集群中是否有 ARM64 节点: kubectl get nodes -l kubernetes.io/arch=arm64
  2. 检查节点选择器配置是否正确
  3. 如果节点有污点,需要配置相应的容忍度

问题 3: 构建失败

症状: docker buildx build 失败

解决:

  1. 确保 Docker Buildx 已正确安装和配置
  2. 检查网络连接(推送镜像需要)
  3. 确认 ACR 登录状态: az acr login --name <acr-name>

更新部署

更新镜像后,需要重启 Pod 以使用新镜像:

# 方法 1: 删除 Pod(Deployment 会自动创建新的)
kubectl delete pod -n agent-manager -l app=agent-manager

# 方法 2: 滚动更新
kubectl rollout restart deployment/agent-manager -n agent-manager

# 方法 3: 更新镜像标签
kubectl set image deployment/agent-manager \
    agent-manager=agnettaiji.azurecr.io/agent-manager:latest-arm64 \
    -n agent-manager

相关文件

  • Dockerfile - Docker 镜像构建文件
  • k8s/agent-manager-deployment.yaml - Kubernetes 部署配置
  • k8s/agent-manager-service.yaml - Kubernetes 服务配置
  • scripts/deploy-to-k8s-arm64.sh - 完整部署脚本
  • build-and-deploy-arm64.sh - 快速构建和部署脚本