-
Feature Request
-
Resolution: Unresolved
-
Major
-
None
-
None
-
None
-
Product / Portfolio Work
-
None
-
False
-
-
None
-
None
-
None
-
-
None
-
None
-
None
-
None
-
None
1. Proposed title of this feature request
Enable Tolerations support in NodePool API for KubeVirt Platform
2. What is the nature and description of the request?
The request is a functional enhancement to the hypershift.openshift.io API.
Currently, the NodePool specification for the KubeVirt platform allows users to define a nodeSelector under spec.platform.kubevirt. This allows KubeVirt Virtual Machines (which serve as the nodes for the Hosted Cluster) to be placed on specific management nodes. However, the API lacks a corresponding tolerations field.
In Kubernetes, nodeSelector and tolerations work in tandem. If a management node is "tainted" to reserve it for specific workloads, a pod (or in this case, a KubeVirt VM) cannot be scheduled on that node unless it has a matching toleration. This RFE proposes adding a tolerations field to the NodePool.spec.platform.kubevirt schema that propagates down to the underlying VirtualMachine objects.
3. Why does the customer need this? (List the business requirements here)
- Workload Isolation & Multi-tenancy: Customers running multiple Hosted Control Plane (HCP) clusters need to guarantee that Cluster A's nodes never share physical hardware with Cluster B. This is achieved by tainting nodes for specific tenants.
- Infrastructure Cost Management: Customers often designate "Infra Nodes" specifically for HCP workloads. To prevent regular application pods from "stealing" resources from these nodes, the nodes are tainted. Without tolerations support, HCP cannot utilize this dedicated infrastructure.
- Strict Scheduling Policy: Large enterprises often have security or compliance policies requiring that "Management" resources be strictly separated from "Data Plane" resources. Taints are the standard mechanism to enforce this; without tolerations, the KubeVirt-based NodePools remain in a Pending state indefinitely.
4. List any affected packages or components.
Hosted Control Plane
Additional Info:
oc explain np.spec.platform.kubevirt.nodeSelector GROUP: hypershift.openshift.io KIND: NodePool VERSION: v1beta1FIELD: nodeSelector <map[string]string> DESCRIPTION: NodeSelector is a selector which must be true for the kubevirt VirtualMachine to fit on a node. Selector which must match a node's labels for the VM to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/