将 docker 运行 命令转换为 kubectl 执行一次

convert docker run command to kubectl for one time execution

我正在尝试 运行 一次 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 中连续 运行 包含容器更为常见。

解决这个完整问题的方法是保持容器 运行ning:

  1. 运行 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

  1. 执行到容器中,例如:
kubectl exec --stdin --tty minio -- mc --help