Fix controller policy and improve logging of related errors

Improve error logging from timed workers which are used for pod eviction

Co-authored-by: Aldo Culquicondor <1299064+alculquicondor@users.noreply.github.com>
This commit is contained in:
Michal Wozniak 2022-09-22 17:44:52 +02:00
parent 91a9ce28ac
commit bb561e0324
2 changed files with 9 additions and 2 deletions

View File

@ -52,11 +52,17 @@ type TimedWorker struct {
// createWorker creates a TimedWorker that will execute `f` not earlier than `fireAt`.
func createWorker(ctx context.Context, args *WorkArgs, createdAt time.Time, fireAt time.Time, f func(ctx context.Context, args *WorkArgs) error, clock clock.WithDelayedExecution) *TimedWorker {
delay := fireAt.Sub(createdAt)
fWithErrorLogging := func() {
err := f(ctx, args)
if err != nil {
klog.Errorf("NodeLifecycle: timed worker failed with error: %q", err)
}
}
if delay <= 0 {
go f(ctx, args)
go fWithErrorLogging()
return nil
}
timer := clock.AfterFunc(delay, func() { f(ctx, args) })
timer := clock.AfterFunc(delay, fWithErrorLogging)
return &TimedWorker{
WorkItem: args,
CreatedAt: createdAt,

View File

@ -255,6 +255,7 @@ func buildControllerRoles() ([]rbacv1.ClusterRole, []rbacv1.ClusterRoleBinding)
},
}
if utilfeature.DefaultFeatureGate.Enabled(features.PodDisruptionConditions) {
role.Rules = append(role.Rules, rbacv1helpers.NewRule("get").Groups(legacyGroup).Resources("pods").RuleOrDie())
role.Rules = append(role.Rules, rbacv1helpers.NewRule("patch").Groups(legacyGroup).Resources("pods/status").RuleOrDie())
}
return role