【问题标题】:Start a container from another one in a pod in Kubernetes在 Kubernetes 的 pod 中从另一个容器启动一个容器
【发布时间】:2019-09-29 18:11:58
【问题描述】:

我有一个对某些数据执行某些操作的容器。此容器占用大量内存和 CPU 资源,我希望它仅按需启动。

作为一个例子,在 Kubernetes 中使用 docker-compose,我是这样使用的:

docker-compose run heavycontainer perform.sh some-action

容器执行动作并结束。

在 Kubernetes 中,我希望这个容器执行它提供的操作,但要响应一些消息(AMQP 消息,由其他容器创建)。我有一个监听消息的容器。我的第一个想法是一个有两个容器的 pod:listener 和 performer。但我不知道是否可以从另一个容器开始。

Init 或 sidecar 容器似乎不是解决方案。而且我更喜欢避免创建自定义图像来将侦听器注入执行者。

有什么办法可以做到吗?

【问题讨论】:

    标签: docker kubernetes


    【解决方案1】:

    希望对你有帮助。

    • pod 需要run regularly,CronJob

    • pod 需要run on demand, Job

    首先,我为我的错误回答向您道歉。

    我明白你现在想要什么,我认为它可以在同一个 pod 中运行多个容器。 Patterns for Application Augmentation on OpenShift 对你有帮助。

    PS。 OpenShift 是 Enterprise Kubernetes,所以你可以认为 OpenShift 和 Kubernetes 是一样的。

    【讨论】:

    • 有趣的阅读,谢谢。但这是我尝试或想要避免的三种情况:init 和 sidecar 容器无法控制 pod 中的其他容器,第三种情况是关于构建自定义映像。
    【解决方案2】:

    您可以使用 Horizo​​ntal Pod Autoscaling (https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) 根据队列中相关消息的数量来编排您的重型容器。

    【讨论】:

    • 提供的链接没有提到基于水平缩放的“队列中的消息”。你能提供更多细节吗?除非您的意思是 beta api,否则仅支持基于 CPU。
    • @ucipass,我的意思是基于自定义指标的 HPA,例如参见 towardsdatascience.com/…:“K8s Horizo​​ntal Pod Autoscaler:被实现为一个控制循环,它定期查询 Resource Metrics API 以获取核心指标,通过 metrics.k8s.io API,例如 CPU/内存和自定义指标 API,用于特定于应用程序的指标(external.metrics.k8s.io 或 custom.metrics.k8s.io API。”
    猜你喜欢
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2020-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    相关资源
    最近更新 更多