在运行时在 Pod 中创建额外容器的正确方法是什么?

What is the correct way to create additional containers in a Pod during runtime?

我希望能够在现有 pod 中创建一个临时容器 来处理来自用户的任意代码(安全问题),但是 由于数据局部性/性能问题,此容器也必须在同一个 pod 中。

我的问题是,实现此目标的正确方法是什么? Ephemeral Containers 被描述为“检查服务而不是构建应用程序”和“临时容器可能没有端口”。

所以我觉得这不是解决这个问题的正确方法。我的临时容器必须能够与同一个Pod中的原始容器共享挂载数据,并且必须能够通过对同一个Pod的原始容器开放的端口进行通信。

您可以通过创建一个 sidecar 来实现这一点,它会拦截到您原始 pod 的流量,或者只是在您的部署中创建第二个 pod 以及一种自动触发您想要执行的过程的方法。需要注意的是,这两个 pods 共享同一个网络,因此您不能为两个容器公开同一个端口。

这两种方法的缺点是您不再拥有临时容器,现在您将拥有 up 和 运行。

如果你想做的是容器启动时的一次性任务,我强烈建议在你的原始 pod 中公开一个 API 并从 Job 进行调用。