You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubectl Ingress超时导致Flask应用无法公网访问求助

解决Minikube中Ingress暴露Flask应用超时问题

以下是针对该问题的排查和解决步骤:

1. 清理冲突的Ingress Controller部署

你同时执行了两个Ingress-Nginx部署操作:cloud provider的yaml部署和minikube ingress addon启用,这会导致控制器冲突,是常见问题根源:

  • 删除cloud provider的部署:
kubectl delete -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.2/deploy/static/provider/cloud/deploy.yaml
  • 重启minikube的ingress addon:
minikube addons disable ingress && minikube addons enable ingress
  • 确认控制器Pod正常运行:
kubectl get pods -n ingress-nginx

确保所有Pod状态为Running。

2. 启用Minikube Tunnel暴露Ingress

Minikube虚拟机网络默认隔离,需通过tunnel命令将Ingress IP映射到主机网络:

  • 在终端执行:
minikube tunnel

保持终端窗口打开(或加--detach参数后台运行),之后再访问minikube ip返回的地址(即192.168.49.2)。

3. 验证集群内部连通性

确认服务到Pod的链路正常:

  • 启动临时测试Pod:
kubectl run -it --rm --image=curlimages/curl curl-test
  • 在Pod内访问服务:
curl hello-service:5000

如果能得到Flask响应,说明集群内部链路正常,问题出在外部访问Ingress环节;如果无响应,检查Service的selector是否匹配Pod的labels(你的配置已匹配,可通过kubectl get pods --show-labels和kubectl describe service hello-service再次确认)。

4. 检查Ingress Controller日志

查看Ingress控制器日志,排查转发错误:

kubectl logs -n ingress-nginx -l app.kubernetes.io/name=ingress-nginx

若发现连接超时、权限错误等日志,针对性处理。

5. 简化Ingress配置

你的Ingress配置中,nginx.ingress.kubernetes.io/rewrite-target: /注解多余(path已为根路径/),可移除后重新部署:
修改hello-everything.yml中的Ingress部分:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: hello-ingress
spec:
  rules:
  - http:
      paths:
      - pathType: Prefix
        path: /  
        backend:
          service:
            name: hello-service
            port: 
              number: 5000

重新部署:

kubectl apply -f hello-everything.yml

内容的提问来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 06:00:07