【问题标题】:Start new K8s Pod within K8s Pod without "Privileges"在没有“权限”的 K8s Pod 中启动新的 K8s Pod
【发布时间】:2018-12-30 15:25:52
【问题描述】:

早安,

我有一个很大的问题。

在我们的 K8s 集群中应该有一个 Simulations Starter Service(=“Master Pod”),它可以创建 Pod(=“Child Pod”)。对于每个新请求(在本例中类似于“开始模拟”),Service 都会启动一个新的模拟 pod。

另外,我没有“特权”(Pod Security Policies) 之类的额外特权。我们知道我们可以通过设置 kubernetes 上下文并在 Master Pod 中使用 kubectl 来连接到同一个集群。但这很笨拙和丑陋,因为 Master Pod 现在将对集群拥有很大的权力(以及他自己)。他并不真正需要的权力,这不是最佳做法。

我是 kubernetes 和 docker 的新手(一周前开始发现它们),我可以说这对我来说是一项相当艰巨的任务。

任何想法表示赞赏!

编辑: 我检查了谷歌和 StackOverflow 搜索,并没有真正找到任何东西。

【问题讨论】:

  • 您能进一步解释一下吗?据我了解,您想在请求到来时生成一个 pod。您将如何获取请求?它会开始什么样的模拟?
  • 计划是 Starter Service (Master Pod) 有一个 REST API。如果新的 POST/PUT(尚不清楚)带有特定数据的特定资源,则将开始模拟。模拟本身是一种多智能体模拟,可能只有几个智能体,最多可达一百万或更多。有许多“刻度”,它们是模拟步骤。这取决于模拟总共需要多长时间。在某些情况下,计算所有 Ticks 需要几天/几周的时间。

标签: docker authentication kubernetes


【解决方案1】:

这可以通过Kubernetes API 完成。

有很多官方支持的 Kubernetes 客户端库

去 - github.com/kubernetes/client-go/

Python - github.com/kubernetes-client/python/

Java - github.com/kubernetes-client/java

dotnet - github.com/kubernetes-client/csharp

JavaScript - github.com/kubernetes-client/javascript

还有很多社区支持,列在here

例如,我们可以使用official python 客户端库。

安装:

git clone --recursive https://github.com/kubernetes-client/python.git
cd python
python setup.py install

直接来自PyPi

pip install kubernetes

并使用这个example deployment script

详细的安装、要求和使用方法请见here

【讨论】:

  • 恐怕这行不通,因为这是我们目前的方式。并且在我们当前的方式中,启动服务/Pod 具有特权,因此他可以启动其他 pod。没有这些特权恐怕行不通。这就是为什么我们首先要寻找一种新的方式。
【解决方案2】:

所以我的同事发现了一些东西。 作业排队。 我认为这正是我们想要的,实际上它只是需要权限(取决于您的具体部署)来部署,但之后就可以了。

我要专注于豆荚,所以我完全错过了乔布斯的存在。

如果有人来这里,请在Github Repository 中使用 Rabbitmq 尝试他们的工作排队教程。

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2020-05-20
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多