New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bind mounts in container not updated after volume is remounted again #66567
Comments
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
/remove-lifecycle stale |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
/remove-lifecycle stale |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
Stale issues rot after 30d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
/lifecycle frozen |
that's really hit my s3fs-fuse. If we use s3fs mount a bucket into a host as a dir, then mount this dir into container. At this point if we restart s3fs process, the dir in the container can't be access. Always show me 'Transport endpoint is not connected'. Does the ceph-fuse has the same problem? |
@cofyc you mentioned "Kubelet will remount the volume later because it will find volume mount point does not exist anymore. ". But from my understanding, kubelet does not check whether mount still exist or not and remount it. For this type problem, are the following steps necessary to recover? Is there any other way?
|
I think the only way to fix this is to change some logic in cri and container-runtime. |
I might make a mistake. I guess the userspace filesystem process (I was using ceph-fuse) was restarted by systemd. yes, the kubelet can remount the volume and restarts the container to update the stale bind mounts in the container. However, it's too complicated I guess. As a workaround solution, users can run the userspace filesystem process in a process supervisor (systemd), then the mount point will be remounted again after the process restarts. Second, the process in the pod can exit and wait for the kubelet to restart it again when it cannot access the filesystem or the mount point is found stale. |
Restarting container is a feasible approach. Is there a way to do this without restarting container? |
Is this a BUG REPORT or FEATURE REQUEST?:
/kind bug
@kubernetes/sig-storage-bugs
What happened:
For fuse-backed volumes, fuse process may exit on error, the volume on the host will disappear. Kubelet will remount the volume later because it will find volume mount point does not exist anymore. But bind mount in container will still be the old one, processes in container will fail with error:
What you expected to happen:
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
Should we restart container after remounting volumes of it?
Related issues
The text was updated successfully, but these errors were encountered: