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.
 
