kubernetes - 无法通过 minikube 隧道访问应用程序
问题描述
我目前正在使用 minikube,并且minikube tunnel
由于服务类型为LoadBalancer
.
当我执行时,我能够获得外部 IP minikube tunnel
,但是,当我尝试在浏览器上检查它时,它不起作用。我也尝试过 Postman 和 curl,它们都不起作用。
除此之外,如果我进入 pod,我可以使用 curl 并且它确实有效。此外,我执行kubectl port-forward
并能够通过localhost访问我的应用程序。
有没有人知道为什么我无法访问我的应用程序,即使一切似乎都运行正常?
解决方案
您的服务可能绑定到本地主机。Minikube 在绑定到外部 IP $(minikube ip) 的 VM 或 docker(取决于您使用的驱动程序)中启动集群。
当您运行 minikube 隧道时,您将从 minikube 集群外部 IP 隧道传输到负载均衡器的内部 IP,Kubernete 中的 LB 服务外部 IP 从“待定”变为实际的内部 IP,这样的事情应该可以工作:
curl -H 'Host: localhost' -v $(minikube ip)
但是,它不在浏览器中,因为在上面的命令中,您将请求发送到 minikube 的 IP,而不是 localhost。我为此做的是一个像这样的ssh隧道:
ssh -i $(minikube ssh-key) docker@$(minikube ip) -L 8008:localhost:80
这会将 minikube 集群中端口 80 中的 LB 侦听器映射到 localhost 中的 8008。服务的外部 IP 仍然挂起,但它可以工作,因为 Kube 控制器仍然可以找到它。如果要映射端口 80,则需要添加 sudo。
推荐阅读
- iis - IIS:有条件地设置和提供 gzip 和 brotli 压缩
- odoo - Odoo 13 - 同一模块中的多个模型和菜单
- html - 无法让 flexbox 在中心垂直对齐我的内容
- python - 如何在不关闭 webdriver 的情况下通过 chrome 扩展更改 webdriver 代理?
- android - 从 Android 中的视频(在原始文件夹中)提取音频时出错。错误:没有这样的文件或目录
- javascript - 防止 Vue 中的 DOM 刷新
- rust - 如何从实现该特征的结构迭代器中收集特征向量
- arrays - Firebase 和 swiftUI,监听实时更新奇怪的行为怪异
- java - 不使用注释的未经检查或不安全的操作
- mysql - SQL查询:编辑编辑SET FOREIGN_KEY_CHECKS = ON; MySQL 说:文档 #2014 - 命令不同步;你现在不能运行这个命令