From 5d7800f7fdf720c7fe31d0c2055c3082f6549e79 Mon Sep 17 00:00:00 2001 From: Moritz Sanft <58110325+msanft@users.noreply.github.com> Date: Tue, 21 May 2024 17:31:48 +0200 Subject: [PATCH] bootstrapper: only run disk prioritizer on control plane join --- bootstrapper/internal/kubernetes/BUILD.bazel | 1 + bootstrapper/internal/kubernetes/kubernetes.go | 16 +++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/bootstrapper/internal/kubernetes/BUILD.bazel b/bootstrapper/internal/kubernetes/BUILD.bazel index 935c3fefd..86ef3966e 100644 --- a/bootstrapper/internal/kubernetes/BUILD.bazel +++ b/bootstrapper/internal/kubernetes/BUILD.bazel @@ -31,6 +31,7 @@ go_test( srcs = ["kubernetes_test.go"], embed = [":kubernetes"], deps = [ + "//bootstrapper/internal/etcdio", "//bootstrapper/internal/kubernetes/k8sapi", "//bootstrapper/internal/kubernetes/kubewaiter", "//internal/cloud/metadata", diff --git a/bootstrapper/internal/kubernetes/kubernetes.go b/bootstrapper/internal/kubernetes/kubernetes.go index a2c2ec1e9..1081bfe30 100644 --- a/bootstrapper/internal/kubernetes/kubernetes.go +++ b/bootstrapper/internal/kubernetes/kubernetes.go @@ -263,13 +263,15 @@ func (k *KubeWrapper) JoinCluster(ctx context.Context, args *kubeadm.BootstrapTo return fmt.Errorf("joining cluster: %v; %w ", string(joinConfigYAML), err) } - k.log.Info("Prioritizing etcd I/O") - err = k.etcdIOPrioritizer.PrioritizeIO() - if errors.Is(err, etcdio.ErrNoEtcdProcess) { - k.log.Warn("Skipping etcd I/O prioritization as etcd process is not running. " + - "This is expected if this node is a non-control-plane node.") - } else if err != nil { - return fmt.Errorf("prioritizing etcd I/O: %w", err) + // If on control plane (and thus with etcd), try to prioritize etcd I/O. + if peerRole == role.ControlPlane { + k.log.Info("Prioritizing etcd I/O") + err = k.etcdIOPrioritizer.PrioritizeIO() + if errors.Is(err, etcdio.ErrNoEtcdProcess) { + k.log.Warn("No etcd process found, skipping I/O prioritization. Is this a single-node cluster?") + } else if err != nil { + return fmt.Errorf("prioritizing etcd I/O: %w", err) + } } return nil