4.6 KiB
4.6 KiB
Agent Manager ARM64 构建和部署指南
本文档说明如何在 ARM64 架构的 AKS 集群上构建和部署 Agent Manager 项目。
前置要求
- Docker (支持 buildx)
- kubectl (已配置连接到 AKS 集群)
- Azure CLI (已登录)
- 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
解决:
- 检查 ACR Secret 是否正确创建
- 确认 ACR 已附加到 AKS:
az aks update --name <aks-name> --resource-group <rg> --attach-acr <acr-name> - 检查镜像标签是否正确
问题 2: Pod 无法调度
症状: Pod 状态为 Pending
解决:
- 检查集群中是否有 ARM64 节点:
kubectl get nodes -l kubernetes.io/arch=arm64 - 检查节点选择器配置是否正确
- 如果节点有污点,需要配置相应的容忍度
问题 3: 构建失败
症状: docker buildx build 失败
解决:
- 确保 Docker Buildx 已正确安装和配置
- 检查网络连接(推送镜像需要)
- 确认 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- 快速构建和部署脚本