Docker Desktop部署正常,AKS中Angular应用仅显示NGINX默认页
Angular应用在AKS中显示NGINX默认页而非构建文件的排查方案
核心排查方向
你的Deployment配置本身没有明显问题,Docker Desktop运行正常但AKS异常,大概率是镜像一致性、拉取逻辑或权限层面的问题,按以下步骤逐一验证:
1. 确认AKS Pod使用的镜像版本
执行命令查看Pod实际拉取的镜像:
kubectl get pods -o jsonpath='{.items[*].spec.containers[*].image}'
检查输出的镜像namespace/k8sbeginner-frontend:v1是否和你本地测试的完全一致。如果存在镜像缓存问题,可在Deployment的容器配置中强制拉取:
containers: - name: k8sbeginner-frontend image: namespace/k8sbeginner-frontend:v1 imagePullPolicy: Always # 添加这一行强制每次拉取最新镜像 ports: - containerPort: 80
更新Deployment后,删除旧Pod触发重新拉取:
kubectl delete pod <你的Pod名称>
2. 直接检查AKS Pod内的文件内容
进入AKS的Pod内部:
kubectl exec -it <你的Pod名称> -- /bin/bash
查看NGINX默认静态文件目录(通常为/usr/share/nginx/html):
ls -la /usr/share/nginx/html
如果目录下只有NGINX默认的index.html,说明拉取到AKS的镜像本身就没有包含Angular构建文件,问题出在镜像推送环节。
3. 重新验证镜像构建与推送流程
- 本地重新构建镜像,确保构建过程正确打包了Angular产物:
docker build -t namespace/k8sbeginner-frontend:v1 . - 本地运行镜像再次验证:
访问docker run -p 8080:80 namespace/k8sbeginner-frontend:v1localhost:8080确认显示的是你的Angular应用。 - 重新推送到Docker Hub:
docker push namespace/k8sbeginner-frontend:v1 - 回到AKS删除旧Pod,让集群拉取最新推送的镜像。
4. 检查私有镜像的拉取权限
如果你的Docker Hub镜像是私有仓库,AKS集群需要对应的拉取凭证:
- 创建镜像拉取密钥:
kubectl create secret docker-registry regcred --docker-server=docker.io --docker-username=<你的Docker Hub用户名> --docker-password=<你的Docker Hub密码> --docker-email=<你的邮箱> - 在Deployment的Pod模板中关联密钥:
spec: template: spec: imagePullSecrets: - name: regcred # 添加这部分配置 containers: - name: k8sbeginner-frontend image: namespace/k8sbeginner-frontend:v1 ports: - containerPort: 80
5. 验证NGINX配置正确性(若自定义过配置)
如果你的Docker镜像中修改了NGINX配置,确认配置文件中静态文件根目录指向正确:
cat /etc/nginx/conf.d/default.conf
检查root字段是否为/usr/share/nginx/html(Angular构建文件默认存放目录),避免配置错误导致加载默认页。
内容的提问来源于stack exchange,提问作者Richard77
相关产品推荐
相关产品推荐

