【问题标题】:Cannot curl Kubernetes service IP from the host无法从主机 curl Kubernetes 服务 IP
【发布时间】:2018-06-11 06:09:35
【问题描述】:

我遇到了与此处提到的相同的问题:Cannot access kubernetes service via outside network。我已经尝试过使用 Ingress 提到的解决方案,但没有任何成功。

我的 pod 和我的服务都已启动并运行。

我可以从 pod 中成功地卷曲任何端点,但不能从主机卷曲。

当我使用 Ingress 时,address 字段显示为空白,在尝试 curl 主机名时,它显示 Could not resolve host

我在 MacBook Pro 上的 Docker Edge 上使用 Kubernetes。

如何从主机 curl 服务端点?

【问题讨论】:

  • 您的服务类型是什么?
  • 运行 kubectl get po -o wide,你会得到你的 pod 的 ip,尝试直接 curl 到它们,现在让我看看会发生什么
  • @suren: NodePort
  • @elia:我得到以下信息: HDMACINT18:~ dghosh$ curl 10.1.0.66 。 kubectl get po -o wide curl: (55) getpeername() failed with errno 22: Invalid argument HDMACINT18:~ dghosh$ curl 10.1.0.66:9000 获得的 pod IP 之一。
  • 您是从集群内部执行此操作(您是否使用其中一个节点执行 curl)?如果是,则为 Ip 表错误

标签: docker curl kubernetes kubernetes-ingress


【解决方案1】:

首先请注意,Kubernetes 在 MacOS 上运行单独的虚拟机 运行Docker 容器和Kubernetes。重要的是要 了解您在从 MacOS 连接到某些 Kubernetes 时可能会遇到问题 资源。 TCP 连接的实现方式与在云环境中不同。 这取决于 MacOS 和 Kubernetes 堆栈所在的 VM 之间的互联配置 在跑。 (NAT、网桥、仅主机连接)

我想你选择了NodePort Service 并且在这种配置中, 你需要知道:节点的 IP 地址和 Kubernetes 开始监听的端口 传入的连接。在这种情况下,Ingress 分析主机 http 标头以确定 交通路线。它类似于在 type:NodePort 上创建的 Service。你需要打电话 适当的 Ingress 服务。服务正在侦听知名端口并不明显。 其实有点棘手,从MacOS连接到输入:NodePort服务可能不太方便 不知道 Kubernetes 在哪里创建了监听套接字,并且确定 MacOS 实际上是 支持从 MacOS 到 VM 到此 TCP 端口的路由。

【讨论】:

    猜你喜欢
    • 2016-04-28
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2018-07-19
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多