Skip to content

Handle missing /dev/fuse by creating it dynamically in initContainer#177

Open
hlts2 wants to merge 1 commit intoyandex-cloud:masterfrom
hlts2:fix/create-fuse-device-if-missing
Open

Handle missing /dev/fuse by creating it dynamically in initContainer#177
hlts2 wants to merge 1 commit intoyandex-cloud:masterfrom
hlts2:fix/create-fuse-device-if-missing

Conversation

@hlts2
Copy link

@hlts2 hlts2 commented Nov 7, 2025

First of all, thank you very much for creating a great project.

Description

This PR adds logic to handle environments where /dev/fuse does not exist by default.
When /dev/fuse is missing, it will initially be created as a directory.
Then, during the initContainer phase, it will be converted into a character device so that the main container can use it properly.

Details

  • Added /dev volume mount and handling logic.
  • Introduced an initContainer to ensure /dev/fuse is correctly created as a CharDevice.

Why

In some environments (e.g., Alpine-based images ...etc), /dev/fuse is not provided by default.
As a result, after applying the current manifest and deploying the Pod, the following error occurs.

csi-s3-ctl2w csi-s3 /bin/fusermount: failed to open /dev/fuse: Is a directory
csi-s3-ctl2w csi-s3 2025/11/07 09:24:03.128866 main.FATAL Mounting file system: Mount: mount: running /bin/fusermount: exit status 1
csi-s3-ctl2w csi-s3 E1107 09:24:04.136909       1 utils.go:101] GRPC error: Error fuseMount command: geesefs

This happens because /dev/fuse does not exist and is therefore created as a directory, causing the Pod to remain in the Pending state and fail to transition to Running.

Signed-off-by: hlts2 <hiroto.funakoshi.hiroto@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant