Skip to content

Commit bef30d9

Browse files
author
Shoaeb Jindani
committed
Added Check for Zone Before applying affinity
Signed-off-by: Shoaeb Jindani <jindani.shoaeb@ibm.com>
1 parent 23dc1e6 commit bef30d9

File tree

1 file changed

+27
-9
lines changed

1 file changed

+27
-9
lines changed

pkg/k8sbuilder/server.go

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ import (
5252
type Server struct {
5353
SecretClient corev1.SecretInterface
5454
PodClient corev1.PodInterface
55+
NodeClient corev1.NodeInterface
5556
SharedPath string
5657
FSBaseURL string
5758
FileTransferImage string
@@ -475,19 +476,22 @@ func (b *Server) runPodDefinition(runContainer v1.Container, runMetadata *runMet
475476
Controller: &boolTrue,
476477
}
477478

478-
affinity := &v1.Affinity{
479-
PodAffinity: &v1.PodAffinity{
480-
RequiredDuringSchedulingIgnoredDuringExecution: []v1.PodAffinityTerm{
481-
{
482-
LabelSelector: &metav1.LabelSelector{
483-
MatchLabels: map[string]string{
484-
"app": b.PeerID,
479+
var affinity *v1.Affinity = nil
480+
if b.hasZoneLabels() {
481+
affinity = &v1.Affinity{
482+
PodAffinity: &v1.PodAffinity{
483+
RequiredDuringSchedulingIgnoredDuringExecution: []v1.PodAffinityTerm{
484+
{
485+
LabelSelector: &metav1.LabelSelector{
486+
MatchLabels: map[string]string{
487+
"app": b.PeerID,
488+
},
485489
},
490+
TopologyKey: "topology.kubernetes.io/zone",
486491
},
487-
TopologyKey: "topology.kubernetes.io/zone",
488492
},
489493
},
490-
},
494+
}
491495
}
492496

493497
return &v1.Pod{
@@ -547,6 +551,20 @@ func (b *Server) runPodDefinition(runContainer v1.Container, runMetadata *runMet
547551
}
548552
}
549553

554+
func (b *Server) hasZoneLabels() bool {
555+
nodes, err := b.NodeClient.List(context.TODO(), metav1.ListOptions{})
556+
if err != nil {
557+
// If API call fails, better to assume zone labels are absent
558+
return false
559+
}
560+
for _, node := range nodes.Items {
561+
if _, ok := node.Labels["topology.kubernetes.io/zone"]; ok {
562+
return true
563+
}
564+
}
565+
return false
566+
}
567+
550568
func (b *Server) runContainerDefinition(ccType string, rmd *runMetadata) (v1.Container, error) {
551569
switch strings.ToLower(ccType) {
552570
case "golang":

0 commit comments

Comments
 (0)