【发布时间】:2021-07-06 00:01:29
【问题描述】:
在我的 openshift 集群中,我注意到我所有的 pod 都有一个开放的端口,而我没有指定它。 如this post 中提到的,它是明显用于k8s api 的pott 443。
即使读完,我还是不明白。
我了解该服务存在并转发到所有 pod。 但是为了让 pod 使用此服务接收和发送请求。容器中的端口必须是开放的。 但不知何故,即使没有在我的 pod 容器上指定端口。默认的 443 端口是打开的。 这让我可以做这样的事情:
- 创建服务并将目标端口设置为 443
- 在未打开容器端口的情况下设置 pod。
- 成功使用服务与容器通信。
这安全吗?,什么会在没有我指定的情况下打开容器端口? 有没有办法防止这种情况发生?
【问题讨论】:
-
我也是新手。据我了解。当你启动一个 pod 时,它有一个独立的虚拟网络空间,所有端口都打开。使用 NetworkPolicy 资源,您可以添加 pod 将在哪些端口上发送/接收流量的约束。为了获得更高的安全性,您可以使用 SecurityContext 资源,该资源定义了在 conatiner 中运行的访问应用程序具有的权限。
-
@SauriBabu 感谢您提供的信息,但这仍然不能解释为什么我的容器端口是开放的,除非我遗漏了一些东西
-
正如我所说的,当 pod 启动时,它有一个完全独立的网络空间,所有端口都可用。除非您使用 NetworkPolicy 阻止端口,否则它们是开放访问的。
标签: kubernetes kubernetes-pod kubernetes-service kubernetes-container