mirror of https://github.com/k3s-io/k3s
![]() Automatic merge from submit-queue Fix race condition in updating attached volume between master and node This PR tries to fix issue #29324. The cause of this issue is that a race condition happens when marking volumes as attached for node status. This PR tries to clean up the logic of when and where to mark volumes as attached/detached. Basically the workflow as follows, 1. When volume is attached sucessfully, the volume and node info is added into nodesToUpdateStatusFor to mark the volume as attached to the node. 2. When detach request comes in, it will check whether it is safe to detach now. If the check passes, remove the volume from volumesToReportAsAttached to indicate the volume is no longer considered as attached now. Afterwards, reconciler tries to update node status and trigger detach operation. If any of these operation fails, the volume is added back to the volumesToReportAsAttached list showing that it is still attached. These steps should make sure that kubelet get the right (might be outdated) information about which volume is attached or not. It also garantees that if detach operation is pending, kubelet should not trigger any mount operations. |
||
---|---|---|
.. | ||
aws_ebs | ||
azure_dd | ||
azure_file | ||
cephfs | ||
cinder | ||
configmap | ||
downwardapi | ||
empty_dir | ||
fc | ||
flexvolume | ||
flocker | ||
gce_pd | ||
git_repo | ||
glusterfs | ||
host_path | ||
iscsi | ||
nfs | ||
quobyte | ||
rbd | ||
secret | ||
testing | ||
util | ||
vsphere_volume | ||
OWNERS | ||
doc.go | ||
metrics_cached.go | ||
metrics_du.go | ||
metrics_du_test.go | ||
metrics_nil.go | ||
metrics_nil_test.go | ||
metrics_statfs.go | ||
plugins.go | ||
plugins_test.go | ||
util.go | ||
util_test.go | ||
volume.go | ||
volume_linux.go | ||
volume_unsupported.go |