Docker Desktop上无法通过Ingress访问Kubernetes应用,求排查
问题排查与修复方案
核心问题1:重复Service导致资源冲突
你定义了两个同名的Service(angular-app-product),Kubernetes中同名资源会被后创建的覆盖,因此原本的NodePort Service直接被LoadBalancer Service替换,端口映射逻辑混乱——完全没必要同时定义两个类型重复的Service。
核心问题2:域名到应用的路由缺失
你把hello-test.internal指向127.0.0.1,但没有任何组件将这个域名的请求转发到你的应用Service上。在Kubernetes环境中,要实现域名访问应用,必须配置Ingress来完成路由映射。
具体修复步骤
1. 删除重复的Service配置
保留其中一个Service即可,比如保留LoadBalancer类型的:
apiVersion: v1 kind: Service metadata: name: angular-app-product spec: selector: app: angular-app-product ports: - name: http port: 80 targetPort: 80 type: LoadBalancer
如果习惯用NodePort,保留对应的配置也可以,按需选择。
2. 添加Ingress配置
创建Ingress资源,将hello-test.internal域名的请求转发到你的Service:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: hello-test-ingress spec: rules: - host: hello-test.internal http: paths: - path: / pathType: Prefix backend: service: name: angular-app-product port: number: 80
注意:需要先在Docker Desktop的Kubernetes设置里开启Ingress Controller(默认可能未启用)。
3. 应用配置并验证
- 执行命令更新配置:
kubectl apply -f 你的配置文件.yaml - 查看Ingress状态:
kubectl get ingress,确认ADDRESS字段有值(一般是localhost或Docker分配的IP) - 再次访问
http://hello-test.internal,即可正常访问应用。
内容的提问来源于stack exchange,提问作者user3859651
相关产品推荐
相关产品推荐

