Skip to content

Commit ea961d6

Browse files
authored
Merge pull request #1340 from mtulio/e2e-fix-unscheduled-nodes
e2e/loadbalancer: fix e2e by skipping unscheduled nodes on discovery
2 parents b6c9d76 + b3040e8 commit ea961d6

3 files changed

Lines changed: 42 additions & 21 deletions

File tree

go.mod

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ require (
4242
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect
4343
github.com/kylelemons/godebug v1.1.0 // indirect
4444
github.com/prometheus/client_golang v1.23.2 // indirect
45-
go.opentelemetry.io/auto/sdk v1.1.0 // indirect
45+
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
4646
go.yaml.in/yaml/v2 v2.4.3 // indirect
4747
go.yaml.in/yaml/v3 v3.0.4 // indirect
4848
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
@@ -114,12 +114,12 @@ require (
114114
go.etcd.io/etcd/client/v3 v3.6.5 // indirect
115115
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect
116116
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect
117-
go.opentelemetry.io/otel v1.36.0 // indirect
117+
go.opentelemetry.io/otel v1.40.0 // indirect
118118
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 // indirect
119119
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 // indirect
120-
go.opentelemetry.io/otel/metric v1.36.0 // indirect
121-
go.opentelemetry.io/otel/sdk v1.36.0 // indirect
122-
go.opentelemetry.io/otel/trace v1.36.0 // indirect
120+
go.opentelemetry.io/otel/metric v1.40.0 // indirect
121+
go.opentelemetry.io/otel/sdk v1.40.0 // indirect
122+
go.opentelemetry.io/otel/trace v1.40.0 // indirect
123123
go.opentelemetry.io/proto/otlp v1.5.0 // indirect
124124
go.uber.org/multierr v1.11.0 // indirect
125125
go.uber.org/zap v1.27.0 // indirect
@@ -129,7 +129,7 @@ require (
129129
golang.org/x/net v0.47.0 // indirect
130130
golang.org/x/oauth2 v0.30.0 // indirect
131131
golang.org/x/sync v0.18.0
132-
golang.org/x/sys v0.38.0 // indirect
132+
golang.org/x/sys v0.40.0 // indirect
133133
golang.org/x/term v0.37.0 // indirect
134134
golang.org/x/text v0.31.0 // indirect
135135
golang.org/x/tools v0.38.0 // indirect

go.sum

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -248,26 +248,26 @@ go.etcd.io/etcd/server/v3 v3.6.5 h1:4RbUb1Bd4y1WkBHmuF+cZII83JNQMuNXzyjwigQ06y0=
248248
go.etcd.io/etcd/server/v3 v3.6.5/go.mod h1:PLuhyVXz8WWRhzXDsl3A3zv/+aK9e4A9lpQkqawIaH0=
249249
go.etcd.io/raft/v3 v3.6.0 h1:5NtvbDVYpnfZWcIHgGRk9DyzkBIXOi8j+DDp1IcnUWQ=
250250
go.etcd.io/raft/v3 v3.6.0/go.mod h1:nLvLevg6+xrVtHUmVaTcTz603gQPHfh7kUAwV6YpfGo=
251-
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
252-
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
251+
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
252+
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
253253
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw=
254254
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM=
255255
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus=
256256
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q=
257-
go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg=
258-
go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E=
257+
go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms=
258+
go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g=
259259
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60=
260260
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM=
261261
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0 h1:tgJ0uaNS4c98WRNUEx5U3aDlrDOI5Rs+1Vifcw4DJ8U=
262262
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.34.0/go.mod h1:U7HYyW0zt/a9x5J1Kjs+r1f/d4ZHnYFclhYY2+YbeoE=
263-
go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE=
264-
go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs=
265-
go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs=
266-
go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY=
267-
go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis=
268-
go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4=
269-
go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w=
270-
go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA=
263+
go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g=
264+
go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc=
265+
go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8=
266+
go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE=
267+
go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw=
268+
go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg=
269+
go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw=
270+
go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA=
271271
go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4=
272272
go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4=
273273
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
@@ -308,8 +308,8 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h
308308
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
309309
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
310310
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
311-
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
312-
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
311+
golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ=
312+
golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
313313
golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU=
314314
golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254=
315315
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

tests/e2e/loadbalancer.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,22 @@ func (e2e *e2eTestConfig) buildDeployment(affinity bool) func(deployment *appsv1
557557
}
558558
}
559559

560+
// isNodeSchedulable checks if a node is schedulable by checking if it has any taints that prevent scheduling pods.
561+
func (e2e *e2eTestConfig) isNodeSchedulable(node *v1.Node) bool {
562+
if node == nil {
563+
return false
564+
}
565+
if len(node.Spec.Taints) == 0 {
566+
return true
567+
}
568+
for _, taint := range node.Spec.Taints {
569+
if node.Spec.Unschedulable || taint.Effect == v1.TaintEffectNoSchedule || taint.Effect == v1.TaintEffectNoExecute {
570+
return false
571+
}
572+
}
573+
return true
574+
}
575+
560576
// discoverClusterWorkerNode identifies and selects worker nodes in the cluster based on predefined node label selectors.
561577
// It returns a ClusterNodeDiscovery struct with the discovered information.
562578
func (e2e *e2eTestConfig) discoverClusterWorkerNode() {
@@ -568,7 +584,12 @@ func (e2e *e2eTestConfig) discoverClusterWorkerNode() {
568584
})
569585
framework.ExpectNoError(err, "failed to list worker nodes")
570586
if len(nodeList.Items) > 0 {
571-
for _, node := range nodeList.Items {
587+
for i := range nodeList.Items {
588+
node := &nodeList.Items[i]
589+
if !e2e.isNodeSchedulable(node) {
590+
framework.Logf("skipping node %s because it has taints: %v", node.Name, node.Spec.Taints)
591+
continue
592+
}
572593
workerNodeList = append(workerNodeList, node.Name)
573594
}
574595
// Save the first worker node in the list to be used in cases.

0 commit comments

Comments
 (0)