From de2d00fb3f0dc69d762a60ae286aff6ecc855fcd Mon Sep 17 00:00:00 2001 From: Thomas Philipona Date: Sat, 28 Sep 2024 10:14:56 +0200 Subject: [PATCH 1/3] Lab 4 restructure and tolerations --- .../cloud-init.md | 14 ++++++- .../ignition.md | 12 +++++- .../common-instancetypes.md | 33 +++++++++------- .../create-instancetype.md | 36 ++++------------- .../reassign-instancetype.md | 39 ++++++++++++++++--- go.sum | 2 + 6 files changed, 84 insertions(+), 52 deletions(-) diff --git a/content/en/docs/initialize-vms-with-startup-scripts/cloud-init.md b/content/en/docs/initialize-vms-with-startup-scripts/cloud-init.md index 8aeebe1..7df7e0c 100644 --- a/content/en/docs/initialize-vms-with-startup-scripts/cloud-init.md +++ b/content/en/docs/initialize-vms-with-startup-scripts/cloud-init.md @@ -204,6 +204,11 @@ spec: networks: - name: default pod: {} + tolerations: + - effect: NoSchedule + key: baremetal + operator: Equal + value: "true" volumes: - name: containerdisk containerDisk: @@ -245,6 +250,11 @@ spec: networks: - name: default pod: {} + tolerations: + - effect: NoSchedule + key: baremetal + operator: Equal + value: "true" volumes: - name: containerdisk containerDisk: @@ -258,7 +268,7 @@ spec: Make sure you create your VM with: ```bash -kubectl create -f {{% param "labsfoldername" %}}/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}/vm_{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-cloudinit.yaml --namespace=$USER +kubectl apply -f {{% param "labsfoldername" %}}/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}/vm_{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-cloudinit.yaml --namespace=$USER ``` Start the VM and verify whether logging in with the defined user and password works as expected. @@ -353,7 +363,7 @@ http { ``` {{% details title="Solution" %}} -Your cloud-init configuration will look like this: +Your cloud-init configuration (`cloudinit-userdata.yaml`) will look like this: ```yaml #cloud-config password: kubevirt diff --git a/content/en/docs/initialize-vms-with-startup-scripts/ignition.md b/content/en/docs/initialize-vms-with-startup-scripts/ignition.md index 4e9cc6c..cb8a7ac 100644 --- a/content/en/docs/initialize-vms-with-startup-scripts/ignition.md +++ b/content/en/docs/initialize-vms-with-startup-scripts/ignition.md @@ -150,6 +150,11 @@ spec: networks: - name: default pod: {} + tolerations: + - effect: NoSchedule + key: baremetal + operator: Equal + value: "true" volumes: - name: containerdisk containerDisk: @@ -190,6 +195,11 @@ spec: networks: - name: default pod: {} + tolerations: + - effect: NoSchedule + key: baremetal + operator: Equal + value: "true" volumes: - name: containerdisk containerDisk: @@ -203,7 +213,7 @@ spec: Create your VM with: ```bash -kubectl create -f {{% param "labsfoldername" %}}/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}/vm_{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-ignition.yaml --namespace=$USER +kubectl apply -f {{% param "labsfoldername" %}}/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}/vm_{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-ignition.yaml --namespace=$USER ``` Start the VM and verify whether logging in with the defined user and password works as expected. diff --git a/content/en/docs/instance-types-and-preferences/common-instancetypes.md b/content/en/docs/instance-types-and-preferences/common-instancetypes.md index 5bc2dab..c0dbf22 100644 --- a/content/en/docs/instance-types-and-preferences/common-instancetypes.md +++ b/content/en/docs/instance-types-and-preferences/common-instancetypes.md @@ -335,15 +335,18 @@ Deploy two VMs with different instance types: * Deploy a cirros VM using an `o` class instancetype and the same preference. * rite the VM specification in `{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros.yaml` -{{% onlyWhenNot tolerations %}} -{{% details title="Task Hint: Solution" %}} +{{% alert title="Tolerations" color="warning" %}} +Don't forget the `tolerations` from the setup chapter to make sure the VM will be scheduled on one of the baremetal nodes. +{{% /alert %}} + +{{% details title="Solution" %}} `{{% param "labsfoldername" %}}/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}/vm_{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros.yaml` specification: ```yaml apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: - name: u1-cirros + name: {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros spec: running: false instancetype: @@ -356,7 +359,7 @@ spec: metadata: labels: kubevirt.io/size: nano - kubevirt.io/domain: u1-cirros + kubevirt.io/domain: {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros spec: domain: devices: @@ -383,7 +386,7 @@ spec: apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: - name: o1-cirros + name: {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros spec: running: false instancetype: @@ -396,7 +399,7 @@ spec: metadata: labels: kubevirt.io/size: nano - kubevirt.io/domain: o1-cirros + kubevirt.io/domain: {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros spec: domain: devices: @@ -423,13 +426,13 @@ spec: Don't forget the `tolerations` from the setup chapter to make sure the VM will be scheduled on one of the baremetal nodes. {{% /alert %}} -{{% details title="Task Hint: Solution" %}} +{{% details title="Solution" %}} `{{% param "labsfoldername" %}}/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}/vm_{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros.yaml` specification: ```yaml apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: - name: u1-cirros + name: {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros spec: running: false instancetype: @@ -442,7 +445,7 @@ spec: metadata: labels: kubevirt.io/size: nano - kubevirt.io/domain: u1-cirros + kubevirt.io/domain: {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros spec: domain: devices: @@ -474,7 +477,7 @@ spec: apiVersion: kubevirt.io/v1 kind: VirtualMachine metadata: - name: o1-cirros + name: {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros spec: running: false instancetype: @@ -487,7 +490,7 @@ spec: metadata: labels: kubevirt.io/size: nano - kubevirt.io/domain: o1-cirros + kubevirt.io/domain: {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros spec: domain: devices: @@ -519,10 +522,10 @@ spec: Apply and start both VMs with ```bash -kubectl apply -f {{% param "labsfoldername" %}}/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}/vm_u1-cirros.yaml --namespace=$USER -kubectl apply -f {{% param "labsfoldername" %}}/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}/vm_o1-cirros.yaml --namespace=$USER -virtctl start u1-cirros -virtctl start o1-cirros +kubectl apply -f {{% param "labsfoldername" %}}/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}/vm_{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros.yaml --namespace=$USER +kubectl apply -f {{% param "labsfoldername" %}}/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}/vm_{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros.yaml --namespace=$USER +virtctl start {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros +virtctl start {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros ``` {{% /details %}} diff --git a/content/en/docs/instance-types-and-preferences/create-instancetype.md b/content/en/docs/instance-types-and-preferences/create-instancetype.md index 9f1b490..df30e53 100644 --- a/content/en/docs/instance-types-and-preferences/create-instancetype.md +++ b/content/en/docs/instance-types-and-preferences/create-instancetype.md @@ -29,7 +29,7 @@ Your Instancetype should look like this (labels and annotations are optional): apiVersion: instancetype.kubevirt.io/v1beta1 kind: VirtualMachineInstancetype metadata: - name: lab04-o1-pico + name: {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-pico annotations: instancetype.kubevirt.io/description: |- The O Series is based on the U Series, with the only difference @@ -55,7 +55,7 @@ spec: Create your resource with: ```bash -kubectl create -f {{% param "labsfoldername" %}}/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}/vmf_{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-pico.yaml --namespace=$USER +kubectl apply -f {{% param "labsfoldername" %}}/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}/vmf_{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-pico.yaml --namespace=$USER ``` And verify whether the creation was successful: @@ -78,36 +78,16 @@ kubectl get vmf {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %} ``` The output will be similar to this one: -```bash +```yaml apiVersion: instancetype.kubevirt.io/v1beta1 kind: VirtualMachineInstancetype metadata: - annotations: - instancetype.kubevirt.io/description: |- - The U Series is quite neutral and provides resources for - general purpose applications. - - *U* is the abbreviation for "Universal", hinting at the universal - attitude towards workloads. - - VMs of instance types will share physical CPU cores on a - time-slice basis with other VMs. - instancetype.kubevirt.io/displayName: General Purpose - kubectl.kubernetes.io/last-applied-configuration: | - {"apiVersion":"instancetype.kubevirt.io/v1beta1","kind":"VirtualMachineInstancetype","metadata":{"annotations":{"instancetype.kubevirt.io/description":"The U Series is quite neutral and provides resources for\ngeneral purpose applications.\n\n*U* is the abbreviation for \"Universal\", hinting at the universal\nattitude towards workloads.\n\nVMs of instance types will share physical CPU cores on a\ntime-slice basis with other VMs.","instancetype.kubevirt.io/displayName":"General Purpose"},"labels":{"instancetype.kubevirt.io/class":"general.purpose","instancetype.kubevirt.io/cpu":"1","instancetype.kubevirt.io/icon-pf":"pficon-server-group","instancetype.kubevirt.io/memory":"256Mi","instancetype.kubevirt.io/vendor":"kubevirt-basics-training","instancetype.kubevirt.io/version":"1"},"name":"lab04-u1-pico","namespace":"user4"},"spec":{"cpu":{"guest":1},"memory":{"guest":"256Mi"}}} - creationTimestamp: "2024-08-14T12:10:36Z" + creationTimestamp: "2024-09-25T09:25:35Z" generation: 1 - labels: - instancetype.kubevirt.io/class: general.purpose - instancetype.kubevirt.io/cpu: "1" - instancetype.kubevirt.io/icon-pf: pficon-server-group - instancetype.kubevirt.io/memory: 256Mi - instancetype.kubevirt.io/vendor: kubevirt-basics-training - instancetype.kubevirt.io/version: "1" - name: lab04-u1-pico - namespace: user4 - resourceVersion: "16264315" - uid: 33cfc789-d041-4a56-bb28-26605759a890 + name: {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-pico + namespace: + resourceVersion: "55713159" + uid: 14d414b7-b1f8-4b0d-af48-fb84340545c9 spec: cpu: guest: 1 diff --git a/content/en/docs/instance-types-and-preferences/reassign-instancetype.md b/content/en/docs/instance-types-and-preferences/reassign-instancetype.md index a059f1b..19d135d 100644 --- a/content/en/docs/instance-types-and-preferences/reassign-instancetype.md +++ b/content/en/docs/instance-types-and-preferences/reassign-instancetype.md @@ -15,6 +15,11 @@ Whenever a VM referencing an instancetype or preference is created, the definiti This field ensures that our VirtualMachine knows the original specification even when the type or preference would be changed. This ensures that there are no accidental changes of the VM resources or preferences. +Use the following command to display the vm resource, you will find the reference to the revision under `spec.instancetype.revisionName`: +```bash +kubectl get vm {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros -o yaml --namespace=$USER +``` + Example of a VM with a `revisionName`: ```yaml [...] @@ -33,19 +38,35 @@ kubectl get controllerrevision --namespace=$USER ``` NAME CONTROLLER REVISION AGE -{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros-cirros-v1beta1-fa1da1cd-7e10-4e89-a8ac-5bded8f7129e-1 virtualmachine.kubevirt.io/lab04-o1-cirros 0 2h -{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros-cirros-v1beta1-fa1da1cd-7e10-4e89-a8ac-5bded8f7129e-1 virtualmachine.kubevirt.io/lab04-u1-cirros 0 2h +{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros-cirros-v1beta1-fa1da1cd-7e10-4e89-a8ac-5bded8f7129e-1 virtualmachine.kubevirt.io/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros 0 2h +{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros-cirros-v1beta1-fa1da1cd-7e10-4e89-a8ac-5bded8f7129e-1 virtualmachine.kubevirt.io/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros 0 2h [...] ``` If we want to explicitly change the Instancetype or preference we have to remove the `revisionName` attribute completely otherwise it will reject the change. -The easies way is to edit the resource directly is: +```bash +The request is invalid: spec.instancetype.revisionName: the Matcher Name has been updated without updating the RevisionName +``` + +If we want to change the Instancetype in the resource and reapply the changes using `kubectl apply -f` we need to set the RevisionName to `null` + +```yaml +[...] +spec: + instancetype: + kind: VirtualMachineClusterInstancetype + name: u1.nano + revisionName: null +[...] +``` + +When editing the resource directly, we can simply remove the `revisionName`: ```bash kubectl edit vm {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros --namespace=$USER ``` -An alternative would be patching the resource directly with: +Or alternatively, patch the resource directly with: ```bash kubectl patch vm {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros --type merge --patch '{"spec":{"instancetype":{"kind":"","name":"","revisionName":null}}}' --namespace=$USER ``` @@ -53,7 +74,12 @@ kubectl patch vm {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" % ## {{% task %}} Adapt your VMs to use the new instancetype -Edit the VM `{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros` and reference the `{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-pico` and do the same for the VM `{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros` and reference `{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-pico` +Change the InstanceTypes of the two VMs from the current VirtualMachineClusterInstancetype (`u1.nano`) to the InstanceType (`{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-pico` and `{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-pico`) + +* `{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros` +* `{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros` + +Use one of the mentioned methods above, to change the resource. {{% alert title="Note" color="info" %}} Since so far we were referencing a `VirtualMachineClusterPreference` also change the kind to `VirtualMachineInstancetype` for our new InstanceTypes. @@ -68,7 +94,7 @@ The relevant section for the VM `{{% param "labsubfolderprefix" %}}{{% param "la spec: instancetype: kind: VirtualMachineInstancetype - name: lab04-u1-pico + name: {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-pico ``` For `{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros` it will be: @@ -78,6 +104,7 @@ spec: kind: VirtualMachineInstancetype name: {{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-pico ``` + {{% /details %}} Make sure you restart both VMs to reflect the change of their instancetype: diff --git a/go.sum b/go.sum index 368d73c..026a2f2 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,5 @@ github.com/FortAwesome/Font-Awesome v0.0.0-20230327165841-0698449d50f2/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= +github.com/FortAwesome/Font-Awesome v0.0.0-20240108205627-a1232e345536/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= github.com/FortAwesome/Font-Awesome v0.0.0-20240402185447-c0f460dca7f7/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= github.com/FortAwesome/Font-Awesome v4.7.0+incompatible h1:3trjm7NtX5NXlju1AxSWSzedDMq2hsfH78Qtqrc8EgY= github.com/FortAwesome/Font-Awesome v4.7.0+incompatible/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= @@ -6,6 +7,7 @@ github.com/acend/docsy-acend v1.0.0 h1:TwmHoH3z6lh5zcNj6zUpMP4lYOhQ+OOgcbBwr7AqV github.com/acend/docsy-acend v1.0.0/go.mod h1:h8XZkPe1VufdOQfFXcLVQ7FvOJyIMKr8rJcSvWStG2g= github.com/acend/docsy-plus v1.1.0 h1:MgHPR3YRPrJSWtMS3eQKJivdCEwFHCIKD0jChsZS3SM= github.com/acend/docsy-plus v1.1.0/go.mod h1:LPbI0Ljrhzt0YHUg8qozWVUXjrMVI1cFVPn3TyQxbcY= +github.com/google/docsy v0.9.1/go.mod h1:saOqKEUOn07Bc0orM/JdIF3VkOanHta9LU5Y53bwN2U= github.com/google/docsy v0.10.0 h1:6tMDacPwAyRWNCfvsn/9qGOZDQ8b0aRzjRZvnZPY5dg= github.com/google/docsy v0.10.0/go.mod h1:c0nIAqmRTOuJ01F85U/wJPQtc3Zj9N58Kea9bOT2AJc= github.com/google/docsy/dependencies v0.7.2 h1:+t5ufoADQAj4XneFphz4A+UU0ICAxmNaRHVWtMYXPSI= From d042993be91ee12fc65e44acf32e838fec7382c3 Mon Sep 17 00:00:00 2001 From: Thomas Philipona Date: Sat, 28 Sep 2024 10:22:23 +0200 Subject: [PATCH 2/3] reset go sum --- go.sum | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.sum b/go.sum index 026a2f2..368d73c 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,4 @@ github.com/FortAwesome/Font-Awesome v0.0.0-20230327165841-0698449d50f2/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= -github.com/FortAwesome/Font-Awesome v0.0.0-20240108205627-a1232e345536/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= github.com/FortAwesome/Font-Awesome v0.0.0-20240402185447-c0f460dca7f7/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= github.com/FortAwesome/Font-Awesome v4.7.0+incompatible h1:3trjm7NtX5NXlju1AxSWSzedDMq2hsfH78Qtqrc8EgY= github.com/FortAwesome/Font-Awesome v4.7.0+incompatible/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo= @@ -7,7 +6,6 @@ github.com/acend/docsy-acend v1.0.0 h1:TwmHoH3z6lh5zcNj6zUpMP4lYOhQ+OOgcbBwr7AqV github.com/acend/docsy-acend v1.0.0/go.mod h1:h8XZkPe1VufdOQfFXcLVQ7FvOJyIMKr8rJcSvWStG2g= github.com/acend/docsy-plus v1.1.0 h1:MgHPR3YRPrJSWtMS3eQKJivdCEwFHCIKD0jChsZS3SM= github.com/acend/docsy-plus v1.1.0/go.mod h1:LPbI0Ljrhzt0YHUg8qozWVUXjrMVI1cFVPn3TyQxbcY= -github.com/google/docsy v0.9.1/go.mod h1:saOqKEUOn07Bc0orM/JdIF3VkOanHta9LU5Y53bwN2U= github.com/google/docsy v0.10.0 h1:6tMDacPwAyRWNCfvsn/9qGOZDQ8b0aRzjRZvnZPY5dg= github.com/google/docsy v0.10.0/go.mod h1:c0nIAqmRTOuJ01F85U/wJPQtc3Zj9N58Kea9bOT2AJc= github.com/google/docsy/dependencies v0.7.2 h1:+t5ufoADQAj4XneFphz4A+UU0ICAxmNaRHVWtMYXPSI= From 385931116bc63cd8997dfe2b203cc16ca0af0a75 Mon Sep 17 00:00:00 2001 From: Thomas Philipona Date: Sat, 28 Sep 2024 10:54:21 +0200 Subject: [PATCH 3/3] Add onlyWhenNot --- .../instance-types-and-preferences/common-instancetypes.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/content/en/docs/instance-types-and-preferences/common-instancetypes.md b/content/en/docs/instance-types-and-preferences/common-instancetypes.md index c0dbf22..09b9d52 100644 --- a/content/en/docs/instance-types-and-preferences/common-instancetypes.md +++ b/content/en/docs/instance-types-and-preferences/common-instancetypes.md @@ -336,9 +336,7 @@ Deploy two VMs with different instance types: * rite the VM specification in `{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-o1-cirros.yaml` -{{% alert title="Tolerations" color="warning" %}} -Don't forget the `tolerations` from the setup chapter to make sure the VM will be scheduled on one of the baremetal nodes. -{{% /alert %}} +{{% onlyWhenNot tolerations %}} {{% details title="Solution" %}} `{{% param "labsfoldername" %}}/{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}/vm_{{% param "labsubfolderprefix" %}}{{% param "labfoldernumber" %}}-u1-cirros.yaml` specification: