【问题标题】:Is there a kubectl port-forward equivalent in podman?podman 中是否有 kubectl 端口转发等价物?
【发布时间】:2021-04-08 17:45:54
【问题描述】:

有些 TCP 端口不应该暴露给外界,而是在网络中的多个容器之间隔离。

要访问此类端口以进行调试,可以从容器网络外部使用kubectl port-forward。例如。访问开发者工作站上未公开的 k8s 数据库:kubectl port-forward pods / app-dev-database-0 5432: 5432 -n app

是否有与 kubectl port-forward 等效的 Podman 来设置从 Podman 主机到现有且正在运行的容器的端口转发?

【问题讨论】:

  • 也许可以将norouter 用于您的用例?
  • 我觉得您正在将苹果与橙子进行比较,因为(AFAIK)在您所描述的 docker 中没有这样的等价物,因此 kubectl 具有独特的定位来进行事后移植以 docker 和 podman 都没有的方式转发。 FWIW,即使是 kubernetes 机制也是通过节点上的socat 实现的,因此如果您试图重新发明该过程,可能值得研究一下它是如何实现的

标签: kubernetes kubectl portforwarding podman


【解决方案1】:

我不认为 podman 有这样的选择。 podman 中有一个“网络”选项。但是,它是用于创建容器网络,而不是端口转发的目的。

要回答你的问题,我认为 socat 是唯一的选择

# socat TCP4-LISTEN:5431 TCP4:10.89.1.10:5432

这里任何人连接到服务器的 5431 端口都会被重定向到容器 IP 和端口 10.89.1.10:5432

【讨论】:

  • 是的,我也想过只使用 socat。简单整洁的解决方案。一项改进可能是使用容器名称而不是 IP,因为它是自动分配的。 socat TCP4-LISTEN:5431 TCP4:$(podman inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name):5432
  • @SimonSchürg 这是将 socat 与 podman 一起使用的非常有用的方法。谢谢。
猜你喜欢
  • 2018-11-11
  • 1970-01-01
  • 2011-07-29
  • 2013-06-21
  • 2014-01-09
  • 2012-02-18
  • 2014-05-02
  • 1970-01-01
相关资源
最近更新 更多