From dd13e9e7fe77b03a125b855042f544a4e74e25e3 Mon Sep 17 00:00:00 2001 From: lauk Date: Fri, 14 Jul 2023 15:18:58 +0800 Subject: [PATCH] add the evictPodForce configuration option --- .../operator/api/v1alpha1/update_types.go | 7 ++++--- .../config/crd/housekeeper.io_updates.yaml | 4 ++++ .../controllers/update_controller.go | 17 ++++++++--------- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/housekeeper/operator/api/v1alpha1/update_types.go b/housekeeper/operator/api/v1alpha1/update_types.go index 7351fd4..300e950 100644 --- a/housekeeper/operator/api/v1alpha1/update_types.go +++ b/housekeeper/operator/api/v1alpha1/update_types.go @@ -27,9 +27,10 @@ import ( type UpdateSpec struct { // INSERT ADDITIONAL SPEC FIELDS - desired state of cluster // Important: Run "make" to regenerate code after modifying this file - OSVersion string `json:"osVersion"` - OSImageURL string `json:"osImageURL"` - KubeVersion string `json:"kubeVersion"` + OSVersion string `json:"osVersion"` + OSImageURL string `json:"osImageURL"` + KubeVersion string `json:"kubeVersion"` + EvictPodForce bool `json:"evictPodForce"` } // UpdateStatus defines the observed state of Update diff --git a/housekeeper/operator/config/crd/housekeeper.io_updates.yaml b/housekeeper/operator/config/crd/housekeeper.io_updates.yaml index 53cf004..2938aa0 100644 --- a/housekeeper/operator/config/crd/housekeeper.io_updates.yaml +++ b/housekeeper/operator/config/crd/housekeeper.io_updates.yaml @@ -44,10 +44,14 @@ spec: osVersion: description: 'The version used to upgrade OS' type: string + evictPodForce: + description: 'If true, force evict the pod' + type: boolean required: - kubeVersion - osImageURL - osVersion + - evictPodForce type: object status: description: UpdateStatus defines the observed state of Update diff --git a/housekeeper/operator/housekeeper-controller/controllers/update_controller.go b/housekeeper/operator/housekeeper-controller/controllers/update_controller.go index 6546451..ea4e428 100644 --- a/housekeeper/operator/housekeeper-controller/controllers/update_controller.go +++ b/housekeeper/operator/housekeeper-controller/controllers/update_controller.go @@ -102,13 +102,15 @@ func (r *UpdateReconciler) upgradeNodes(ctx context.Context, upInstance *houseke drainer := &drain.Helper{ Ctx: ctx, Client: r.KubeClientSet, - Force: true, IgnoreAllDaemonSets: true, DeleteEmptyDirData: true, GracePeriodSeconds: -1, Out: os.Stdout, ErrOut: os.Stderr, } + if upInstance.Spec.EvictPodForce { + drainer.Force = true + } if err := drainNode(drainer, node); err != nil { return err } @@ -129,14 +131,11 @@ func (r *UpdateReconciler) refreshNodes(ctx context.Context, upInstance *houseke deleteLabel(ctx, r, node) if node.Spec.Unschedulable { drainer := &drain.Helper{ - Ctx: ctx, - Client: r.KubeClientSet, - Force: true, - IgnoreAllDaemonSets: true, - DeleteEmptyDirData: true, - GracePeriodSeconds: -1, - Out: os.Stdout, - ErrOut: os.Stderr, + Ctx: ctx, + Client: r.KubeClientSet, + GracePeriodSeconds: -1, + Out: os.Stdout, + ErrOut: os.Stderr, } if err := cordonOrUncordonNode(false, drainer, node); err != nil { logrus.Errorf("failed to uncordon node %s: %v", node.Name, err) -- Gitee