convert docker run command to kubectl for one time execution 将docker run命令转换为kubectl一次执行

尝试运行一个docker镜像一次,以使用流行的 S3 client minio 执行一个任务,该环境是我正在使用Kubernetes处理的环境。

我可以通过shell访问来执行如下任务:

docker run -it minio/mc --restart=Never --rm /bin/sh
同样,我可以在K8S群集中运行busybox镜像。
kubectl run busybox -i --tty --image=busybox --restart=Never --rm -- sh
但是, 无法使该mc客户端以与上一个示例相同的方式工作
kubectl run minio -i --tty  --image=minio/mc --restart=Never --rm --  /bin/sh
shell 会被强制退出,关于如何保持 shell 打开的任何想法?或如何在死之前将bash命令传递给它?

最佳答案

当Pod中的容器运行某些已完成的进程时,就会出现此问题。当其容器退出时,Pod完成。在Pod中连续运行容器是更常见的。
因此,
解决此完整问题的方法是保持容器运行:

  • 在Pod中运行容器:
kubectl run minio \
--image=minio/mc \
--restart=Never \
--command \
--  /bin/sh -c 'while true; do sleep 5s; done'

NOTE the Pod is kept running by the while loop in the container

NOTE the image's entrypoint is overridden by --command and /bin/sh

  • Exec放入容器中,例如:
kubectl exec --stdin --tty minio -- mc -- help

#create and login a minio client pod in k8s
 kubectl run minioclient -i -t --image=minio/mc --command -- /bin/sh -c 'echo hello;sleep 3600'
 kubectl exec -i -t -n default minioclient -c minioclient -- sh

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网络飞鸥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值