在 Kubernetes pod 中运行的 Docker 容器中使用子进程会不会有问题?

问题描述 投票:0回答:1

作为一名 IT 承包商,我的任务是解决客户软件中的一个问题,该软件简单地使用第三方库来加密或解密字节字符串。由于与 AWS 临时访问令牌相关的原因,图书馆需要偶尔重新初始化才能获取(通过 AWS EKS)和使用新的访问令牌。

我想出了一个简单的解决方案,其中这个库的初始化和使用被委托给为此目的分叉的子进程,输入和输出字符串通过几个管道以十六进制的方式传递。然后要重新初始化库,父进程可以简单地杀死子进程并派生一个新进程。

看起来很标准的东西,在 Unix 中无处不在。但客户代表表示,这可能会导致 Kubernetes pod 出现问题,涉及访问权限和进程监控等问题。他是对的,还是他(正如我怀疑的那样)是一个过于谨慎的珍珠抓取者?

如果他是对的,会出现什么样的问题,如何避免?

docker kubernetes fork
1个回答
2
投票

但是客户代表说这可能会导致 Kubernetes pod 出现问题,涉及访问权限和进程监控等。

kubernetes 在子进程和访问权限方面没有什么特别之处。这只是 Unix 进程:子进程使用与父进程相同的凭据运行,并且可以访问与父进程相同的文件和其他资源。

过程监控问题值得更详细地探讨一下。通常,我们说一般的容器——不仅在 Kubernetes 中,而且在 docker/podman 等中——应该有一个入口点。换句话说,您不想创建一个运行多个服务的容器,例如网络服务器和数据库。这是因为在多入口容器中,服务的故障对容器管理工具是隐藏的,因此容器运行时无法销毁和重新创建容器以响应服务故障。

只要您的应用程序能够正确响应子进程的意外死亡——通过调用

wait()
来清理进程条目并在必要时正确地重生它——你的状态就很好。

© www.soinside.com 2019 - 2024. All rights reserved.