KOTS provides the framework, tools and integrations that enable the delivery and management of 3rd-party Kubernetes applications, a.k.a. Kubernetes Off-The-Shelf (KOTS) Software.
Kots has some NodeAffinity criteria implementations which require the label node-role.kubernetes.io/masterwhich does not necessarily exist for all K8s vendors. Therefore, this issue is to propose a suggestion for replacing RequiredDuringSchedulingIgnoredDuringExecution with preferredDuringSchedulingIgnoredDuringExecution so that it still be able to be scheduled with/when is not possible to match but ensure its preference which would allow work on more vendors by default. You can check the k8s doc for further info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity.
Description
Kots has some NodeAffinity criteria implementations which require the label
node-role.kubernetes.io/master
which does not necessarily exist for all K8s vendors. Therefore, this issue is to propose a suggestion for replacingRequiredDuringSchedulingIgnoredDuringExecution
withpreferredDuringSchedulingIgnoredDuringExecution
so that it still be able to be scheduled with/when is not possible to match but ensure its preference which would allow work on more vendors by default. You can check the k8s doc for further info: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity.See the code spot: https://github.com/replicatedhq/kots/blob/c597a4aebbf5caead94419b860c3d2311146d702/pkg/kurl/join_cert.go#L208-L229
Motivation
Note that Kind for example will not have this label: (Following an example with a default basic config)
(i.e.) Kind cluster with 3 nodes created with the following config (kind v0.16.0 / k8s 1.25.2)
See that we have not
node-role.kubernetes.io/master
label