In most cases `dir` arg of `SetUpAt()` method of `volume.Mounter` interface is the same as `mounter.GetPath()` because we usually call `SetUpAt()` from `SetUp()` like this:"
```
func (ed *emptyDir) SetUp(mounterArgs volume.MounterArgs) error {
return ed.SetUpAt(ed.GetPath(), mounterArgs)
}
```
(this example is from `volume/emptydir/empty_dir.go`, but there are plenty other examples like that in `volume/*`)
However, there is currently one exception. This is from `volume/projected/projected.go`:
```
if err := wrapped.SetUpAt(dir, mounterArgs); err != nil {
return err
}
```
(see 96306f144a/pkg/volume/projected/projected.go (L203))
In this case `dir` is not equal to `wrapped.GetPath()` and `volume.SetVolumeOwnership()` fails when called from `SetUpAt()` of wrapped volume:
```
lstat /var/lib/kubelet/pods/a2f6e58f-7edf-4c48-a97c-ef1b8fd3caf6/volumes/kubernetes.io~empty-dir/wrapped_kube-api-access-knvkv: no such file or directory
```
To fix the issue let's pass `dir` arg to `volume.SetVolumeOwnership()` explicitly, and use it instead of `mounter.GetPath()`.
This commit uses Lchown instead of Chown to change the owner of symlinks too.
It doesn't change any behaviour. However, it could avoid some confusions as the
symlinks are updated to the correct owner too.
If a pod has a configmap/secret volume an annoying message shows up
in the log approximately every 70 seconds. This happens because the
desiredStateOfWorldPopulator sync loop always call the
MarkRemountRequired. The function finds the volume plugin and check
if the plugin requires mount. Configmap and secret plugins always
returns true for that. Thus, the reconciler code of the volume manager
remounts the volume every time. This commit change the SetVolumeOwnership
to print the warning only if the function does not finish within 30
seconds.
Signed-off-by: José Guilherme Vanz <jguilhermevanz@suse.com>
If a pod has a configmap/secret volume an annoying message shows up
in the log approximately every 70 seconds. This happens because the
desiredStateOfWorldPopulator sync loop always call the
MarkRemountRequired. The function finds the volume plugin and check
if the plugin requires mount. Configmap and secret plugins always
returns true for that. Thus, the reconciler code of the volume manager
remounts the volume every time. This commit decrease the log level of
that message in the mount function from warning to V4.
Signed-off-by: José Guilherme Vanz <jguilhermevanz@suse.com>
- Move from the old github.com/golang/glog to k8s.io/klog
- klog as explicit InitFlags() so we add them as necessary
- we update the other repositories that we vendor that made a similar
change from glog to klog
* github.com/kubernetes/repo-infra
* k8s.io/gengo/
* k8s.io/kube-openapi/
* github.com/google/cadvisor
- Entirely remove all references to glog
- Fix some tests by explicit InitFlags in their init() methods
Change-Id: I92db545ff36fcec83afe98f550c9e630098b3135
Directories in volumes are set S_ISGID to ensure files created inside
them inherit group ownership. Currently, files are also set S_ISGID
however this is not relevant to the original intent, and indicates
'mandatory file locking' (stat(2)).
With this commit, only directories are set S_ISGID.