AKS部署Nginx应用遇CrashLoopBackOff错误求助
排查AKS中Nginx容器CrashLoopBackOff问题
我正在学习Azure Kubernetes Service(AKS),尝试将一个仅包含单个HTML文件的简单应用部署到AKS,已将镜像上传至Azure Container Registry(ACR)。
相关文件
HTML文件(index.html)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Simple</title> </head> <body style="background-color:rgb(212, 240, 234);"> <h1>Simple Application</h1> </body> </html>
Dockerfile
FROM nginx COPY index.html /usr/share/nginx/html
Deployment与Service配置文件(app.yaml)
apiVersion: apps/v1 kind: Deployment metadata: name: app1-nginx-deployment labels: app: app1-nginx spec: replicas: 1 selector: matchLabels: app: app1-nginx template: metadata: labels: app: app1-nginx spec: containers: - name: app1-nginx image: simplecc24.azurecr.io/simple:latest imagePullPolicy: Always ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: app1-nginx-loadbalancer-service labels: app: app1-nginx spec: type: LoadBalancer selector: app: app1-nginx ports: - port: 80 targetPort: 80
当前状态
节点状态(正常)
➜ simple kubectl get no NAME STATUS ROLES AGE VERSION aks-agentpool-42782457-vmss000000 Ready agent 8m38s v1.23.8 aks-agentpool-42782457-vmss000001 Ready agent 8m52s v1.23.8
Pod状态(CrashLoopBackOff)
➜ simple kubectl get po NAME READY STATUS RESTARTS AGE app1-nginx-deployment-7576f5c78b-j59cf 0/1 CrashLoopBackOff 1 (13s ago) 20s
Pod事件信息
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 7m59s default-scheduler Successfully assigned default/app1-nginx-deployment-7576f5c78b-j59cf to aks-agentpool-42782457-vmss000001 Normal Pulled 7m54s kubelet Successfully pulled image "simplecc24.azurecr.io/simple" in 4.199038838s Normal Pulled 7m52s kubelet Successfully pulled image "simplecc24.azurecr.io/simple" in 146.207115ms Normal Pulled 7m37s kubelet Successfully pulled image "simplecc24.azurecr.io/simple" in 238.000761ms Normal Created 7m10s (x4 over 7m54s) kubelet Created container app1-nginx Normal Pulled 7m10s kubelet Successfully pulled image "simplecc24.azurecr.io/simple" in 157.27582ms Normal Started 7m9s (x4 over 7m54s) kubelet Started container app1-nginx Normal Pulling 6m29s (x5 over 7m58s) kubelet Pulling image "simplecc24.azurecr.io/simple" Normal Pulled 6m29s kubelet Successfully pulled image "simplecc24.azurecr.io/simple" in 178.361528ms Warning BackOff 2m53s (x25 over 7m51s) kubelet Back-off restarting failed container
排查操作步骤
- 查看容器日志:获取Pod的容器日志,确认Nginx启动失败的具体原因
kubectl logs app1-nginx-deployment-7576f5c78b-j59cf # 查看历史崩溃容器的日志 kubectl logs app1-nginx-deployment-7576f5c78b-j59cf --previous - 本地验证镜像:在本地拉取ACR镜像并运行,确认镜像本身是否正常
# 登录ACR az acr login --name simplecc24 # 拉取镜像 docker pull simplecc24.azurecr.io/simple:latest # 本地启动容器测试 docker run -p 8080:80 simplecc24.azurecr.io/simple:latest # 访问http://localhost:8080验证,同时查看容器日志 docker logs <容器ID> - 检查文件权限:确认Nginx运行用户对静态文件目录的访问权限
# 进入镜像临时容器 docker run -it --entrypoint /bin/bash simplecc24.azurecr.io/simple:latest # 查看文件权限 ls -l /usr/share/nginx/html/index.html - 检查Pod资源配置:查看Pod是否因资源不足被终止
kubectl describe pod app1-nginx-deployment-7576f5c78b-j59cf
内容的提问来源于stack exchange,提问作者m.awais
相关产品推荐
相关产品推荐

