@@ -71,46 +71,7 @@ func NewMiniClusterJob(cluster *api.MiniCluster) (*batchv1.Job, error) {
71
71
ImagePullSecrets : getImagePullSecrets (cluster ),
72
72
ServiceAccountName : cluster .Spec .Pod .ServiceAccountName ,
73
73
NodeSelector : cluster .Spec .Pod .NodeSelector ,
74
- Affinity : & corev1.Affinity {
75
- // Prefer to schedule pods on the same zone
76
- PodAffinity : & corev1.PodAffinity {
77
- PreferredDuringSchedulingIgnoredDuringExecution : []corev1.WeightedPodAffinityTerm {
78
- {
79
- PodAffinityTerm : corev1.PodAffinityTerm {
80
- LabelSelector : & metav1.LabelSelector {
81
- MatchExpressions : []metav1.LabelSelectorRequirement {
82
- {
83
- Key : podLabelAppName , // added in getPodLabels
84
- Operator : metav1 .LabelSelectorOpIn ,
85
- Values : []string {cluster .Name },
86
- },
87
- },
88
- },
89
- TopologyKey : "topology.kubernetes.io/zone" ,
90
- },
91
- },
92
- },
93
- },
94
- // Prefer to schedule pods on different nodes
95
- PodAntiAffinity : & corev1.PodAntiAffinity {
96
- PreferredDuringSchedulingIgnoredDuringExecution : []corev1.WeightedPodAffinityTerm {
97
- {
98
- PodAffinityTerm : corev1.PodAffinityTerm {
99
- LabelSelector : & metav1.LabelSelector {
100
- MatchExpressions : []metav1.LabelSelectorRequirement {
101
- {
102
- Key : podLabelAppName , // added in getPodLabels
103
- Operator : metav1 .LabelSelectorOpIn ,
104
- Values : []string {cluster .Name },
105
- },
106
- },
107
- },
108
- TopologyKey : "kubernetes.io/hostname" ,
109
- },
110
- },
111
- },
112
- },
113
- },
74
+ Affinity : getAffinity (cluster ),
114
75
},
115
76
},
116
77
},
@@ -137,6 +98,54 @@ func NewMiniClusterJob(cluster *api.MiniCluster) (*batchv1.Job, error) {
137
98
return job , err
138
99
}
139
100
101
+ // getAffinity returns to pod affinity to ensure 1 address / node
102
+ func getAffinity (cluster * api.MiniCluster ) * corev1.Affinity {
103
+ return & corev1.Affinity {
104
+ // Prefer to schedule pods on the same zone
105
+ PodAffinity : & corev1.PodAffinity {
106
+ PreferredDuringSchedulingIgnoredDuringExecution : []corev1.WeightedPodAffinityTerm {
107
+ {
108
+ Weight : 100 ,
109
+ PodAffinityTerm : corev1.PodAffinityTerm {
110
+ LabelSelector : & metav1.LabelSelector {
111
+ MatchExpressions : []metav1.LabelSelectorRequirement {
112
+ {
113
+ // added in getPodLabels
114
+ Key : podLabelAppName ,
115
+ Operator : metav1 .LabelSelectorOpIn ,
116
+ Values : []string {cluster .Name },
117
+ },
118
+ },
119
+ },
120
+ TopologyKey : "topology.kubernetes.io/zone" ,
121
+ },
122
+ },
123
+ },
124
+ },
125
+ // Prefer to schedule pods on different nodes
126
+ PodAntiAffinity : & corev1.PodAntiAffinity {
127
+ PreferredDuringSchedulingIgnoredDuringExecution : []corev1.WeightedPodAffinityTerm {
128
+ {
129
+ Weight : 100 ,
130
+ PodAffinityTerm : corev1.PodAffinityTerm {
131
+ LabelSelector : & metav1.LabelSelector {
132
+ MatchExpressions : []metav1.LabelSelectorRequirement {
133
+ {
134
+ // added in getPodLabels
135
+ Key : podLabelAppName ,
136
+ Operator : metav1 .LabelSelectorOpIn ,
137
+ Values : []string {cluster .Name },
138
+ },
139
+ },
140
+ },
141
+ TopologyKey : "kubernetes.io/hostname" ,
142
+ },
143
+ },
144
+ },
145
+ },
146
+ }
147
+ }
148
+
140
149
// getImagePullSecrets returns a list of secret object references for each container.
141
150
func getImagePullSecrets (cluster * api.MiniCluster ) []corev1.LocalObjectReference {
142
151
pullSecrets := []corev1.LocalObjectReference {}
0 commit comments