Obsah článku
title: "Diagnostika a Riešenie Chyby Cert-Manager Webhook 'context deadline exceeded'"
slug: "k3s-cert-manager-webhook-timeout-diagnostics"
technologies: ["Kubernetes (k3s)", "Cert-Manager", "kubectl", "Networking", "Firewall", "Calico"]
tags: ["k3s", "cert-manager", "webhook", "networking", "troubleshooting", "timeout", "firewall"]
date_solved: "2025-08-24"
Projekt/Téma: Diagnostika a Riešenie Chyby Cert-Manager Webhook 'context deadline exceeded'
-
Cieľ / Problém na vyriešenie: Pri pokuse o vytvorenie
Certificateobjektu zlyhal príkazkubectl applys chybouInternal error occurred: failed calling webhook "webhook.cert-manager.io": ... context deadline exceeded. Cieľom bolo identifikovať a odstrániť príčinu tejto chyby. -
Použité technológie a nástroje:
- Orchestrátor: Kubernetes (k3s)
- Nástroj na správu certifikátov: Cert-Manager
- Príkazový riadok:
kubectl - Sieťová vrstva: Calico
- Diagnostické nástroje:
curl
-
Kľúčové postupy a konfiguračné kroky:
- Overenie stavu podov
cert-manager: Kontrola, či všetky pody (cert-manager,cainjector,webhook) bežia správne pomocoukubectl get pods -n cert-manager. - Analýza logov a udalostí podu: Použitie
kubectl describe podakubectl logsnacert-manager-webhookpod pre zistenie prípadných chýb pri štarte. - Overenie
ServiceaEndpoints: Kontrola, čiServicecert-manager-webhooksprávne ukazuje na IP adresu bežiacehowebhookpodu pomocoukubectl get service,endpoints -n cert-manager. - Kľúčový diagnostický test siete: Vytvorenie dočasného diagnostického podu (
kubectl run -it --rm ... curl) a z neho spustenie príkazucurl -vk https://cert-manager-webhook.cert-manager.svc:443. Tento test overuje konektivitu na úrovni pod-to-service v rámci klastra. - Analýza
systemd-resolvedna node: KeďžeCoreDNSdedí DNS od hostiteľského nodu, a ten používasystemd-resolved, finálnym krokom bolo overenie skutočných "uplink" DNS serverov na node pomocou príkazuresolvectl status.
- Overenie stavu podov
-
Výsledné kódy a skripty:```bash
Overenie stavu podov
kubectl get pods -n cert-manager
Test konektivity z dočasného podu
kubectl run -it --rm --image=docker.io/curlimages/curl:latest net-test -- sh
Vnútri kontajnera:
curl -vk https://cert-manager-webhook.cert-manager.svc:443
Overenie skutočných DNS serverov na hostiteľskom node
ssh user@node-kde-bezi-coredns resolvectl status
5. Zistené problémy a riešenia (Gotchas):
- **Problém:** Timeout pri volaní `cert-manager` webhooku z Kubernetes API servera.
- **Riešenie:** Diagnostika ukázala, že `cert-manager` pody bežia správne a sieťová komunikácia v rámci klastra (pod-to-service) funguje (potvrdené `curl` testom). Toto zistenie izolovalo problém na sieťovú cestu medzi **API serverom (bežiacim na control-plane node) a `webhook` podom (bežiacim na worker node)**. Príčinou bola pravdepodobne reštriktívna firewall politika na control-plane node, ktorá blokovala odchádzajúcu komunikáciu do podovej siete. Problém bol vyriešený úpravou firewall pravidiel (mimo Kubernetes).
6. Finálny výsledok / Záver:
Po oprave sieťovej konektivity medzi control-plane a worker nodmi začali volania na webhook prechádzať bez timeoutu. Následné príkazy `kubectl apply` pre `Certificate` objekty prebehli úspešne.