You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure DevOps CI/CD部署应用至本地K8s集群失败排查

Kubernetes CI/CD部署失败的排查要点

1. 镜像引用一致性问题

你构建的镜像标签是$(Build.BuildId),需确认manifest.yaml里的镜像是否正确使用该标签。比如:

image: 786786786raees/email1_monitoring:$(Build.BuildId)

若manifest用固定标签(如latest)或未替换变量,会导致拉取错误镜像或部署旧版本。

2. ServiceAccount权限覆盖不全

即便创建了ServiceAccount和Role/RoleBinding,需检查Role权限是否覆盖所有部署所需资源:

  • 比如部署需要操作Deployment、Service、Pod等资源,Role规则需包含对应权限:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: conn-devops
  name: deploy-role
rules:
- apiGroups: ["apps"]
  resources: ["deployments", "replicasets"]
  verbs: ["create", "update", "patch", "get", "list", "watch", "delete"]
- apiGroups: [""]
  resources: ["pods", "services", "configmaps"]
  verbs: ["create", "update", "patch", "get", "list", "watch", "delete"]
  • 可本地用该ServiceAccount的token执行kubectl apply -f manifest.yaml -n conn-devops,验证权限是否足够。

3. 私有镜像拉取凭证缺失

若Docker Hub镜像是私有仓库,需在conn-devops命名空间创建镜像拉取密钥:

kubectl create secret docker-registry regcred --docker-server=https://index.docker.io/v1/ --docker-username=<你的Docker Hub用户名> --docker-password=<你的Docker Hub密码> --docker-email=<你的邮箱> -n conn-devops

并在Deployment的Pod模板中指定该密钥:

spec:
  template:
    spec:
      imagePullSecrets:
      - name: regcred

4. 流水线变量传递验证

添加步骤打印$(Build.BuildId),确认变量在Deploy阶段正常传递:

- script: echo "当前构建ID:$(Build.BuildId)"
  displayName: 打印构建ID

5. Manifest语法与任务参数问题

  • 移除--validate=false参数,让任务执行配置验证,排查manifest语法错误(如缩进、字段拼写错误)。
  • 本地可执行kubectl apply -f manifest.yaml --dry-run=client提前验证manifest合法性。

内容的提问来源于stack exchange,提问作者yasin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 23:34:55