kubeflow 错误集合
继上一篇在单机上搭建了k8s、kubeflow之后又遇到了一系列问题,现将踩的坑一一记录下来,帮助需要的人。后续会持续更新在使用kubflow以及k8s过程中遇到的问题以及解决方案。
-
在kubeflow ui界面创建notebook的时候,出现
Could not find CSRF cookie XSRF-TOKEN
错误-
查找相关日志
kubectl logs <name> <name-spaces>
-
错误信息
Could not find CSRF cookie XSRF-TOKEN in the request.
-
原因分析通过访问 Kubeflow UI是通过 http(而不是 https),因此需要在 Jupyter Web 应用服务中将环境变量设置
APP_SECURE_COOKIES=false
。 -
解决办法:
kubectl edit deployments.apps -n kubeflow jupyter-web-app-deployment
,修改之后如图所示。
-
-
在kubeflow ui界面创建notebook时,出现
kubeflow FailedScheduling didn't find available persistent volumes to bind.
错误-
kubectl describe pod <name> <name-spaces>
-
错误信息
kubeflow FailedScheduling didn't find available persistent volumes to bind.
-
原因分析:k8s没有动态的创建存储,没有多余的pv可以绑定
-
解决办法: 通过yaml文件手动创建一个pv,然后申请的pvc会自动地跟pv进行绑定。yaml文件就跟上一篇中pv创建的yaml文件类似
然后执行
kubectl apply -f *.yaml
-
思考的问题:为什么k8s不能执行动态存储?答:跟kind创建的k8s容器有关,cluster中无法访问宿主机上的文件,也没有权限去创建。感兴趣的可以了解一下pv创建的全过程。
apiVersion: v1 kind: PersistentVolume metadata: namespace: kubeflow-user-example-com name: jupyter-storage labels: type: local spec: storageClassName: local-storage capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: "/data/k8s/jupyter-storage"
-
-
创建完成之后又出现如图所示错误
-
日志命令
kubectl logs test-0 -n kubeflow-user-example-com
-
错误信息
PermissionError: [Errno 13] Permission denied: '/home/jovyan/.local'
-
问题分析:
- 猜测内置用户jovyan没有权限执行相关操作。
- 估计和kind创建k8s容器有关,kind创建的k8s,在cluster中是无法访问宿主机上的文件系统。
- 后期解决方案:在创建k8s时,将文件目录进行映射。
-
解决办法
- 对于用kind创建k8s的用户,短暂的解决办法是不绑定持久化目录
- 后期等目录确定之后,在创建k8s的时候进行目录映射,详细的操作方式见链接
- 对于正常搭建k8s的用户,可能需要将绑定的pv赋予777权限。如:
chmod -R 777 /data/k8s/jupyter-storage
-
-
在kubeflow界面上出现
error 1049: unknown database 'mlpipeline'
- 日志命令
kubectl logs test-0 -n kubeflow-user-example-com
- 错误信息摘要
error 1049: unknown database 'mlpipeline'
- 问题分析:
- 一开始查找相关问题的解决方案,以为是数据库无法访问,但进行了相关尝试,并不见效
- 后来才发现是因为有一个pod
ml-pipeline-67c777bf68-p2bt7
一开始拉去错误,后来重新去拉的,忘记将他删除重启了,导致mlpipeline一直找不到
- 解决办法
- 删除对应的pod,重新创建
kubectl delete pod ml-pipeline-67c777bf68-p2bt7 -nkubeflow
- 删除对应的pod,重新创建
- 日志命令