docker - 远程访问Kubernetes入口

标签 docker kubernetes ip kubernetes-ingress

我已经在CentOS 7.6的虚拟机上使用minikube设置了Kubernetes入口。
它最终在该机器上运行良好,如下所述:

Name:             my-ingress
Namespace:        default
Address:          172.17.0.2
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host        Path  Backends
  ----        ----  --------
  localhost
              /route1/?(.*)   service1 (172.18.0.4:80)
              /route2/?(.*)   service2 (172.18.0.4:80)
Annotations:  kubernetes.io/ingress.class: nginx
              nginx.ingress.kubernetes.io/rewrite-target: /$1
我按照下面的方式制作了/etc/hosts
172.17.0.2      localhost
172.17.0.2      0.0.0.0
在虚拟机上运行良好,可以通过curl localhost/route1/api/values成功访问我的API。
但是在这里我想在其他机器上访问它进行开发。我的想法是通过其他机器上的curl 192.168.2.21/route1/api/values看到相同的成功结果,而192.168.2.21带有Kubernetes的虚拟机的IP地址。但是它失败,并显示消息“来自服务器的空答复”。
我是否可以通过其他方法访问其他计算机上的入口结果?
我尝试安装local-dev-with-docker-for-mac-kubernetes,但没有帮助。
并且还看到了其他一些解决服务问题的建议,但是由于我不得不使用很多服务,因此如果我不得不避免任何端口重复,那恐怕很难管理。因此,我主要是在寻找结果解决方法Ingress。

最佳答案

您的配置将主机指定为localhost,因此仅处理了localhost的传入流量。您可以在同一台计算机上使用curl 172.17.0.2/route1/api/values对此进行验证。应该会收到相同的空回复消息。
要解决此问题,您可以省略主机设置,以便入口 Controller 将处理所有传入的HTTP流量。 https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-rules
更新
最小入口示例:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
spec:
  backend:
    serviceName: testsvc
    servicePort: 80

关于docker - 远程访问Kubernetes入口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62651025/

相关文章:

ruby - 在 GitLab CI 包构建中缓存 gem

docker - 如何在docker上做反向代理

Kubernetes 驱逐管理器驱逐控制平面 Pod 以回收临时存储

ip - 如何在 VxWorks 中验证网络设备是否具有 IP 地址

flutter - 如何在 flutter webview 中打开 localhost

javascript - 在 Node.js 中获取本地 IP 地址

docker - 在 docker 数据容器与卷中部署 Web 应用程序

docker - 在 kubernetes 集群中部署镜像获取 CrashLoopBackOff

kubernetes - GKE RBAC 角色/角色绑定(bind)以访问集群中的节点状态

kubernetes - 取消或撤消删除 kubernetes 集群中的持久卷