From 789927333e11d3268d751bbd84ca728d84110411 Mon Sep 17 00:00:00 2001 From: Weihang Lo Date: Wed, 24 Nov 2021 17:19:18 +0800 Subject: [PATCH] Skip unreachable node during collecting NodeBundles We currently skip nodes with unavailable network and not ready kubelet. Nodes tainted with `node.kubernetes.io/unschedulable:NoSchedule` are tolerated. Signed-off-by: Weihang Lo --- pkg/manager/agent.go | 5 +++++ pkg/manager/manager.go | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/pkg/manager/agent.go b/pkg/manager/agent.go index 2f7193db..1ed26fbc 100644 --- a/pkg/manager/agent.go +++ b/pkg/manager/agent.go @@ -72,6 +72,11 @@ func (a *AgentDaemonSet) Create(image string, managerURL string) error { Key: types.DrainKey, Value: "scheduling", }, + { + Key: corev1.TaintNodeUnschedulable, + Operator: corev1.TolerationOpExists, + Effect: corev1.TaintEffectNoSchedule, + }, }, Containers: []corev1.Container{ { diff --git a/pkg/manager/manager.go b/pkg/manager/manager.go index 888a8879..424a7725 100644 --- a/pkg/manager/manager.go +++ b/pkg/manager/manager.go @@ -15,6 +15,7 @@ import ( "github.com/rancher/wrangler/pkg/signals" "github.com/sirupsen/logrus" + v1 "k8s.io/api/core/v1" "k8s.io/client-go/rest" "github.com/rancher/support-bundle-kit/pkg/manager/client" @@ -323,7 +324,21 @@ func (m *SupportBundleManager) refreshNodes() error { } m.expectedNodes = make(map[string]string) + +NODE_LOOP: for _, node := range nodes.Items { + for _, cond := range node.Status.Conditions { + switch cond.Type { + case v1.NodeReady: + if cond.Status != v1.ConditionTrue { + continue NODE_LOOP + } + case v1.NodeNetworkUnavailable: + if cond.Status == v1.ConditionTrue { + continue NODE_LOOP + } + } + } m.expectedNodes[node.Name] = "" }