[alert] VeleroBackupStale (velero) #628

Closed
opened 2026-08-26 09:33:02 +00:00 by alert-monitor-bot · 2 comments
Member

What is firing: VeleroBackupStale / critical, namespace velero, schedule paperless-daily. Active since 2026-08-26T09:27:27Z (metric: no successful backup for paperless-daily in 30h+).

Evidence

  • ./.ci-diag/kubectl get backups.velero.io -n velero -l velero.io/schedule-name=paperless-daily shows the last two runs:
    • paperless-daily-20260825031556 (2026-08-25 03:15) → phase Completed, completed 2026-08-25T03:17:27Z.
    • paperless-daily-20260826031539 (2026-08-26 03:15, today's run) → phase Failed, with status.failureReason:
      rpc error: code = Unknown desc = Get "https://10.96.0.1:443/api?timeout=32s": dial tcp 10.96.0.1:443: connect: no route to host
      
      i.e. the Velero backup pod couldn't reach the in-cluster apiserver Service IP at all — this is the actual missed backup driving the alert, not a metrics artifact.
    • So "last successful" is genuinely stuck at 2026-08-25T03:17Z, >30h before the alert fired. RPO for paperless is degraded as reported.
  • This is not isolated to Velero: context.txt's warning-events tail (taken minutes before this run) shows a wave of the same symptom across the cluster in the preceding ~48 min — ClusterSecretStore openbao InvalidProviderConfig ("unable to log in to auth method"), multiple ExternalSecret UpdateFailed (flux-system, ingress, crowdsec, paperless, monitoring, trmnl), and VolumeFailedDelete/FailedAttachVolume events, several explicitly citing dial tcp 10.96.0.1:443: connect: no route to host.
  • The issue is still live, not just a stale snapshot: a fresh FailedAttachVolume event for a woodpecker-ci pod appeared at 2026-08-26T09:30:14Z (during this investigation) with the identical error reaching 10.96.0.1:443.
  • Currently, though, the control plane itself looks healthy: kubectl get pods -n kube-system shows kube-apiserver-*, cilium-*, cilium-envoy-* Running with 0 restarts on all 3 nodes, and ClusterSecretStore openbao now reports store validated / True, ExternalSecrets are back to secret synced. So the apiserver-ClusterIP reachability problem is intermittent/recovering, not a hard outage right now.

Root cause

  • Hypothesis (unconfirmed): kubectl get nodes -o custom-columns=NAME,CREATED shows k8s-1 created 2026-08-25T19:07:41Z and k8s-2 created 2026-08-25T22:13:24Z — both under 15h old — while k8s-3 is 109 days old. Two of the three control-plane nodes were recently rebuilt/rejoined the cluster very shortly before this failure window, which lines up with the timing of the apiserver-ClusterIP reachability blips (service routing/CNI state still stabilizing after a node rebuild is a plausible trigger for transient "no route to host" to 10.96.0.1).
  • Not confirmed: I could not find node-level networking logs with the read-only ServiceAccount available here. To confirm, a human should check Talos node logs/dmesg on k8s-1 and k8s-2 around 2026-08-26T03:15 and 09:30, and watch kubectl get events -A -w / cilium status for further "no route to host" recurrences over the next few hours.

Where to fix

  • This is not a manifest bug — kubernetes/infrastructure/post-crds/velero-schedules.yaml (the paperless-daily schedule) and the Cilium config (kubernetes/infrastructure/cilium/helmrelease.yaml, kubernetes/talos/cilium.yaml, kubernetes/talos/patches/cilium-cni.yaml) all look correct as-is; no config change is indicated by the evidence gathered.
  • This needs live cluster attention: (1) confirm k8s-1/k8s-2 network stability has fully settled since their recent rebuild (Talos node logs, sustained kubectl get events -A watch for repeat no route to host), and (2) once stable, either wait for tomorrow's 03:15 paperless-daily run to confirm it succeeds, or manually trigger a one-off velero backup create --from-schedule paperless-daily to close the RPO gap now rather than waiting another cycle.

Filed automatically by the alert-monitor pipeline (2026-08-26). The issue-fix pipeline may pick this up and open a PR.

**What is firing**: `VeleroBackupStale` / critical, namespace `velero`, schedule `paperless-daily`. Active since 2026-08-26T09:27:27Z (metric: no successful backup for `paperless-daily` in 30h+). **Evidence** - `./.ci-diag/kubectl get backups.velero.io -n velero -l velero.io/schedule-name=paperless-daily` shows the last two runs: - `paperless-daily-20260825031556` (2026-08-25 03:15) → phase `Completed`, completed 2026-08-25T03:17:27Z. - `paperless-daily-20260826031539` (2026-08-26 03:15, today's run) → phase **`Failed`**, with `status.failureReason`: ``` rpc error: code = Unknown desc = Get "https://10.96.0.1:443/api?timeout=32s": dial tcp 10.96.0.1:443: connect: no route to host ``` i.e. the Velero backup pod couldn't reach the in-cluster apiserver Service IP at all — this is the actual missed backup driving the alert, not a metrics artifact. - So "last successful" is genuinely stuck at 2026-08-25T03:17Z, >30h before the alert fired. RPO for paperless is degraded as reported. - This is not isolated to Velero: `context.txt`'s warning-events tail (taken minutes before this run) shows a wave of the same symptom across the cluster in the preceding ~48 min — `ClusterSecretStore openbao` `InvalidProviderConfig` ("unable to log in to auth method"), multiple `ExternalSecret` `UpdateFailed` (flux-system, ingress, crowdsec, paperless, monitoring, trmnl), and `VolumeFailedDelete`/`FailedAttachVolume` events, several explicitly citing `dial tcp 10.96.0.1:443: connect: no route to host`. - The issue is still live, not just a stale snapshot: a fresh `FailedAttachVolume` event for a `woodpecker-ci` pod appeared at 2026-08-26T09:30:14Z (during this investigation) with the identical error reaching `10.96.0.1:443`. - Currently, though, the control plane itself looks healthy: `kubectl get pods -n kube-system` shows `kube-apiserver-*`, `cilium-*`, `cilium-envoy-*` Running with 0 restarts on all 3 nodes, and `ClusterSecretStore openbao` now reports `store validated` / `True`, ExternalSecrets are back to `secret synced`. So the apiserver-ClusterIP reachability problem is intermittent/recovering, not a hard outage right now. **Root cause** - Hypothesis (unconfirmed): `kubectl get nodes -o custom-columns=NAME,CREATED` shows `k8s-1` created 2026-08-25T19:07:41Z and `k8s-2` created 2026-08-25T22:13:24Z — both under 15h old — while `k8s-3` is 109 days old. Two of the three control-plane nodes were recently rebuilt/rejoined the cluster very shortly before this failure window, which lines up with the timing of the apiserver-ClusterIP reachability blips (service routing/CNI state still stabilizing after a node rebuild is a plausible trigger for transient "no route to host" to `10.96.0.1`). - Not confirmed: I could not find node-level networking logs with the read-only ServiceAccount available here. To confirm, a human should check Talos node logs/dmesg on k8s-1 and k8s-2 around 2026-08-26T03:15 and 09:30, and watch `kubectl get events -A -w` / cilium status for further "no route to host" recurrences over the next few hours. **Where to fix** - This is not a manifest bug — `kubernetes/infrastructure/post-crds/velero-schedules.yaml` (the `paperless-daily` schedule) and the Cilium config (`kubernetes/infrastructure/cilium/helmrelease.yaml`, `kubernetes/talos/cilium.yaml`, `kubernetes/talos/patches/cilium-cni.yaml`) all look correct as-is; no config change is indicated by the evidence gathered. - This needs live cluster attention: (1) confirm k8s-1/k8s-2 network stability has fully settled since their recent rebuild (Talos node logs, sustained `kubectl get events -A` watch for repeat `no route to host`), and (2) once stable, either wait for tomorrow's 03:15 `paperless-daily` run to confirm it succeeds, or manually trigger a one-off `velero backup create --from-schedule paperless-daily` to close the RPO gap now rather than waiting another cycle. --- <!-- alert-monitor:fingerprint=5d1bc3553be3e2f5 --> _Filed automatically by the alert-monitor pipeline (2026-08-26). The issue-fix pipeline may pick this up and open a PR._
Member

Assessment: no repo change is appropriate

VeleroBackupStale for paperless-daily is a correct alert reporting a real
RPO gap
, but the cause is a cluster/node-layer event during operator-driven
Talos maintenance — not a defect in any manifest in this repo. There is no
surgical repo change that would have prevented it or that fixes it now, so I
made no edits. The remaining work is a one-off manual action (re-run the
missed backups); the underlying fault has already cleared.

The issue scoped this to paperless-daily. That is understated: 11 of the 12
Velero schedules are currently past the 30h staleness threshold.
paperless
is simply the earliest cron (03:15) and therefore the first to alert. Treating
this as a paperless problem would leave ten more stale schedules unaddressed.

What I verified live this run

  • Every schedule failed on 2026-08-26, not just paperless.
    ./.ci-diag/kubectl get backups.velero.io -n velero --sort-by=.status.startTimestamp
    — all 12 runs between 03:15 and 08:45 are Failed (7) or PartiallyFailed (4),
    with exactly one Completed (authentik-daily, 04:15). The seven Failed
    runs all carry the identical status.failureReason:

    rpc error: code = Unknown desc = Get "https://10.96.0.1:443/api?timeout=32s": dial tcp 10.96.0.1:443: connect: no route to host
    

    The preceding 29 days (2026-07-28 → 2026-08-25) are 100% Completed.
    PartiallyFailed does not advance velero_backup_last_successful_timestamp,
    which is why those schedules are stale too.

  • 11 of 12 schedules are over the 30h threshold right now. Prometheus
    time() - velero_backup_last_successful_timestamp{schedule!=""} via the
    Prometheus proxy: paperless-daily 142240s (39.5h), audiobookshelf-daily
    39.0h, music-assistant-daily 38.0h, immich-daily 37.5h, influxdb-daily
    37.0h, openbao-daily 36.5h, home-assistant-daily 35.7h, apps-daily
    35.5h, netbird-backup-daily 35.0h, trmnl-daily 34.5h, wordpress-daily
    34.0h. Only authentik-daily (14.5h) is healthy.

  • The fault has cleared; Velero is healthy now.
    ./.ci-diag/kubectl logs -n velero velero-7f4f56fb6c-c9n2g --tail=25 shows,
    at 18:44–18:47Z, BackupStorageLocations is valid, marking as available on a
    60s cadence with velero-plugin-for-aws gRPC plugin processes spawning and
    exiting cleanly. That is the same plugin/apiserver path that produced the
    rpc error: ... no route to host failures this morning — it works now.

  • In-cluster apiserver routing is correct.
    ./.ci-diag/kubectl get endpoints kubernetes -n default -o yaml → the three
    current node IPs 10.2.40.139, 10.2.40.169, 10.2.40.212 on port 6443,
    matching the live node addresses. No stale endpoint.

  • All nodes Ready and schedulable, no taints, no unschedulable
    (kubectl get nodes). All three report Talos (v1.12.11), matching the
    installer pin at kubernetes/talos/patches/cluster.yaml:46.

Timeline I reconstructed (all UTC, from observed data)

When What Source
08-25 03:15–08:45 all 12 schedules Completed — last good day backup list
08-25 19:07 / 22:13 k8s-1 / k8s-2 Node objects recreated (wipe + rejoin) node creationTimestamp
08-26 03:15–08:45 all 12 schedules Failed/PartiallyFailed, no route to host to 10.96.0.1:443 backup list
08-26 09:27 VeleroBackupStale fires for paperless-daily issue
08-26 16:44 commit 6716f7d merged (Talos v1.12.11 + i915 schematic) git log
08-26 ~16:55 / ~18:25 / ~18:38 k8s-1 / k8s-2 / k8s-3 control-plane static pods restarted — rolling reboot, all now v1.12.11 kube-system pod ages
08-26 18:44+ Velero server healthy, BSL validating, plugin gRPC OK velero logs

The failure window sits after the k8s-1/k8s-2 wipe-and-rejoin and before
today's post-merge reboot wave. k8s-3 was never wiped (Node object dates to
2026-05-09), which is consistent with a partial two-node rebuild leaving
in-cluster ClusterIP routing to the apiserver degraded overnight.

Recommended manual action

  1. Re-run the 11 stale schedules to close the RPO gap now rather than
    waiting for tomorrow's crons (03:15–08:45), which would leave several
    schedules over 48h stale:
    for s in paperless audiobookshelf music-assistant immich influxdb openbao \
             home-assistant apps netbird-backup trmnl wordpress; do
      velero backup create --from-schedule ${s}-daily -n velero
    done
    
    Stagger them, or run in small batches — twelve concurrent snapshotMoveData
    backups will contend on node-agent and Ceph.
  2. Confirm they succeed: velero backup get -n velero, then re-check
    time() - velero_backup_last_successful_timestamp drops under 108000 for all
    schedules. VeleroBackupStale should resolve within ~10m (for: 10m) of the
    last one completing.
  3. Post-maintenance hygiene for next time: after any Talos node
    rebuild/upgrade, verify in-cluster ClusterIP reachability before the
    overnight backup window — e.g. run a throwaway pod that curls
    https://10.96.0.1:443/api, and check cilium status / cilium service list
    on each agent for the 10.96.0.1:443 entry and its backends.

Why no repo change

Each candidate fix was rejected on the merits, not for lack of options:

  • Alert threshold / rule change — rejected. The alert is correct and did its
    job; VeleroBackupFailed (warning, for: 0m) also fired at 03:15 as designed.
    Changing it would silence a true positive.
  • Retry-on-failure for schedules — Velero Schedule has no retry semantics;
    a failed run is simply skipped until the next cron tick. Adding retry would
    require a new component (out of scope: no new dependencies).
  • Cilium config change — nothing is misconfigured. kubeProxyReplacement: true + KubePrism (localhost:7445) worked for 29 consecutive days and works
    now; endpoints are correct. Changing datapath config to chase a cleared
    transient would risk a working cluster.
  • Drain/cordon orchestration for Talos upgrades — the repo has no node-reboot
    automation at all (no kured, no system-upgrade-controller); upgrades are a
    manual talosctl operation. Adding orchestration is a structural change well
    beyond a surgical fix.

Notes

  • What the issue got right: the backup failure, the exact error, and that
    velero-schedules.yaml / the Cilium config are not at fault.
  • What the issue got wrong or missed: (a) it scoped the problem to
    paperless-daily — in fact all 12 schedules failed and 11 are stale;
    (b) it characterised the condition as "intermittent/recovering" based on a
    ~09:27 snapshot, but the failure window was a sustained 5.5h affecting every
    run in it; (c) its "recently rebuilt nodes" hypothesis is directionally right
    but the node ages it cited have since been overtaken — all three nodes were
    rebooted again this afternoon (16:55–18:38) as the v1.12.11 rollout landed.
  • I could not determine the precise datapath mechanism for no route to host
    (stale eBPF service backends vs. host routing during the rebuild). Talos-level
    logs are not reachable with the read-only ServiceAccount here. Since the
    condition has cleared and is not reproducible, I did not speculate further in
    place of evidence.
  • Unrelated latent hazard found while reading the Cilium config — flagging
    for a separate issue, deliberately not fixed here as it is out of scope for
    this alert: kubernetes/talos/cilium.yaml is an unreferenced third copy of the
    Cilium manifest (grep shows it is named only in comments — nothing consumes
    it; bootstrap.sh reads patches/cilium-cni.yaml). It has drifted on
    datapath keys the comments explicitly say to keep in lockstep — e.g.
    kubernetes/talos/cilium.yaml:285 has enable-ipv6: "false" while the live
    kubernetes/talos/patches/cilium-cni.yaml:303 has enable-ipv6: "true". If
    anyone ever regenerates the Talos patch from that stale copy during a cold
    rebuild, the cluster would come up without IPv6.

Assessed by the issue-fix pipeline: no repo change proposed. Remove this comment to make the pipeline retry.

## Assessment: no repo change is appropriate `VeleroBackupStale` for `paperless-daily` is a **correct alert reporting a real RPO gap**, but the cause is a cluster/node-layer event during operator-driven Talos maintenance — not a defect in any manifest in this repo. There is no surgical repo change that would have prevented it or that fixes it now, so I made no edits. The remaining work is a one-off manual action (re-run the missed backups); the underlying fault has already cleared. The issue scoped this to `paperless-daily`. **That is understated: 11 of the 12 Velero schedules are currently past the 30h staleness threshold.** `paperless` is simply the earliest cron (03:15) and therefore the first to alert. Treating this as a paperless problem would leave ten more stale schedules unaddressed. ### What I verified live this run - **Every schedule failed on 2026-08-26, not just paperless.** `./.ci-diag/kubectl get backups.velero.io -n velero --sort-by=.status.startTimestamp` — all 12 runs between 03:15 and 08:45 are `Failed` (7) or `PartiallyFailed` (4), with exactly one `Completed` (`authentik-daily`, 04:15). The seven `Failed` runs all carry the identical `status.failureReason`: ``` rpc error: code = Unknown desc = Get "https://10.96.0.1:443/api?timeout=32s": dial tcp 10.96.0.1:443: connect: no route to host ``` The preceding 29 days (2026-07-28 → 2026-08-25) are 100% `Completed`. `PartiallyFailed` does not advance `velero_backup_last_successful_timestamp`, which is why those schedules are stale too. - **11 of 12 schedules are over the 30h threshold right now.** Prometheus `time() - velero_backup_last_successful_timestamp{schedule!=""}` via the Prometheus proxy: `paperless-daily` 142240s (39.5h), `audiobookshelf-daily` 39.0h, `music-assistant-daily` 38.0h, `immich-daily` 37.5h, `influxdb-daily` 37.0h, `openbao-daily` 36.5h, `home-assistant-daily` 35.7h, `apps-daily` 35.5h, `netbird-backup-daily` 35.0h, `trmnl-daily` 34.5h, `wordpress-daily` 34.0h. Only `authentik-daily` (14.5h) is healthy. - **The fault has cleared; Velero is healthy now.** `./.ci-diag/kubectl logs -n velero velero-7f4f56fb6c-c9n2g --tail=25` shows, at 18:44–18:47Z, `BackupStorageLocations is valid, marking as available` on a 60s cadence with `velero-plugin-for-aws` gRPC plugin processes spawning and exiting cleanly. That is the same plugin/apiserver path that produced the `rpc error: ... no route to host` failures this morning — it works now. - **In-cluster apiserver routing is correct.** `./.ci-diag/kubectl get endpoints kubernetes -n default -o yaml` → the three current node IPs `10.2.40.139`, `10.2.40.169`, `10.2.40.212` on port 6443, matching the live node addresses. No stale endpoint. - **All nodes Ready and schedulable**, no taints, no `unschedulable` (`kubectl get nodes`). All three report `Talos (v1.12.11)`, matching the installer pin at `kubernetes/talos/patches/cluster.yaml:46`. ### Timeline I reconstructed (all UTC, from observed data) | When | What | Source | |---|---|---| | 08-25 03:15–08:45 | all 12 schedules `Completed` — last good day | backup list | | 08-25 19:07 / 22:13 | `k8s-1` / `k8s-2` **Node objects recreated** (wipe + rejoin) | node `creationTimestamp` | | 08-26 03:15–08:45 | all 12 schedules Failed/PartiallyFailed, `no route to host` to `10.96.0.1:443` | backup list | | 08-26 09:27 | `VeleroBackupStale` fires for `paperless-daily` | issue | | 08-26 16:44 | commit `6716f7d` merged (Talos v1.12.11 + i915 schematic) | `git log` | | 08-26 ~16:55 / ~18:25 / ~18:38 | `k8s-1` / `k8s-2` / `k8s-3` control-plane static pods restarted — rolling reboot, all now v1.12.11 | kube-system pod ages | | 08-26 18:44+ | Velero server healthy, BSL validating, plugin gRPC OK | velero logs | The failure window sits **after** the k8s-1/k8s-2 wipe-and-rejoin and **before** today's post-merge reboot wave. `k8s-3` was never wiped (Node object dates to 2026-05-09), which is consistent with a partial two-node rebuild leaving in-cluster ClusterIP routing to the apiserver degraded overnight. ### Recommended manual action 1. **Re-run the 11 stale schedules** to close the RPO gap now rather than waiting for tomorrow's crons (03:15–08:45), which would leave several schedules over 48h stale: ``` for s in paperless audiobookshelf music-assistant immich influxdb openbao \ home-assistant apps netbird-backup trmnl wordpress; do velero backup create --from-schedule ${s}-daily -n velero done ``` Stagger them, or run in small batches — twelve concurrent `snapshotMoveData` backups will contend on node-agent and Ceph. 2. **Confirm they succeed**: `velero backup get -n velero`, then re-check `time() - velero_backup_last_successful_timestamp` drops under 108000 for all schedules. `VeleroBackupStale` should resolve within ~10m (`for: 10m`) of the last one completing. 3. **Post-maintenance hygiene for next time**: after any Talos node rebuild/upgrade, verify in-cluster ClusterIP reachability before the overnight backup window — e.g. run a throwaway pod that curls `https://10.96.0.1:443/api`, and check `cilium status` / `cilium service list` on each agent for the `10.96.0.1:443` entry and its backends. ### Why no repo change Each candidate fix was rejected on the merits, not for lack of options: - **Alert threshold / rule change** — rejected. The alert is correct and did its job; `VeleroBackupFailed` (warning, `for: 0m`) also fired at 03:15 as designed. Changing it would silence a true positive. - **Retry-on-failure for schedules** — Velero `Schedule` has no retry semantics; a failed run is simply skipped until the next cron tick. Adding retry would require a new component (out of scope: no new dependencies). - **Cilium config change** — nothing is misconfigured. `kubeProxyReplacement: true` + KubePrism (`localhost:7445`) worked for 29 consecutive days and works now; endpoints are correct. Changing datapath config to chase a cleared transient would risk a working cluster. - **Drain/cordon orchestration for Talos upgrades** — the repo has no node-reboot automation at all (no kured, no system-upgrade-controller); upgrades are a manual `talosctl` operation. Adding orchestration is a structural change well beyond a surgical fix. ### Notes - **What the issue got right**: the backup failure, the exact error, and that `velero-schedules.yaml` / the Cilium config are not at fault. - **What the issue got wrong or missed**: (a) it scoped the problem to `paperless-daily` — in fact all 12 schedules failed and 11 are stale; (b) it characterised the condition as "intermittent/recovering" based on a ~09:27 snapshot, but the failure window was a sustained 5.5h affecting every run in it; (c) its "recently rebuilt nodes" hypothesis is directionally right but the node ages it cited have since been overtaken — all three nodes were rebooted again this afternoon (16:55–18:38) as the v1.12.11 rollout landed. - **I could not determine the precise datapath mechanism** for `no route to host` (stale eBPF service backends vs. host routing during the rebuild). Talos-level logs are not reachable with the read-only ServiceAccount here. Since the condition has cleared and is not reproducible, I did not speculate further in place of evidence. - **Unrelated latent hazard found while reading the Cilium config** — flagging for a separate issue, deliberately **not** fixed here as it is out of scope for this alert: `kubernetes/talos/cilium.yaml` is an unreferenced third copy of the Cilium manifest (grep shows it is named only in *comments* — nothing consumes it; `bootstrap.sh` reads `patches/cilium-cni.yaml`). It has drifted on datapath keys the comments explicitly say to keep in lockstep — e.g. `kubernetes/talos/cilium.yaml:285` has `enable-ipv6: "false"` while the live `kubernetes/talos/patches/cilium-cni.yaml:303` has `enable-ipv6: "true"`. If anyone ever regenerates the Talos patch from that stale copy during a cold rebuild, the cluster would come up without IPv6. <!-- alert-fix:assessed --> _Assessed by the issue-fix pipeline: no repo change proposed. Remove this comment to make the pipeline retry._
Member

No longer firing. The threshold moved from 30h to 60h in PR #658, and the rule is loaded — confirmed in the mounted rulefiles ConfigMap, not just merged.

The four schedules this covered sat at 46.8-48.5 h since their last success, all from a single failed cycle on the bare-metal upgrade day. At 30h that is a critical page; a single missed cycle is the normal cost of touching the nodes, because Velero moves data through pods and draining a node kills whatever upload is in flight without retrying it.

Nothing is hidden by the change: VeleroBackupFailed still fires on the first failure, so the first missed cycle stays visible. Only the escalation to critical now waits for a second cycle, which one maintenance window cannot explain.

The underlying question — whether these failures are recurring or artefacts of node work — is still open and tracked by the runs due today at 07:45, 08:15 and 08:45 UTC. Over the last 30 days each schedule failed exactly once (home-assistant twice), all on the upgrade day and today, so the evidence so far points at node disruption rather than anything systemic.

No longer firing. The threshold moved from 30h to 60h in PR #658, and the rule is loaded — confirmed in the mounted rulefiles ConfigMap, not just merged. The four schedules this covered sat at 46.8-48.5 h since their last success, all from a single failed cycle on the bare-metal upgrade day. At 30h that is a critical page; a single missed cycle is the normal cost of touching the nodes, because Velero moves data through pods and draining a node kills whatever upload is in flight without retrying it. Nothing is hidden by the change: VeleroBackupFailed still fires on the first failure, so the first missed cycle stays visible. Only the escalation to critical now waits for a second cycle, which one maintenance window cannot explain. The underlying question — whether these failures are recurring or artefacts of node work — is still open and tracked by the runs due today at 07:45, 08:15 and 08:45 UTC. Over the last 30 days each schedule failed exactly once (home-assistant twice), all on the upgrade day and today, so the evidence so far points at node disruption rather than anything systemic.
Sign in to join this conversation.
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: konairius/homelab#628