Skip to content

fix(metallb): update MetalLB to include ServiceL2Status immutability fix #2120

Open

Description

@kvaps

Summary

MetalLB v0.15.2 (currently used in cozystack) has a bug where ServiceL2Status objects cannot be reassigned to a different node after failover. The status.node field is immutable, so when the L2 leader changes (e.g. after node reboot), the speaker fails to update the existing ServiceL2Status and enters an error loop:

ServiceL2Status.metallb.io "l2-xxx" is invalid: status.node: Invalid value: "string": Value is immutable

This causes LoadBalancer VIPs to become unreachable externally until speaker pods are manually restarted.

Upstream issue: metallb/metallb#2930
Fix PR (merged to main): metallb/metallb#2938

The fix has not been included in any MetalLB release yet (latest is v0.15.3, released before the fix was merged).

Impact

After any node failover or reboot, LoadBalancer services may lose external connectivity because ServiceL2Status cannot be recreated for the new leader node.

Activity

  1. added
    kind/bugCategorizes issue or PR as related to a bug
    on Feb 28, 2026
  2. added
    area/networkingIssues or PRs related to networking (ingress, gateway, vpn, metallb, kube-ovn)
    upstream-issueRequires resolving an issue in an upstream project
    priority/important-soonMust be staffed and worked on either currently, or very soon, ideally in time for the next release
    triage/acceptedIndicates an issue is ready to be actively worked on
    on Apr 27, 2026
  3. dosubot commented on Jul 27, 2026

    @dosubot

    Hi, Andrei Kvapil (@kvaps). I'm Dosu, and I'm helping the cozystack team manage their backlog and am marking this issue as stale.

    Recap

    • You reported that MetalLB v0.15.2 treats ServiceL2Status.status.node as immutable, which prevents the speaker from updating the leader node after failover.
    • The speaker then keeps retrying with errors, which can leave LoadBalancer VIPs unreachable until the speakers are restarted.
    • The requested resolution was to update MetalLB to a release that includes the upstream immutability fix.
    • No follow-up discussion or workaround was added, and the issue remains unresolved.

    Next Steps

    • Please confirm whether this is still relevant on the latest version of the cozystack repository.
    • If it is still relevant, you can keep the discussion open by commenting here; otherwise, this issue will be automatically closed in 7 days.

    Thanks for your understanding and contribution.

  4. added
    lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale
    and removed on Aug 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/networkingIssues or PRs related to networking (ingress, gateway, vpn, metallb, kube-ovn)kind/bugCategorizes issue or PR as related to a buglifecycle/staleDenotes an issue or PR has remained open with no activity and has become stalepriority/important-soonMust be staffed and worked on either currently, or very soon, ideally in time for the next releasetriage/acceptedIndicates an issue is ready to be actively worked onupstream-issueRequires resolving an issue in an upstream project

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions