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

200 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Agent Manager ARM64 构建和部署指南
本文档说明如何在 ARM64 架构的 AKS 集群上构建和部署 Agent Manager 项目。
## 前置要求
1. **Docker** (支持 buildx)
2. **kubectl** (已配置连接到 AKS 集群)
3. **Azure CLI** (已登录)
4. **Azure Container Registry (ACR)** 访问权限
## 快速开始
### 方法 1: 使用快速构建脚本(推荐)
```bash
# 一键构建并部署
./build-and-deploy-arm64.sh
```
### 方法 2: 使用完整部署脚本
```bash
# 构建镜像并部署
./scripts/deploy-to-k8s-arm64.sh
# 或跳过构建,仅部署
./scripts/deploy-to-k8s-arm64.sh --skip-build
```
## 详细步骤
### 1. 配置 Docker Buildx
确保 Docker Buildx 已启用并配置:
```bash
# 检查 buildx
docker buildx version
# 创建 ARM64 builder(如果不存在)
docker buildx create --name arm64-builder --use --driver docker-container
docker buildx inspect --bootstrap
```
### 2. 登录 Azure Container Registry
```bash
ACR_NAME="agnettaiji"
az acr login --name ${ACR_NAME}
```
### 3. 构建 ARM64 镜像
```bash
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 节点:
```bash
# 检查节点架构
kubectl get nodes -o wide
# 查看节点标签
kubectl get nodes --show-labels | grep arch
```
部署应用:
```bash
# 创建命名空间(如果不存在)
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. 验证部署
```bash
# 查看 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 节点:
```yaml
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 以使用新镜像:
```bash
# 方法 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` - 快速构建和部署脚本