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
相关产品推荐
相关产品推荐

