【问题标题】:convert docker run command to kubectl for one time execution将 docker run 命令转换为 kubectl 执行一次
【发布时间】:2020-09-08 16:02:00
【问题描述】:

我正在尝试使用流行的S3 client minio 运行一次 docker 映像来执行任务,而我正在处理的环境使用 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 命令传递给它?

【问题讨论】:

    标签: docker kubernetes minio


    【解决方案1】:

    当 Pod 中的容器运行完成的某些进程时,会出现此问题。当它的容器退出时,Pod 就完成了。在 Pod 中拥有连续运行的容器更为常见。

    因此,这个完成问题的解决方案是保持容器运行:

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

    注意 Pod 通过容器中的 while 循环保持运行

    注意图像的入口点被--command/bin/sh 覆盖

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      相关资源
      最近更新 更多