@@ -22,18 +22,18 @@ import (
22
22
"path/filepath"
23
23
"strings"
24
24
25
- "k8s.io/api/core/v1"
25
+ v1 "k8s.io/api/core/v1"
26
26
"k8s.io/apimachinery/pkg/util/sets"
27
27
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
28
28
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
29
29
staticpodutil "k8s.io/kubernetes/cmd/kubeadm/app/util/staticpod"
30
30
)
31
31
32
32
const (
33
- caCertsVolumeName = "ca-certs"
34
- caCertsVolumePath = "/etc/ssl/certs"
35
- flexvolumeDirVolumeName = "flexvolume-dir"
36
- flexvolumeDirVolumePath = "/usr/libexec/kubernetes/kubelet-plugins/volume/exec"
33
+ caCertsVolumeName = "ca-certs"
34
+ caCertsVolumePath = "/etc/ssl/certs"
35
+ flexvolumeDirVolumeName = "flexvolume-dir"
36
+ defaultFlexvolumeDirVolumePath = "/usr/libexec/kubernetes/kubelet-plugins/volume/exec"
37
37
)
38
38
39
39
// caCertsExtraVolumePaths specifies the paths that can be conditionally mounted into the apiserver and controller-manager containers
@@ -69,11 +69,13 @@ func getHostPathVolumesForTheControlPlane(cfg *kubeadmapi.ClusterConfiguration)
69
69
// Read-only mount for the controller manager kubeconfig file
70
70
controllerManagerKubeConfigFile := filepath .Join (kubeadmconstants .KubernetesDir , kubeadmconstants .ControllerManagerKubeConfigFileName )
71
71
mounts .NewHostPathMount (kubeadmconstants .KubeControllerManager , kubeadmconstants .KubeConfigVolumeName , controllerManagerKubeConfigFile , controllerManagerKubeConfigFile , true , & hostPathFileOrCreate )
72
- // Mount for the flexvolume directory (/usr/libexec/kubernetes/kubelet-plugins/volume/exec) directory
72
+ // Mount for the flexvolume directory (/usr/libexec/kubernetes/kubelet-plugins/volume/exec by default)
73
73
// Flexvolume dir must NOT be readonly as it is used for third-party plugins to integrate with their storage backends via unix domain socket.
74
- if stat , err := os .Stat (flexvolumeDirVolumePath ); err == nil && stat .IsDir () {
75
- mounts .NewHostPathMount (kubeadmconstants .KubeControllerManager , flexvolumeDirVolumeName , flexvolumeDirVolumePath , flexvolumeDirVolumePath , false , & hostPathDirectoryOrCreate )
74
+ flexvolumeDirVolumePath , ok := cfg .ControllerManager .ExtraArgs ["flex-volume-plugin-dir" ]
75
+ if ! ok {
76
+ flexvolumeDirVolumePath = defaultFlexvolumeDirVolumePath
76
77
}
78
+ mounts .NewHostPathMount (kubeadmconstants .KubeControllerManager , flexvolumeDirVolumeName , flexvolumeDirVolumePath , flexvolumeDirVolumePath , false , & hostPathDirectoryOrCreate )
77
79
78
80
// HostPath volumes for the scheduler
79
81
// Read-only mount for the scheduler kubeconfig file
0 commit comments