【发布时间】:2020-05-11 08:14:20
【问题描述】:
尝试在 Kubernetes 中部署有状态的 jupyter notebook,但无法保存在 notebook 中编写的代码,每当 notebook pod 关闭时,所有代码都会被删除。我尝试使用持久音量,但无法达到预期效果。
更新
将挂载路径更改为“/home/jovyan”,因为 jyputer 将 ipynb 保存在此位置。但是现在在部署 Pod 时出现 PermissionError: [Errno 13] Permission denied: '/home/jovyan/.local'。
kind: Ingress
metadata:
name: jupyter-ingress
spec:
backend:
serviceName: jupyter-notebook-service
servicePort: 8888
---
kind: Service
apiVersion: v1
metadata:
name: jupyter-notebook-service
spec:
clusterIP: None
selector:
app: jupyter-notebook
ports:
- protocol: TCP
port: 8888
targetPort: 8888
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: jupyter-notebook
labels:
app: jupyter-notebook
spec:
replicas: 1
serviceName: "jupyter-notebook-service"
selector:
matchLabels:
app: jupyter-notebook
template:
metadata:
labels:
app: jupyter-notebook
spec:
serviceAccountName: dsx-spark
volumes:
- name: jupyter-pv-storage
persistentVolumeClaim:
claimName: jupyter-pv-claim
containers:
- name: minimal-notebook
image: jupyter/pyspark-notebook:latest
ports:
- containerPort: 8888
command: ["start-notebook.sh"]
args: ["--NotebookApp.token=''"]
volumeMounts:
- mountPath: "/home/jovyan"
name: jupyter-pv-storage
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: jupyter-pv-claim
spec:
storageClassName: jupyter-pv-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: jupyter-pv-volume
labels:
type: local
spec:
storageClassName: jupyter-pv-storage
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/home/jovyan"
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: jupyternotebook-pv-storage
annotations:
storageclass.kubernetes.io/is-default-class: "true"
labels:
provisioner: kubernetes.io/vsphere-volume
parameters:
diskformat: zeroedthick
```
【问题讨论】:
-
有什么理由不使用 Hub 来代替?
-
主要专注于在笔记本中编写 spark 代码,这就是为什么使用图像:jupyter/pyspark-notebook:latest
-
@NitinAshok 我在你的 StatefulSet 中看不到
volumeClaimTemplates。您能否详细说明您在持久卷方面尝试了什么?另外,请查看此doc 并告诉我您是否已这样做。 -
@OhHiMark 我对挂载路径进行了一些更改,但现在在部署 Pod 时出现权限被拒绝错误我更新了代码。请看一看。谢谢
-
@NitinAshok 您需要将该文件夹的权限设置为 777,以便以特定用户身份运行的容器能够对其进行写入。
标签: kubernetes jupyter-notebook