Skip to content

docs: add Talos node upgrade and DRBD recovery notes - #26

Open
Aleksei Sviridkin (lexfrei) wants to merge 3 commits into
mainfrom
docs/talos-114-upgrade-learnings
Open

Aleksei Sviridkin (lexfrei) wants to merge 3 commits into
mainfrom
docs/talos-114-upgrade-learnings

Conversation

@lexfrei

Copy link
Copy Markdown
Contributor

The skills had nothing on upgrading Talos under a running Cozystack cluster, and most of what broke for me on a bare-metal cluster with LINSTOR/DRBD storage was in that gap. The cluster-upgrade skill stops at helm upgrade. The nodes, and the DRBD version that comes with each Talos release, are left to the operator.

This adds what I hit during that upgrade:

  • A new cluster-upgrade reference for Talos node upgrades. It maps each Talos release to the DRBD version in the drbd extension and recommends skipping 1.13.x, because the DRBD 9.3.2 sender soft-lockup is only fixed in 9.3.4, which first ships with Talos 1.14.2. It also covers the machine-config changes to make before the first node upgrade, per-node gotchas, and a storage check between node reboots.
  • A new cluster-upgrade known failure for the LINSTOR controller crash-loop on orphan layer rows after an interrupted deletion.
  • drbd_transport_tcp in the talos-bootstrap module lists, plus kexec disabled on bare metal. Talos 1.14 no longer loads extension modules on demand (v1.14: kernel no longer loads extension modules on demand (drbd_transport_tcp) siderolabs/talos#14501), and the preset fix is still open in fix(cozystack): load drbd_transport_tcp explicitly talm#252.
  • The "missed finish" resync loop after a mid-resync reboot in linstor:recover, plus the two DRBD bugs above.

Version claims are checked against upstream sources. DRBD versions come from Pkgfile at each siderolabs/extensions tag. The rest comes from the DRBD 9.3.4 ChangeLog, MinimumHostUpgradeVersion in Talos 1.14 and the checksum format in the KubeVirt 1.8.4 CRDs.

tools/check-refs.sh passes. markdownlint only flags the repeated Symptom, Root cause and Recovery headings, and every entry in known-failures.md already uses them.

Node upgrades on DRBD-backed clusters fail in ways the Cozystack
upgrade flow never sees: the Talos version decides the DRBD version,
Talos 1.14 stops autoloading drbd_transport_tcp, kexec reboots can
hang bare-metal nodes, and a second node reboot before storage has
settled can take quorum away from a resource.

Add a reference that covers the version path, the machine-config
changes to apply before the first node upgrade, per-node gotchas and
the gate between node reboots. Add a known failure for the LINSTOR
controller crash-loop caused by orphan layer rows after an
interrupted resource deletion.

Assisted-by: LLM
Signed-off-by: Aleksei Sviridkin <f@lex.la>
Talos 1.14 builds the kernel with an empty modprobe path, so DRBD can
no longer load drbd_transport_tcp on the first peer connection and
every new-peer call fails with "Failed to create transport". List the
module next to drbd in the review checklists and verification step.

Also recommend kernel.kexec_load_disabled on bare metal: kexec reboots
during later upgrades can hang the node, and with kexec disabled Talos
reboots through firmware.

Assisted-by: LLM
Signed-off-by: Aleksei Sviridkin <f@lex.la>
A node that reboots in the middle of a resync can leave the pair
looping in Connecting, with both sides expecting the other to become
SyncTarget. invalidate and discard-my-data do not get out of it;
forcing the stale side down and letting LINSTOR recreate the replica
does.

Also record the DRBD 9.3.2 sender soft-lockup fixed in 9.3.4 and the
Talos 1.14 drbd_transport_tcp autoload regression.

Assisted-by: LLM
Signed-off-by: Aleksei Sviridkin <f@lex.la>
@coderabbitai

coderabbitai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 9b509ca8-057d-480b-ae88-74e3863286e6


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@lexfrei
Aleksei Sviridkin (lexfrei) marked this pull request as ready for review September 30, 2026 10:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant