Kubernetes Admin应用无法访问求助(含Ingress配置问题)
问题原因及解决方案
核心问题
Service的Endpoints显示<none>,说明Service没有匹配到任何处于Running且Ready状态的Pod,根源在于你配置的容器端口与镜像实际监听的端口不匹配,导致Pod无法正常就绪。
具体分析
- 镜像端口不兼容:你使用的
dockercloud/hello-world镜像默认监听80端口,该镜像并不支持通过LISTEN_PORT环境变量修改服务端口。你强行设置LISTEN_PORT=3000后,容器内的服务无法启动,Pod会进入CrashLoopBackOff或Error状态,无法被Service识别。 - Pod状态异常:执行
kubectl get pods可查看Pod状态,大概率会显示异常;通过kubectl logs <pod-name>能看到服务启动失败的日志。
修复步骤
修正Deployment配置:删除无效的
LISTEN_PORT环境变量,将容器端口改回80:apiVersion: apps/v1 kind: Deployment metadata: name: admin-deployment spec: selector: matchLabels: app: admin template: metadata: labels: app: admin spec: containers: - name: admin image: dockercloud/hello-world resources: requests: memory: "32Mi" cpu: "100m" limits: memory: "128Mi" cpu: "500m" ports: - containerPort: 80修正Service配置:将
targetPort改为镜像实际监听的80端口:apiVersion: v1 kind: Service metadata: name: admin-service spec: type: ClusterIP selector: app: admin ports: - port: 4444 targetPort: 80重新应用配置:
kubectl apply -f <你的配置文件名>.yaml验证修复:
- 执行
kubectl get pods确认Pod处于Running状态 - 执行
kubectl describe service admin-service,此时Endpoints会显示Pod的IP地址 - 访问
http://localhost:4444或通过Ingress访问,即可正常响应
- 执行
补充说明
Ingress无法工作是因为后端Service没有可用的Pod端点,解决上述Pod和Service的匹配问题后,Ingress即可正常转发请求。
内容的提问来源于stack exchange,提问作者DDave
相关产品推荐
相关产品推荐

