如何解决将docker run命令转换为kubectl一次执行
我正在尝试运行一个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命令传递给它?
解决方法
当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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。