【发布时间】:2021-04-01 16:13:14
【问题描述】:
为什么kubectl run dask --image daskdev/dask 会失败?
# starting the container with docker to make sure it basically works
➜ ~ docker run --rm -it --entrypoint bash daskdev/dask:latest
(base) root@5b34ce038eb3:/# python
Python 3.8.0 (default, Nov 6 2019, 21:49:08)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import dask
>>>
>>> exit()
(base) root@5b34ce038eb3:/# exit
exit
# now trying to fire up the container on a minikube cluster
➜ ~ kubectl run dask --image daskdev/dask
pod/dask created
# let's see what's going on with the Pod
➜ ~ kubectl get pods -w
NAME READY STATUS RESTARTS AGE
dask 0/1 CrashLoopBackOff 1 13s
dask 0/1 Completed 2 24s
dask 0/1 CrashLoopBackOff 2 38s
# not sure why the logs look like something is missing
➜ ~ kubectl logs dask --tail=100
+ '[' '' ']'
+ '[' -e /opt/app/environment.yml ']'
+ echo 'no environment.yml'
+ '[' '' ']'
+ '[' '' ']'
+ exec
no environment.yml
【问题讨论】:
-
您似乎正试图在 kubernetes 中运行交互式应用程序,它(本机)不理解交互式应用程序。如果 Pod 成功运行,您希望 Pod 做什么?它会等待您的输入,它会运行您拥有的一些预定义工作吗?其他?
-
我最初的意图是在 K8s 环境中使用该容器 - 熟悉它。所以,我实际上不希望 Pod 做任何事情。下一步是登录并手动调用调度程序/工作人员。另一方面,我是 K8s 的新手,并认为这个问题也是一个学习机会——毕竟我还不明白为什么我的方法会失败。也许@Vitalli 的回答会启发我。
-
在这种情况下,您需要在 PodSpec 中设置
command: [sleep, infinity](或使用您的kubectl run),以便 pod 启动、配置自身,然后就永远坐在那里等着您到kubectl exec进去;我看到有些人也使用tail -f /dev/null来实现相同的阻塞过程目的
标签: kubernetes dask dask-kubernetes