Skip to content

Latest commit

 

History

History
113 lines (103 loc) · 3.66 KB

File metadata and controls

113 lines (103 loc) · 3.66 KB

Node placement rule examples

You can specify node placement rules for a {VirtProductName} component by editing a Subscription, HyperConverged, or HostPathProvisioner object.

HyperConverged object node placement rule example

  1. To specify the nodes where {VirtProductName} deploys its components, you can edit the HyperConverged custom resource (CR).

    Example HyperConverged object with nodeSelector rule:

    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.