From 61fe071f1f4860caaf396cbb9cc75029cc9d132a Mon Sep 17 00:00:00 2001 From: Cheng Xing Date: Thu, 17 Aug 2017 19:51:49 -0700 Subject: [PATCH] Added notes regarding symlinked directories; updated deployment script to ensure atomicity of driver replacement --- contributors/design-proposals/flexvolume-deployment.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/contributors/design-proposals/flexvolume-deployment.md b/contributors/design-proposals/flexvolume-deployment.md index 80e86308a17..09d3d0c480a 100644 --- a/contributors/design-proposals/flexvolume-deployment.md +++ b/contributors/design-proposals/flexvolume-deployment.md @@ -32,7 +32,9 @@ Iterating through the list of plugins inside `InitPlugins()` from `volume/plugin Because Flexvolume has two separate plugin instantiations (attachable and non-attachable), it's worth considering the case when a driver that implements attach/detach is replaced with a driver that does not, or vice versa. This does not cause an issue because plugins are recreated every time the driver directory is changed. -There is a possibility that a Flexvolume command execution occurs at the same time as the DaemonSet updates the driver, which leads to a bad execution. This cannot be solved within the Kubernetes system without an overhaul. Instead, this is discussed in [Atomic Driver Installation](#atomic-driver-installation) as part of the deployment mechanism. As part of the solution, the Prober will ignore all files that begins with "." in the driver directory. +There is a possibility that a Flexvolume command execution occurs at the same time as the DaemonSet updates the driver, which leads to a bad execution. This cannot be solved within the Kubernetes system without an overhaul. Instead, this is discussed in [Atomic Driver Installation](#atomic-driver-installation) as part of the deployment mechanism. As part of the solution, the Prober will **ignore all files that begins with "."** in the driver directory. + +Word of caution about symlinks in the Flexvolume plugin directory: as a result of the recursive filesystem watch implementation, if a symlink links to a directory, unless the directory is visible to the prober (i.e. it's inside the Flexvolume plugin directory and does not start with '.'), the directory's files and subdirectories are not added to filesystem watch, thus their change will not trigger a probe. ## **Alternative Designs** @@ -102,6 +104,8 @@ set -o pipefail VENDOR=k8s.io DRIVER=nfs +# Assuming the single driver file is located at /$DRIVER inside the DaemonSet image. + driver_dir=$VENDOR${VENDOR:+"~"}${DRIVER} if [ ! -d "/flexmnt/$driver_dir" ]; then mkdir "/flexmnt/$driver_dir"