fix(JDWLABS-465): retry porkbun-ddns across pods on transient DNS failures - #394
Open
jdwillmsen wants to merge 1 commit into
Open
fix(JDWLABS-465): retry porkbun-ddns across pods on transient DNS failures#394jdwillmsen wants to merge 1 commit into
jdwillmsen wants to merge 1 commit into
Conversation
…e attempt Two weeks of history show 8 of ~1140 runs failing with "Could not resolve host" on every in-pod curl attempt (~35s), spread across two nodes, with both CoreDNS pods healthy throughout and the next scheduled run always succeeding. The in-pod retry window was too short and a fresh pod was never tried. Raise backoffLimit to 2 so the job controller retries with a new pod, extend curl to six attempts (~65s per pod), and cap the Job at 600s so retries can never spill into the next 15-minute slot. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B6FWEmAs2beQvKnX4LwWN2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
porkbun-ddns-29799945failed withcurl: (6) Could not resolve host: api.porkbun.com(all 4 in-pod attempts, 09:45:01-09:45:36 UTC) and firedKubeJobFailed. WithbackoffLimit: 0a single pod's resolver outage is a failed Job.Investigation: transient, not node-specific
BackoffLimitExceeded. Four ontalos-lx0-6a4(Aug 18-21), four ontalos-4h8-zy6(Aug 26-29) -- failures follow wherever the scheduler happens to place the job, not one node. Every failed run was followed by a successful one 15 minutes later on the same node (~0.7% failure rate).--retry 3 --retry-delay 5) was live for the last two failures; the blip simply outlasted its ~35s window.up=1, steady ~4 req/s each, zeroSERVFAIL, zerocoredns_forward_healthcheck_broken_total, noerrors-plugin log lines in 24h, 0 restarts. Neither CoreDNS pod runs ontalos-4h8-zy6.talos-4h8-zy6Ready, kubelet targets up, CPU ~3%, no node events. Other pods on the node (argocd application-controller) logged no lookup errors at the time.CoreDNS*/KubeDNS*/Cilium*alerts fired in 14d.Conclusion: sporadic, short (35s < t < 15min) resolver blips seen only by individual freshly-created pods, on multiple nodes. CoreDNS itself is not implicated. A likely contributor is the CNI state on worker nodes (both
kube-flannelandciliumDaemonSets are present, mid-migration;cilium_*metrics are not scraped so drop counters could not be checked) -- noted below as a follow-up, not addressed here.Fix
tenants/platform/services/porkbun-ddns/postInstall/cronjob.yaml:backoffLimit: 0 -> 2-- a fresh pod (new sandbox/endpoint) is the retry that matches the observed failure shape.--retry 3 -> --retry 5(--retry-all-errors --retry-delay 5and-4unchanged): ~65s per pod attempt.activeDeadlineSeconds: 600so pod retries plus controller backoff can never spill into the next 15-minute slot (concurrencyPolicy: Forbidalready prevents overlap).An outage that outlasts all three pods still fails the Job and pages, which remains the case worth surfacing.
Evidence / validation
yamllintclean,kubeconform -strictvalidsh -nandshellcheck -s shtools/check-image-pins.py,tools/check-orphaned-manifests.pycleanFollow-up (out of scope)
cilium_drop_count_totalscraped so drops are observable.KubeJobFailedalso fired inai-sre,jdwillmsen-prd,vaultover 14d; not inspected).🤖 Generated with Claude Code
https://claude.ai/code/session_01B6FWEmAs2beQvKnX4LwWN2