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

Azure AKS项目部署求助:本地Minikube正常,AKS部署失败

问题:AKS部署失败排查(本地Minikube正常)

我正在完成课程项目,需创建并部署应用,选择使用Azure AKS(有预存额度)。这套部署在本地Minikube可正常运行,但部署到AKS后无法正常工作,请求协助排查。正常配置完成后API应返回空列表,我试过将NodePort类型服务改为AKS推荐的LoadBalancer,问题依旧。


1. app-ns.yml(命名空间创建)

apiVersion: v1
kind: Namespace
metadata:
  name: pm

2. ab.yml(数据库部署)

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: postgresql-db
  labels:
    app: pm-proc
    tier: database
  namespace: pm
spec:
  serviceName: postgresql-db-service
  selector:
    matchLabels:
      component: postgresql-db
  replicas: 1
  template:
    metadata:
      labels:
        component: postgresql-db
    spec:
      containers:
        - name: postgresql-db
          image: postgres:15
          volumeMounts:
            - name: postgresql-db-disk
              mountPath: /data
          env:
            - name: POSTGRESS_DB
              value: postgres
            - name: POSTGRES_USER
              value: postgres
            - name: POSTGRES_PASSWORD
              value: postgres
            - name: PGDATA
              value: /data/pgdata
  volumeClaimTemplates:
    - metadata:
        name: postgresql-db-disk
      spec:
        accessModes: ["ReadWriteOnce"]
        resources:
          requests:
            storage: 10Gi
---
apiVersion: v1
kind: Service
metadata:
  name: postgres-db-svc
  namespace: pm
spec:
  selector:
    component: postgresql-db
  ports:
    - port: 5432
      targetPort: 5432

3. api.yml(后端部署)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-deploy
  labels:
    app: pm-proc
    tier: backend
    component: api
  namespace: pm
spec:
  selector:
    matchLabels:
      app: pm-proc
      tier: backend
  template:
    metadata:
      labels:
        app: pm-proc
        tier: backend
        component: api
    spec:
      containers:
        - name: api
          image: madzlk/backend-api:latest
          ports:
            - containerPort: 8080
          env:
            - name: DB_SERVICE_HOST
              value: $(POSTGRES_DB_SVC_SERVICE_HOST)
            - name: DB_SERVICE_PORT
              value: "5432"
            - name: DB_USER
              value: "postgres"
            - name: DB_PASSWORD
              value: "postgres"
            - name: DB_DATABASE
              value: "postgres"
  replicas: 2

---
apiVersion: v1
kind: Service
metadata:
  name: api-svc
  namespace: pm
spec:
  selector:
    app: pm-proc
    tier: backend
    component: api
  ports:
    - port: 8080
      targetPort: 8080

4. api-np-svc.yml(外部访问API服务)

apiVersion: v1
kind: Service
metadata:
  name: api-np-svc
  namespace: pm
spec:
  type: NodePort
  selector:
    app: pm-proc
    tier: backend
  ports:
    - port: 8080
      targetPort: 8080
      nodePort: 30080

排查关键点

  • 环境变量拼写错误:数据库StatefulSet里的POSTGRESS_DB多了一个S,正确应为POSTGRES_DB,该错误会导致PostgreSQL初始化失败,后端无法连接数据库。
  • StatefulSet与Service名称不匹配:StatefulSet的serviceName设置为postgresql-db-service,但实际创建的Service名称是postgres-db-svc,名称不匹配会影响StatefulSet的网络标识,导致Pod无法正确关联服务。
  • AKS存储类配置:检查AKS集群是否存在默认存储类,若没有需手动创建,否则volumeClaimTemplates无法绑定存储卷,数据库Pod会处于Pending状态。
  • 镜像拉取验证:确认AKS节点能正常拉取madzlk/backend-api:latest镜像,若镜像存于私有仓库,需配置对应的ImagePullSecret。
  • 网络策略与防火墙检查:AKS默认可能存在网络策略限制Pod间通信,需排查是否有相关规则;若使用LoadBalancer,需确认公共IP是否正常分配,以及NSG是否开放对应端口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:45:04