Na notebooku sa image stiahne bez problémov, ale pod zostáva v ImagePullBackOff a niekto navrhuje spustiť firemného VPN klienta ako sidecar. Nepomôže, pretože sťahovanie prebehne skôr, než váš kontajner existuje: kubelet požiada container runtime na node, aby image priniesol, a runtime používa sieťový namespace node.

Poradie operácií určuje vrstvu

Najprv rozlíšenie názvu, potom pripojenie, autentifikácia, stiahnutie vrstiev a až potom štart kontajnera. Všetko, čo pod robí s VPN, prichádza po tomto slede, takže funkčný tunel v klastri nie je dôkazom o sťahovaní.

Preto je cachovaný image taká presvedčivá lož: node, ktorý image stiahol pred týždňami, ho stále podáva, deployment vyzerá zdravo a chyba sa objaví až keď plánovač umiestni repliku na novší node. scale-up alebo výmena node je spúšťač, nie príčina.

Tri podmienky určujú opravu

Dostupnosť sa redukuje na routing, rozlišovanie názvov a množinu endpointov. Ak podsiet node nevie routovať do siete registry, žiadne prihlasovacie údaje nepomôžu. Ak sa názov nerozlišuje cez DNS node, spojenie sa nezačne. Ak funguje len manifest a blob nie, sťahovanie zlyhá v polovici.

ConditionTypical symptomWhere to look
Node subnet has no route to the registry networkTimeout, no connectionEffective routes on the node NIC, gateway transit, return path on-premises
Node resolver cannot see the private zoneName resolution failure in eventsVNet DNS settings and the resolver the node actually uses
Only the manifest endpoint is reachableAuth succeeds, layer download failsEvery hostname the registry hands out during the pull
TLS or identity is wrongCertificate error, 401 or 403Server certificate name and trust, scoped pull identity

Samotné VNet peering nedáva všetky usporiadania gateway transit a trasa v jednom smere nie je funkčná trasa. Node potrebuje podporovanú cestu cez zamýšľaný VPN gateway a strana registry spätnú trasu do podsiete node.

Prečítajte chybu, kým vyberiete opravu

Začnite udalosťami podu a node, na ktorý dosadol, so skutočnými názvami: kubectl describe pod app-example -n team-example a kubectl get pod app-example -n team-example -o wide. Text udalosti odlíši nerozlíšené hostname od timeoutu, odmietnutie certifikátu od chýbajúceho image a zlyhanie autorizácie od všetkého toho.

Autentifikácia je najviac preceňovaná páka. imagePullSecret dáva runtime prihlasovacie údaje pre registry; neinštaluje trasu, nemení resolver node a neurobí nedôveryhodný certifikát platným. Ak udalosť hovorí, že sťahovanie nebolo autorizované, pozrite rozsah identity; ak hovorí, že spojenie vypršalo, údaje sú irelevantné.

Dokumentácia Kubernetes o image je referenciou pre správanie sťahovania a prihlasovacie údaje k súkromným registry a oplatí sa ju raz prečítať pred zmenou siete, pretože jasne ukazuje hranicu medzi autentifikáciou a transportom.

Postavte cestu pod podom

Pracujte v tomto poradí. Najprv routujte sieť node: overte, že podsiet má podporovanú cestu do siete registry, skontrolujte efektívne trasy na node, bezpečnostné pravidlá na oboch koncoch a spätnú trasu na strane registry.

Potom rozlíšte názov z kontextu node. Resolver node nie je DNS konfigurácia podu a úspech v podu nie je dôkazom pre host runtime. Používajte spravovaný súkromný DNS namiesto trvalého záznamu v hosts; záznam žije do výmeny node a potom ticho zmizne.

Potom dokážte každý endpoint. Registry môže klientovi dať samostatnú autentifikačnú službu a samostatné blob úložisko. Dosiahnutie manifestu nedokazuje o vrstvách takmer nič. Na záver dokončite TLS a autorizáciu: certifikát platný pre názov registry a dôveryhodný cez podporovanú konfiguráciu node, plus identita sťahovania obmedzená na čítanie toho repozitára.

Overte na node, ktorý ste neopravili ručne

Test, ktorý sa počíta, je čerstvé stiahnutie a úplné prevzatie všetkých vrstiev na vhodnom node, ideálne vytvorenom škálovaním alebo výmenou. Pokrýva všetky pooly, ktoré by mohli umiestniť workload, vrátane zabudnutých. Ručná oprava na jednom node nie je model nasadenia a ďalšia autoscale udalosť nájde medzeru.

Znovuvytvorenie klastra v inom VNet môže zmeniť cestu, ale je to posledná možnosť, nie prvý diagnostický krok. Porovnajte existujúcu sieť node s požadovanou súkromnou trasou a podporovanými sieťovými kontrolami AKS, kým navrhnete migráciu, a držte konektivitu aplikácie po štarte ako samostatné overenie: rozhovor podu s backendom je iná kontrola než sťahovanie image na node.

Súvisiace články