将 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:
- 运行 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
- 执行到容器中,例如:
kubectl exec --stdin --tty minio -- mc --help
我正在尝试 运行 一次 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:
- 运行 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
- 执行到容器中,例如:
kubectl exec --stdin --tty minio -- mc --help