为什么将daskdev/DaskInto启动到Pod失败? [英] Why does starting daskdev/dask into a Pod fail?

查看:19
本文介绍了为什么将daskdev/DaskInto启动到Pod失败?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

推荐答案

  1. 所以基本上,如果您检查kubectl describe pod dask的结果,您会看到最后一个状态是Terminated,退出代码为0,字面意思是您的容器成功启动,完成了工作,也成功完成了。你还希望Pod会发生什么? 此外,当您使用kubectl run dask --image daskdev/dask创建Pod时-它默认使用restartPolicy: Always创建!

始终表示容器将重新启动,即使它以零退出代码退出(即成功)

    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       Completed
      Exit Code:    0
      Started:      Fri, 02 Apr 2021 15:06:00 +0000
      Finished:     Fri, 02 Apr 2021 15:06:00 +0000
    Ready:          False
    Restart Count:  3
    Environment:    <none>
  1. 您的容器中没有/opt/app/environment.yml。如果我没弄错的话,您应该先用prepare.sh来配置它。请检查更多here-任务
#docker run --rm -it --entrypoint bash daskdev/dask:latest
(base) root@431d69bb9a80:/# ls -la /opt/app/
total 12
drwxr-xr-x 2 root root 4096 Mar 27 15:43 .
drwxr-xr-x 1 root root 4096 Mar 27 15:43 .. 
不确定为什么日志看起来像是缺少了什么➜~kubectl日志任务--尾部=100 ..。 Exec无环境.yml

  1. 已准备好helm DASK chart。好好利用它。它工作正常:
helm repo add dask https://helm.dask.org/
helm repo update
helm install raffael-dask-release dask/dask

NAME: raffael-dask-release
LAST DEPLOYED: Fri Apr  2 15:43:38 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for installing DASK, released at name: raffael-dask-release.

This release includes a Dask scheduler, 3 Dask workers, and 1 Jupyter servers.

The Jupyter notebook server and Dask scheduler expose external services to
which you can connect to manage notebooks, or connect directly to the Dask
cluster. You can get these addresses by running the following:

  export DASK_SCHEDULER="127.0.0.1"
  export DASK_SCHEDULER_UI_IP="127.0.0.1"
  export DASK_SCHEDULER_PORT=8080
  export DASK_SCHEDULER_UI_PORT=8081
  kubectl port-forward --namespace default svc/raffael-dask-release-scheduler $DASK_SCHEDULER_PORT:8786 &
  kubectl port-forward --namespace default svc/raffael-dask-release-scheduler $DASK_SCHEDULER_UI_PORT:80 &

  export JUPYTER_NOTEBOOK_IP="127.0.0.1"
  export JUPYTER_NOTEBOOK_PORT=8082
  kubectl port-forward --namespace default svc/raffael-dask-release-jupyter $JUPYTER_NOTEBOOK_PORT:80 &

  echo tcp://$DASK_SCHEDULER:$DASK_SCHEDULER_PORT               -- Dask Client connection
  echo http://$DASK_SCHEDULER_UI_IP:$DASK_SCHEDULER_UI_PORT     -- Dask dashboard
  echo http://$JUPYTER_NOTEBOOK_IP:$JUPYTER_NOTEBOOK_PORT       -- Jupyter notebook

NOTE: It may take a few minutes for the LoadBalancer IP to be available. Until then, the commands above will not work for the LoadBalancer service type.
You can watch the status by running 'kubectl get svc --namespace default -w raffael-dask-release-scheduler'

NOTE: It may take a few minutes for the URLs above to be available if any EXTRA_PIP_PACKAGES or EXTRA_CONDA_PACKAGES were specified,
because they are installed before their respective services start.

NOTE: The default password to login to the notebook server is `dask`. To change this password, refer to the Jupyter password section in values.yaml, or in the README.md.
  1. 如果您仍要手动创建Pod,请使用下面的...主旨设定restartPolicy: Never
apiVersion: v1
kind: Pod
metadata:
  name: dask-tesssssst
  labels:
    foo: bar
spec:
  restartPolicy: Never
  containers:
  - image: daskdev/dask:latest
    imagePullPolicy: Always
    name: dask-tesssssst
  1. 请检查DASK KubeCluster official documentation for more examples.我从那里取的最后一张。

这篇关于为什么将daskdev/DaskInto启动到Pod失败?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆