我正在尝试运行一个docker映像一次,以使用我正在使用的流行的S3 client minio环境使用Kubernetes来执行任务。
我可以通过shell访问来执行如下任务:
this.doLogin(this.loginData)
.then( () => {
this.$router.replace('/')
.catch( error => {
console.log(error)
})
})
.catch( e => {
console.log(e)
})
类似地,我可以在K8S集群中运行busybox映像。
docker run -it minio/mc --restart=Never --rm /bin/sh
但是,我无法使该mc客户端以与上一个示例相同的方式工作。
kubectl run busybox -i --tty --image=busybox --restart=Never --rm -- sh
我的外壳会退出,关于如何保持外壳打开的任何想法?或如何在死之前将bash命令传递给它?
答案 0 :(得分:3)
当Pod中的容器运行一些已完成的进程时,就会出现此问题。当其容器退出时,Pod完成。在Pod中连续运行容器是更常见的事情。
因此,解决此完整问题的方法是保持容器运行:
kubectl run minio \
--image=minio/mc \
--restart=Never \
--command \
-- /bin/sh -c 'while true; do sleep 5s; done'
注意,容器中的
while
循环使Pod保持运行状态
注意,图像的入口点被
覆盖--command
和/bin/sh
kubectl exec --stdin --tty minio -- mc --help