Minikube Ingress卡在“Scheduled for sync”状态无法访问怎么办?
核心问题根因
- 基础配置错误:你使用的官方
nginx镜像默认监听80端口,但你的Deployment、Service中配置的端口为3000,流量无法转发到Nginx进程,导致服务本身不通,Ingress控制器健康检查不通过就会一直卡在同步状态。 - Windows环境Minikube特殊限制:Windows下如果使用Docker Desktop作为Minikube驱动,
minikube ip返回的是Docker内部虚拟IP,宿主机Windows无法直接访问该IP,必须通过minikube tunnel做端口映射。
分步解决方案
第一步:修正资源配置YAML
将Deployment的containerPort和Service的targetPort改为80,修改后的完整YAML如下:
apiVersion: apps/v1 kind: Deployment metadata: name: test-deployment labels: app: test spec: replicas: 1 selector: matchLabels: app: test template: metadata: labels: app: test spec: containers: - name: test image: nginx ports: - name: client containerPort: 80 # 修正为nginx默认监听端口 --- apiVersion: v1 kind: Service metadata: name: test-service spec: selector: app: test ports: - name: client protocol: TCP port: 3000 targetPort: 80 # 修正指向容器的80端口 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: minikube-test-ifs.com http: paths: - path: / pathType: Prefix backend: service: name: test-service port: number: 3000
修正后重新下发配置:
kubectl apply -f <你的yaml文件路径>
第二步:验证基础服务连通性
先跳过Ingress直接验证Service是否可用,执行以下命令:
kubectl run tmp-test --image=nginx:alpine --rm -it -- curl http://test-service.default.svc:3000
如果返回Nginx默认欢迎页的HTML内容,说明Deployment和Service配置正常。
第三步:配置Windows端口映射
打开新的终端窗口,执行以下命令,该命令会持续运行不要关闭:
minikube tunnel
执行后根据提示输入Windows管理员权限确认,完成后Ingress会映射到本地127.0.0.1。
第四步:修正hosts配置
打开Windows的C:\Windows\System32\drivers\etc\hosts文件,新增以下内容:
127.0.0.1 minikube-test-ifs.com
保存后执行ipconfig /flushdns刷新DNS缓存。
第五步:验证Ingress状态
执行以下命令查看Ingress是否正常同步:
kubectl get ingress test-ingress
正常情况下ADDRESS字段会显示127.0.0.1,再执行kubectl describe ingress test-ingress,事件栏会出现同步成功的日志。
第六步:访问测试
打开Chrome浏览器访问http://minikube-test-ifs.com即可看到Nginx默认欢迎页。
内容的提问来源于stack exchange,提问作者KraveXL
相关产品推荐
相关产品推荐

