Hello Community,
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:
Upgrade-Command:
helm upgrade --cleanup-on-fail --install jupyterhub jupyterhub/jupyterhub --namespace jhub --create-namespace --version=1.1.3-n254.h9b546a54 --timeout=10m --values config.yaml
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
storageclass.yaml
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
pv.yaml
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.