For days I have been getting the following “error message” when a user wants to start a kernel/image.
[Warning] 0/1 nodes are available: 1 node(s) did not find available persistent volumes to bind.
The Pod for the user remains in “PENDING” status.
The PVC for the user shows two warnings:
- waiting for pod jupyter-admin to be scheduled.
- waiting for first consumer to be created before binding.
I have read countless posts about this, but none have helped or really fit the situation.
I have installed jupyterhub and kubernetes on a single virtual machine. This means that the master node is also the woker node. The storage that can be used is therefore only the storage of the VM. For a short time everything ran smoothly until suddenly the warning appeared and it no longer worked. Maybe I have a huge misunderstanding somewhere, but at the moment I am completely at a loss. I hope that you can help me somehow.
Here are the configurations that are used:
helm upgrade --cleanup-on-fail --install jupyterhub jupyterhub/jupyterhub --namespace jhub --create-namespace --version=1.1.3-n254.h9b546a54 --timeout=10m --values config.yaml
debug: enabled: true proxy: secretToken: ***** hub: cookieSecret: ***** config: Authenticator: admin_users: - admin - user DummyAuthenticator: password: ***** JupyterHub: admin_access: false authenticator_class: dummy singleuser: cpu: limit: 1 guarantee: 0.05 memory: limit: 1G guarantee: 512M storage: capacity: 1Gi homeMountPath: /home/jhub dynamic: storageClass: local-storage defaultUrl: "/lab" extraEnv: JUPYTERHUB_SINGLEUSER_APP: "jupyter_server.serverapp.ServerApp" image: name: ***** tag: ***** lifecycleHooks: postStart: exec: command: [ "gitpuller", "*****", "main", "Examples", ] profileList: - display_name: "Minimal environment" description: "To avoid too much bells and whistles: Python." default: true ***** cull: enabled: true timeout: 1800 every: 300 prePuller: continuous: enabled: true scheduling: userScheduler: enabled: true podPriority: enabled: true
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer
apiVersion: v1 kind: PersistentVolume metadata: name: jhub-pv labels: type: local spec: capacity: storage: 5Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: local-storage local: path: /home/jhub nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - jupyterhub-test
I can make the following statements about the system.
- The name of the node is jupyterhub-test.
- The PVC hub-db-dir has the status Bound.
- The PV jhub-pv has the status Bound.