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
NFS mount in node manual mode ends up stuck when node reboots uncleanly. #344
Comments
I'm seeing this with a samba mount on one node as well. Works on one node but not the other even though it should be RWX - it seems almost like the driver is treating them like RWO - it mounts them successfully on one node or the other, but not both. They work so long as all the pods that need them pile onto one node. |
Is this possibly related to the volume attachment 'issue' I need to resolve as well? |
Possibly. Since the OP here hd success with deleting and recreating the manual mounts I just tried that - and it once again lead to a race condition - first node that had the SMB Manual mount up got it and the pods trying to mount it on the other node are once again stuck with the same message:
|
Hmm, that's kinda odd :( each node should stage before publish. Is stage even being invoked on the problematic node(s)? |
This seems to be the source of the pain on the problem node, the last two fails have been on one now consistently.
It's trying to unstage the mount so it can stage it - but the mount is already there - I'm checking the dir now - and it looks like the mount may have disconnected at somepoint in it's lifecyle and the directories for the sub-path mounts in the pods mounting this have been written to the I managed get it out of that loop by running an
Bouncing the manual CSI pod on that node did not resolve that spin, but rebooting the node after that did - and now pods are finally able to mount that pvc on that node again. |
That is very helpful info. That also may be very tricky to determine how to properly cope with the scenario. Did you happen to capture what files were in the dir before the rm rf? On the host did it show the global mount as active and was it active in reality? |
It was not active, there were no files in the mount dir, just empty directory structure mapping to the mount paths of the pods mounting that PVC on that node. IE:
Nothing else. It seems like the pods somehow started and some part of the scheduling process created the mount points even though the mount was not there. The mount list on the host showed it was not mounted. |
I've hit this again, and I'm posting this contemporaneously:
This jives with my original experience, and seems to perhaps point to an issue with stale/cached data used for the given PV/PVC that |
Can you run ls on the globalmount dir next time? I am interested in what’s in there. |
I hit this on the freenas-nfs driver (not manual) recently as well. It was similar to the node-manual one - the mountpoints were in the mount dir, no files. So i can now confirm this issue is not exclusive to the node-manual driver. |
Hit this again on the freenas-nfs driver today, no node reboot - actually looks like the gigabit adapter on node got overloaded with writes from files moving from one mount to another. This triggered a volume remount. The remount wasn't clean and the application loaded a /mount directory that was local to the host without the remote nfs mount attached and mounted to it, this caused the application to initialize it's mount structure an config in the local /mount dir, which then caused the nfs controller to spin on the same message we've seen before:
This was being seen for multiple pods attempting this mount, this was one example. Contents of the /mount dir:
Which causes the staging to not happen. There was nothing in the global mount dir. I fixed this by scaling the pods trying to use this down, running Then scaled the pods back up, and things were back to normal. |
Yet another predictable failure when a node is rebooted. -_- From the
Output from the failed node related to the aforementioned directories:
This is all prior to doing any manual operations, and no, I can't run anymore commands on this environment to debug because I've already gone ahead and fixed it manually and described previously. 😅 |
@tobz have you tried the updated node-manual config example in #324 (comment) ? I've been using this without issue for a bit now, no issues with unclean reboots. |
I think the volume attachments using the new config may help with that yes. |
I updated to the latest Helm chart today, including the aforementioned |
Ok, did you update the csiDriver to ensure attach required etc? |
Didn't specify
|
(I'll backfill more details in here, just jotting down the skeleton of the problem.)
Problem
I've encountered an issue with the
node-manual
driver -- a few times at this point -- where an unclean node reboot leads to NFS-backed PV/PVCs becoming stuck in an inconsistent state that ultimately leads to the PVCs not being able to be mounted to their respective pods when the node comes back online.Context
My setup involves use of the
node-manual
driver to mount specific NFS paths with dedicated PV/PVCs on application pods. This is all fine and good when things are working.When one of the aforementioned node reboots happen, naturally the pods are still hanging around in the API, and then eventually the node comes back and the node tries to bring up these pods as it is still set as being responsible for them.
When this occurs, there's an error shown when describing the pod (which I've lost at this point, unfortunately) when contains the string "staging path is not mounted", and refers to a path on the node ending in
globalmount
. This seems to be related to the two-step process where a volume is staged on a a node and then "published" so it can actually be used by a workload? Checking the node in question, the path it was referring to indeed didn't exist, although the directory it referenced did.I ended up deleting the PV/PVCs (which were stuck in terminating, until...) and then deleting the pods using the stuck volumes, which ended up clearing everything out and allowed me to recreate the pods, which then ended up being able to properly mount the volumes.
The text was updated successfully, but these errors were encountered: