问题描述
我现在正在尝试在Kubernetes集群上运行一个带shell(/bin/bash)的简单容器。
我认为有一种方法可以通过使用伪tty和detach选项(docker run命令上的-td选项)来保持容器在Docker容器上运行。
例如,
1 | sudo docker run -td ubuntu:latest |
在Kubernetes有这样的选择吗?
我尝试使用kubectl run-container命令运行容器,如:
1 | kubectl run-container test_container ubuntu:latest --replicas=1 |
但是容器几秒后会退出(就像使用docker run命令启动而没有上面提到的选项)。并且ReplicationController会重复启动它。
有没有办法让容器在Kubernetes上运行,就像docker run命令中的-td选项一样?
高票回答
当主进程退出时,容器退出。做类似的事情:
1 | docker run -itd debian |
坦率地说,容器打开是一个只能用于快速测试和示例的黑客攻击。如果你只想要一个容器进行几分钟的测试,我会这样做:
1 | docker run -d debian sleep 300 |
其优点是,如果忘记了容器,容器将自动退出。或者,可以在while循环中放置类似的内容以使其永久运行,或者只运行top等应用程序。所有这些在Kubernetes中应该很容易做到。
1 | apiVersion: v1 |
真正的问题是你为什么要这样做?您的容器应该提供服务,其过程将使容器在后台运行。