hetznercloud / csi-driver

Kubernetes Container Storage Interface driver for Hetzner Cloud Volumes
MIT License
620 stars 102 forks source link

Attempting to create a volume in Docker Swarm fails #680

Open tetious opened 1 month ago

tetious commented 1 month ago

TL;DR

When creating a volume as described in the doc linked from the readme, it doesn't error, but never creates the volume. It shows as "pending creation" in volume ls and logs errors in journaldb: "does not implement PluginAddr"

Expected behavior

The volume should be created.

Observed behavior

It isn't created. :)

Minimal working example

  1. Spin up a cluster using the Hetzner Docker image.
  2. Follow the steps in the docs to add and enable the plugin.
  3. Create a volume:
    docker volume create --driver hetznercloud/hcloud-csi-driver:swarm --required-bytes 40G --type mount --sharing all --scope single postgres-data --topology-required csi.hetzner.cloud/location=ash
  4. Observe the errors in syslog

Log output

Jul 29 17:35:37 bb-prod-node-1 dockerd[963]: time="2024-07-29T17:35:37.201332112Z" level=info msg="error handling volume" attempt=11 error="plugin for driver \"hetznercloud/hcloud-csi-driver:swarm\" does not implement PluginAddr" module=csi/manager node.id=uqhj7s7qt34saeh896trcm35k volume.id=241uf201u8r5h4bzpjvynwu02

Additional information

Docker version 27.1.1, build 6312585 (From Hetzner's official image) I've tried using v2.8.0 and latest tags for the plugin with the same results.

jooola commented 1 month ago

I was able to reproduce the logs, this seems related to https://github.com/moby/moby/issues/48133

apricote commented 1 month ago

As @jooola wrote, this seems the be caused by a Docker Swarm bug. An older version of Docker Swarm might work.

As stated in our README, we do not provide official support for the csi-driver in Docker Swarm.

https://github.com/hetznercloud/csi-driver/blob/bcc02980cc0fffa456d6db6721927a3a0cc8e9fd/README.md?plain=1#L17

blib commented 5 days ago

please note that in docker 27.x.x CSI plugin interface is broken