如何让容器在 Kubernetes 上运行?

新手上路,请多包涵

我现在尝试在 Kubernetes 集群上运行一个带有 shell (/bin/bash) 的简单容器。

我认为有一种方法可以通过使用 pseudo-tty 和分离选项( -td docker run 命令上的选项)来保持容器在 Docker 容器上运行。

例如,

 $ sudo docker run -td ubuntu:latest

Kubernetes中有这样的选项吗?

我尝试使用 kubectl run-container 命令来运行容器,例如:

 kubectl run-container test_container ubuntu:latest --replicas=1

但是容器会退出几秒钟(就像使用 docker run 命令启动,没有我上面提到的选项)。 ReplicationController 会重复启动它。

有没有办法让容器在 Kubernetes 上运行,例如 docker run 命令中的 -td 选项?

原文由 springwell 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 436
2 个回答

容器在其主进程退出时退出。做类似的事情:

 docker run -itd debian

坦率地说,保持容器打开是一种技巧,只能用于快速测试和示例。如果您只想要一个容器进行几分钟的测试,我会这样做:

 docker run -d debian sleep 300

这样做的好处是,如果您忘记它,容器将自动退出。或者,您可以将这样的内容放入 while 循环中以使其永远运行,或者只运行诸如 top 类的应用程序。所有这些在 Kubernetes 中都应该很容易做到。

真正的问题是你为什么要这样做?您的容器应该提供服务,其进程将使容器在后台运行。

原文由 Adrian Mouat 发布,翻译遵循 CC BY-SA 3.0 许可协议

容器旨在运行完成。您需要为您的容器提供永远不会完成的任务。像这样的东西应该工作:

 apiVersion: v1
kind: Pod
metadata:
  name: ubuntu
spec:
  containers:
  - name: ubuntu
    image: ubuntu:latest
    # Just spin & wait forever
    command: [ "/bin/bash", "-c", "--" ]
    args: [ "while true; do sleep 30; done;" ]

原文由 Joel B 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题