docker – 如何在运行时将容器添加到Kubernetes pod

我有一些
Jobs

在k8s上运行.

这些作业运行自定义代理,该代理复制某些文件并为要运行的用户(可信)提供的容器设置环境.
此代理程序在用户容器一侧运行,捕获日志,等待容器退出并处理生成的结果.

为此,我们安装了Docker的socket /var/run/docker.sock并作为特权容器运行,并且从代理内部,我们使用docker-py与用户容器进行交互(设置,运行,捕获日志,终止).

这工作得很好,但我认为这是一个黑客.由于用户容器是通过直接在节点上调用docker创建的,因此k8s并不知道它存在.由于我们的监控工具与K8交互,因此无法查看这些独立的用户容器,因此一直存在问题.它还使得pod调度更难以管理,因为用户容器的限制(cpu / memory)不被视为对pod的请求.

我知道init containers,但这些不太适合这个用例,因为我们希望保持代理运行并监视用户容器,直到它完成.

是否可以在容器上运行容器,请求Kubernetes将其他容器添加到代理运行的同一个容器中?如果是这样,代理商是否也可以请求Kubernetes随意删除用户容器(例如满足某些自定义条件)?

最佳答案 从
this GitHub issue开始,似乎答案是无法向容器添加或删除容器,因为pod规范中的容器列表是不可变的.

点赞