You can specify node placement rules for a {VirtProductName} component by editing a Subscription, HyperConverged, or HostPathProvisioner object.
-
To specify the nodes where {VirtProductName} deploys its components, you can edit the
HyperConvergedcustom resource (CR).Example
HyperConvergedobject withnodeSelectorrule:apiVersion: hco.kubevirt.io/v1beta1 kind: HyperConverged metadata: name: kubevirt-hyperconverged namespace: {CNVNamespace} spec: infra: nodePlacement: nodeSelector: example.io/example-infra-key: example-infra-value workloads: nodePlacement: nodeSelector: example.io/example-workloads-key: example-workloads-value
In this example:
-
Infrastructure resources are placed on nodes labeled
example.io/example-infra-key = example-infra-value. -
Workloads are placed on nodes labeled
example.io/example-workloads-key = example-workloads-value.
-
Example HyperConverged object with affinity rule:
apiVersion: hco.kubevirt.io/v1beta1
kind: HyperConverged
metadata:
name: kubevirt-hyperconverged
namespace: {CNVNamespace}
spec:
infra:
nodePlacement:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: example.io/example-infra-key
operator: In
values:
- example-infra-value
workloads:
nodePlacement:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: example.io/example-workloads-key
operator: In
values:
- example-workloads-value
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: example.io/num-cpus
operator: Gt
values:
- 8-
Infrastructure resources are placed on nodes labeled
example.io/example-infra-key = example-value. -
Workloads are placed on nodes labeled
example.io/example-workloads-key = example-workloads-value. -
Nodes that have more than eight CPUs are preferred for workloads, but if they are not available, pods are still scheduled.
Example HyperConverged object with tolerations rule:
apiVersion: hco.kubevirt.io/v1beta1
kind: HyperConverged
metadata:
name: kubevirt-hyperconverged
namespace: {CNVNamespace}
spec:
workloads:
nodePlacement:
tolerations:
- key: "key"
operator: "Equal"
value: "virtualization"
effect: "NoSchedule"Nodes reserved for {VirtProductName} components are labeled with the key = virtualization:NoSchedule taint. Only pods with matching tolerations are scheduled on reserved nodes.