AKS nevar iegūt image no privāta registry aiz VPN
kubelet velk caur node tīklu, nevis caur pod VPN. Izlemiet pēc node maršrutiem, node DNS, katra endpoint, ko aizskar vilkšana, tad TLS un identitāte.
Jūsu portatīvais dators image iegūst bez problēmām, bet pod paliek ImagePullBackOff. Ieteikums palaist uzņēmuma VPN klientu kā sidecar nepalīdzēs, jo vilkšana notiek pirms jūsu konteinera: kubelet lūdz node container runtime atnest image, un runtime izmanto node tīkla namespace.
Darbību secība nosaka slāni
Vispirms tiek atrisināts nosaukums, tad savienojums, autentifikācija, slāņu lejupielāde, un tikai pēc tam sākas konteiners. Viss, ko pod dara ar VPN, notiek pēc šīs secības, tāpēc strādājošs tunelis klasterī nav vilkšanas pierādījums.
Tāpēc kešatmiņā esošais image ir tik pārliecinoši meli: node, kas image vilka pirms nedēļām, to joprojām piegādā, deployment izskatās vesels, un kļūme parādās tikai tad, kad plānotājs ievieto repliku jaunā node. scale-up vai node nomaiņa ir ierosinātājs, nevis cēlonis.
Trīs nosacījumi nosaka labojumu
Sasniedzamība balstās uz maršrutēšanu, nosaukumu atrisināšanu un endpoint kopumu. Ja node apakštīkls nevar maršrutēt uz registry tīklu, nekādi akreditācijas dati nepalīdzēs. Ja nosaukums netiek atrisināts caur node DNS, savienojums nesāksies. Ja pieejams tikai manifest, bet ne blob, vilkšana apstājas pusceļā.
| Condition | Typical symptom | Where to look |
|---|---|---|
| Node subnet has no route to the registry network | Timeout, no connection | Effective routes on the node NIC, gateway transit, return path on-premises |
| Node resolver cannot see the private zone | Name resolution failure in events | VNet DNS settings and the resolver the node actually uses |
| Only the manifest endpoint is reachable | Auth succeeds, layer download fails | Every hostname the registry hands out during the pull |
| TLS or identity is wrong | Certificate error, 401 or 403 | Server certificate name and trust, scoped pull identity |
Vien VNet peering nenodrošina visas gateway transit konfigurācijas, un vienvirziena maršruts nav strādājošs maršruts. Node vajag atbalstītu ceļu caur paredzēto VPN gateway, un registry pusei atgriešanās maršrutu uz node apakštīklu.
Izlasiet kļūmi pirms risinājuma izvēles
Sāciet ar pod notikumiem un node, kurā tas nokļuva, ar īstajiem nosaukumiem: kubectl describe pod app-example -n team-example un kubectl get pod app-example -n team-example -o wide. Notikuma teksts atšķir neatrisinātu hostname no timeout, sertifikāta noraidījumu no trūkstoša image un autorizācijas kļūdu no visa cita.
Autentifikācija ir visvairāk pārvērtētā svira. imagePullSecret dod runtime registry akreditācijas datus; tas neuzstāda maršrutu, nemaina node resolver un nepadara neuzticamu sertifikātu derīgu. Ja notikums saka, ka vilkšana nebija autorizēta, skatiet identitātes apjomu; ja saka, ka savienojums beidzās, akreditācijas dati nav svarīgi.
Kubernetes dokumentācija par image ir atsauce par vilkšanas uzvedību un privātu registry akreditācijas datiem, un to ir vērts izlasīt pirms tīkla maiņas, jo tā skaidri parāda robežu starp autentifikāciju un transportu.
Uzbūvējiet ceļu zem pod
Strādājiet šādā secībā. Vispirms maršrutējiet node tīklu: pārliecinieties, ka apakštīklam ir atbalstīts ceļš uz registry tīklu, pārbaudiet efektīvos maršrutus uz node, drošības noteikumus abos galos un atgriešanās maršrutu registry pusē.
Tad atrisiniet nosaukumu no node konteksta. Node resolver nav pod DNS konfigurācija, un panākumi pod iekšienē nav host runtime pierādījums. Izmantojiet pārvaldītu privātu DNS, nevis pastāvīgu hosts ierakstu; ieraksts dzīvo līdz node nomaiņai un pēc tam klusi pazūd.
Tad pierādiet katru endpoint. Registry var dot atsevišķu autentifikācijas servisu un atsevišķu blob krātuvi. Sasniegt manifest gandrīz neko nepierāda par slāņiem. Beigās pabeidziet TLS un autorizāciju: sertifikāts, kas derīgs registry nosaukumam un uzticams ar atbalstītu node konfigurāciju, plus vilkšanas identitāte, kas ierobežota ar attiecīgā repo lasīšanu.
Pārbaudiet node, kuru neesat labojis ar rokām
Īstais tests ir svaiga vilkšana un visu slāņu pilnīga lejupielāde piemērotā node, vēlams tādu, kas izveidots ar skalēšanu vai nomaiņu. Tas aptver visus pool, kas varētu izvietot workload, arī aizmirstos. Roku labojums vienā node nav izvietošanas modelis, un nākamais autoscale notikums atradīs robu.
Klastera atjaunošana citā VNet var mainīt ceļu, bet tas ir pēdējais līdzeklis, nevis pirmais diagnostikas solis. Salīdziniet esošo node tīklu ar nepieciešamo privāto maršrutu un atbalstītajām AKS tīkla kontrolēm pirms migrācijas ierosināšanas, un lietotnes savienojumu pēc starta turiet kā atsevišķu pārbaudi: pod saruna ar backend ir cita pārbaude nekā node image lejupielāde.