【问题标题】:Open port in all containers在所有容器中打开端口
【发布时间】:2021-07-06 00:01:29
【问题描述】:

在我的 openshift 集群中,我注意到我所有的 pod 都有一个开放的端口,而我没有指定它。 如this post 中提到的,它是明显用于k8s api 的pott 443。

即使读完,我还是不明白。

我了解该服务存在并转发到所有 pod。 但是为了让 pod 使用此服务接收和发送请求。容器中的端口必须是开放的。 但不知何故,即使没有在我的 pod 容器上指定端口。默认的 443 端口是打开的。 这让我可以做这样的事情:

  1. 创建服务并将目标端口设置为 443
  2. 在未打开容器端口的情况下设置 pod。
  3. 成功使用服务与容器通信。

这安全吗?,什么会在没有我指定的情况下打开容器端口? 有没有办法防止这种情况发生?

【问题讨论】:

  • 我也是新手。据我了解。当你启动一个 pod 时,它有一个独立的虚拟网络空间,所有端口都打开。使用 NetworkPolicy 资源,您可以添加 pod 将在哪些端口上发送/接收流量的约束。为了获得更高的安全性,您可以使用 SecurityContext 资源,该资源定义了在 conatiner 中运行的访问应用程序具有的权限。
  • @SauriBabu 感谢您提供的信息,但这仍然不能解释为什么我的容器端口是开放的,除非我遗漏了一些东西
  • 正如我所说的,当 pod 启动时,它有一个完全独立的网络空间,所有端口都可用。除非您使用 NetworkPolicy 阻止端口,否则它们是开放访问的。

标签: kubernetes kubernetes-pod kubernetes-service kubernetes-container


【解决方案1】:

我注意到我所有的 pod 都有一个端口在我没有指定的情况下打开。

是的,contanerPort: 只是元数据,容器也可能监听其他端口。

这安全吗?,什么会在没有我指定的情况下打开容器端口?有没有办法防止这种情况发生?

是的,这就是Kubernetes Network Policies 的用途。

【讨论】:

  • 那么containerPort:到底有什么用呢?它是否在幕后添加了networkPolicy:?还是只是在选定的networkPolicy: 顶部向 pod 添加一个开放端口?
  • 不,它什么也没做。这类似于 Dockerfile 中的EXPOSE <port>nickjanetakis.com/blog/… 我同意,这有点令人失望。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2021-05-13
  • 2022-10-25
  • 1970-01-01
  • 2020-10-18
相关资源
最近更新 更多