cleanup: print warning message after timeout

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>
This commit is contained in:
José Guilherme Vanz 2020-07-20 10:41:53 -03:00
parent 08ccbe6f0e
commit 5ebb1c3be2
No known key found for this signature in database
GPG Key ID: 53CE8868950F3638

View File

@ -23,6 +23,7 @@ import (
"syscall"
"os"
"time"
v1 "k8s.io/api/core/v1"
utilfeature "k8s.io/apiserver/pkg/util/feature"
@ -46,7 +47,10 @@ func SetVolumeOwnership(mounter Mounter, fsGroup *int64, fsGroupChangePolicy *v1
fsGroupPolicyEnabled := utilfeature.DefaultFeatureGate.Enabled(features.ConfigurableFSGroupPolicy)
klog.Warningf("Setting volume ownership for %s and fsGroup set. If the volume has a lot of files then setting volume ownership could be slow, see https://github.com/kubernetes/kubernetes/issues/69699", mounter.GetPath())
timer := time.AfterFunc(30*time.Second, func() {
klog.Warningf("Setting volume ownership for %s and fsGroup set. If the volume has a lot of files then setting volume ownership could be slow, see https://github.com/kubernetes/kubernetes/issues/69699", mounter.GetPath())
})
defer timer.Stop()
// This code exists for legacy purposes, so as old behaviour is entirely preserved when feature gate is disabled
// TODO: remove this when ConfigurableFSGroupPolicy turns GA.