in pkg/manifests/common.go [133:182]
func WithPreferSystemNodes(spec *corev1.PodSpec) *corev1.PodSpec {
copy := spec.DeepCopy()
copy.PriorityClassName = "system-cluster-critical"
copy.Tolerations = append(copy.Tolerations, corev1.Toleration{
Key: "CriticalAddonsOnly",
Operator: corev1.TolerationOpExists,
})
if copy.Affinity == nil {
copy.Affinity = &corev1.Affinity{}
}
if copy.Affinity.NodeAffinity == nil {
copy.Affinity.NodeAffinity = &corev1.NodeAffinity{}
}
copy.Affinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution = append(copy.Affinity.NodeAffinity.PreferredDuringSchedulingIgnoredDuringExecution, corev1.PreferredSchedulingTerm{
Weight: 100,
Preference: corev1.NodeSelectorTerm{
MatchExpressions: []corev1.NodeSelectorRequirement{{
Key: "kubernetes.azure.com/mode",
Operator: corev1.NodeSelectorOpIn,
Values: []string{"system"},
}},
},
})
if copy.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution == nil {
copy.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution = &corev1.NodeSelector{}
}
copy.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms = append(copy.Affinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms, corev1.NodeSelectorTerm{
MatchExpressions: []corev1.NodeSelectorRequirement{
{
Key: "kubernetes.azure.com/cluster",
Operator: corev1.NodeSelectorOpExists,
},
{
Key: "type",
Operator: corev1.NodeSelectorOpNotIn,
Values: []string{"virtual-kubelet"},
},
{
Key: "kubernetes.io/os",
Operator: corev1.NodeSelectorOpIn,
Values: []string{"linux"},
},
},
})
return copy
}