Add Known Issues page: Flatcar Ignition failure on KubeVirt 1.6.x#2228
Add Known Issues page: Flatcar Ignition failure on KubeVirt 1.6.x#2228mihiragrawal wants to merge 2 commits into
Conversation
Document the KubeVirt >= 1.6.4 regression that drops the fw_cfg (opt/com.coreos/config) qemu argument for Flatcar VMs, so Flatcar worker nodes never receive their Ignition config and fail to join the user cluster. Ubuntu (cloud-init/noCloud) is unaffected. The page covers the problem, root cause, the machine-controller workaround (the kubevirt.io/placePCIDevicesOnRootComplex annotation, kubermatic/machine-controller#2057) plus a manual MachineDeployment fallback, the Flatcar-only scope, the trade-off (disables unused PCIe hotplug on worker VMs), and upstream references (kubevirt/kubevirt#16901, kubevirt/kubevirt#18460).
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
archups
left a comment
There was a problem hiding this comment.
Please take care of review comments for workaround section.
Also please add known issue under KKP docs as well to main and supported releases.
/hold until MC release is out. And make necessary changes in the workaround to include how to pin to the MC release containing the fix until it is available as part of KKP release using following change in KubermaticConfiguration
spec:
userCluster:
machineController:
imageTag: v1.xx.xx| Note: the annotation must sit on `spec.template.metadata.annotations` (this is | ||
| what reaches the VM). It only takes effect on newly created machines, so | ||
| existing Flatcar nodes must be recreated for the fix to apply. |
There was a problem hiding this comment.
| Note: the annotation must sit on `spec.template.metadata.annotations` (this is | |
| what reaches the VM). It only takes effect on newly created machines, so | |
| existing Flatcar nodes must be recreated for the fix to apply. | |
| **Note:** The annotation must sit on `spec.template.metadata.annotations`, not the | |
| MD's top-level metadata. This is what reaches the VM. |
There was a problem hiding this comment.
Update this changes across all the occurrence.
| KubeVirt exposes a per-VM annotation, `kubevirt.io/placePCIDevicesOnRootComplex`, | ||
| that disables the extra hotplug-port reservation and therefore skips the second | ||
| domain write, so the `-fw_cfg` argument is preserved. | ||
|
|
||
| machine-controller sets this annotation automatically for Flatcar machines as of | ||
| [kubermatic/machine-controller#2057](https://github.com/kubermatic/machine-controller/pull/2057). | ||
| Deploy a machine-controller version that includes this change and recreate the | ||
| affected Flatcar nodes. | ||
|
|
||
| If you cannot update machine-controller yet, add the annotation manually to the | ||
| Flatcar worker pool's `MachineDeployment` in the user cluster (namespace | ||
| `kube-system`) and roll the nodes: |
There was a problem hiding this comment.
| KubeVirt exposes a per-VM annotation, `kubevirt.io/placePCIDevicesOnRootComplex`, | |
| that disables the extra hotplug-port reservation and therefore skips the second | |
| domain write, so the `-fw_cfg` argument is preserved. | |
| machine-controller sets this annotation automatically for Flatcar machines as of | |
| [kubermatic/machine-controller#2057](https://github.com/kubermatic/machine-controller/pull/2057). | |
| Deploy a machine-controller version that includes this change and recreate the | |
| affected Flatcar nodes. | |
| If you cannot update machine-controller yet, add the annotation manually to the | |
| Flatcar worker pool's `MachineDeployment` in the user cluster (namespace | |
| `kube-system`) and roll the nodes: | |
| KubeVirt exposes a per-VM annotation, `kubevirt.io/placePCIDevicesOnRootComplex`, | |
| that preserves the `-fw_cfg` argument on Flatcar nodes. Set it to `"true"` using | |
| one of the options below. | |
| **Existing user cluster (affected MachineDeployment)** | |
| Patch the `MachineDeployment` in the user cluster (namespace `kube-system`), then recreate the Flatcar nodes: | |
| `kubectl -n kube-system patch machinedeployment <flatcar-worker-pool> --type merge -p '{"spec":{"template":{"metadata":{"annotations":{"kubevirt.io/placePCIDevicesOnRootComplex":"true"}}}}}'` | |
| The annotation only takes effect on newly created machines, so existing Flatcar nodes must be recreated for the fix to apply. | |
| **New user cluster / MachineDeployment** | |
| Add the annotation under `spec.template.metadata.annotations` at creation time, either in the MD YAML, or directly from the KKP dashboard during user cluster or MachineDeployment creation: |
There was a problem hiding this comment.
Update this Workaround changes across all the occurrence.
What this PR does / why we need it
Adds a Known Issues page to the Kubermatic Virtualization docs, documenting
the KubeVirt 1.6.x defect that breaks Flatcar worker-node provisioning.
On KubeVirt v1.6.4 and newer, Flatcar worker VMs boot and get an IP but never
receive their Ignition configuration, so the node never joins the user cluster.
KubeVirt's PCIe-hotplug port reservation re-defines the libvirt domain a second
time, and that XML round-trip drops the
qemu:commandline-fw_cfg opt/com.coreos/configargument that carries Flatcar's Ignition. Ubuntu(cloud-init / noCloud) is unaffected. This is an upstream KubeVirt bug, not a
Kubermatic Virtualization or machine-controller defect.
The page documents the problem, root cause, the workaround (the
kubevirt.io/placePCIDevicesOnRootComplexannotation — set automatically forFlatcar by kubermatic/machine-controller#2057, with a manual
MachineDeploymentfallback), the Flatcar-only scope, the trade-off (disables unused PCIe hotplug),
and upstream references.
Related