diff --git a/kubernetes/infrastructure/coredns-config/configmap.yaml b/kubernetes/infrastructure/coredns-config/configmap.yaml index 93d60c6e..7e92966b 100644 --- a/kubernetes/infrastructure/coredns-config/configmap.yaml +++ b/kubernetes/infrastructure/coredns-config/configmap.yaml @@ -56,9 +56,17 @@ data: forward . /etc/resolv.conf { max_concurrent 1000 } + # serve_stale mirrors the renner.uno:53 block (issue #393): when the + # upstream resolver browns out, keep answering from expired cache + # instead of SERVFAILing every public name cluster-wide. Seen on + # 2026-07-30 01:22-01:26Z (~1150 SERVFAILs) — it killed a Velero Kopia + # maintenance job, which runs with backoffLimit 0, on the Hetzner S3 + # endpoint (issue #439). cluster.local is exempt from the cache above, + # so in-cluster Service records are never served stale. cache 30 { disable success cluster.local disable denial cluster.local + serve_stale 1h immediate } loop reload