AKS getur ekki sótt image úr einkarekstri á bak við VPN-ið þitt
kubelet sækir um net node-sins, ekki um VPN pod-sins. Ákveddu út frá leiðum node-sins, DNS node-sins, hverjum endpoint sem sóknin snertir, og þá TLS og auðkenni.
Fartölvan þín sækir image-ið án vandræða, en pod-ið situr í ImagePullBackOff, og einhver stingur upp á að keyra fyrirtækja-VPN biðlarann sem sidecar. Það hjálpar ekki, því sóknin á sér stað áður en gámurinn þinn er til: kubelet biður container runtime á node-inu að sækja image-ið, og runtime notar netnafnrými node-sins.
Röð aðgerða ræður laginu
Fyrst kemur upplausn nafnsins, síðan tenging, auðkenning og niðurhal laga, og aðeins þá ræsist gámurinn. Allt sem pod-ið gerir með VPN gerist eftir þá röð, svo göng sem virka í klasanum eru ekki sönnun um sóknina.
Þess vegna er skyndiminnið svo sannfærandi lygi: node sem sótti image-ið fyrir vikum heldur áfram að þjóna því, deployment-ið virðist heilbrigt, og bilunin kemur aðeins fram þegar scheduler setur eintak á nýrra node. Scale-up eða endurnýjun node-sins er kveikjan, ekki orsökin.
Þrjú skilyrði ráða viðgerðinni
Aðgengið byggist á leiðsögn, nafnupplausn og mengi endpoint-a. Ef subnet node-sins kemst ekki að neti registry-sins hjálpa engin skírteini. Ef nafnið leysist ekki upp í gegnum DNS node-sins hefst tengingin ekki. Ef aðeins manifest endpoint-ið næst en ekki blob endpoint-ið sem registry-ið vísar á, mistekst sóknin hálfnuð.
| 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 |
VNet-peering ein og sér gefur ekki allar gateway transit uppsetningar, og leið í aðra áttina er ekki virk leið. Node-ið þarf studda leið um fyrirhugaða VPN-gátt, og registry-hliðin þarf afturleið að subnet node-sins.
Lestu bilunina áður en þú velur viðgerð
Byrjaðu á atburðum pod-sins og node-sins sem það lenti á, með réttum nöfnum: kubectl describe pod app-example -n team-example og kubectl get pod app-example -n team-example -o wide. Texti atburðarins greinir óleyst hostnafn frá timeout, hafnað skírteini frá vantar image, og heimildarbilun frá öllu þessu.
Auðkenning er ofmetnasta verkfærið. imagePullSecret gefur runtime skírteini fyrir registry-ið; það setur ekki upp leið, breytir ekki resolver node-sins og gerir ótraust skírteini ekki gilt. Ef atburðurinn segir að sóknin hafi ekki verið heimiluð skaltu skoða umfang auðkennisins; ef hann segir að tengingin hafi runnið út skipta skírteinin engu.
Kubernetes-skjöl um image eru viðmið um hegðun sóknar og skírteini fyrir einkarekstra, og það borgar sig að lesa þau einu sinni áður en netinu er breytt, því þau gera mörkin milli auðkenningar og flutnings skýr.
Byggðu leiðina undir pod-inu
Vinnið í þessari röð. Fyrst á að leiða net node-sins: staðfestið studda leið að neti registry-sins, athugið virkar leiðir á node-inu, öryggisreglur á báðum endum og afturleiðina hjá registry-inu.
Síðan á að leysa nafnið úr samhengi node-sins. Resolver node-sins er ekki DNS-stilling pod-sins, og árangur inni í pod-i er ekki sönnun um host runtime. Notið stýrt einkanet-DNS í stað varanlegrar hosts-færslu; færslan lifir þar til node-inu er skipt og hverfur þá hljóðlaust.
Síðan á að sanna hvert endpoint. Registry getur boðið sérstaka auðkenningarþjónustu og sérstaka blob-geymslu. Að ná manifest endpoint-inu sannar nánast ekkert um lögin. Að lokum á að klára TLS og heimildir: skírteini gilt fyrir nafn registry-sins og treyst í gegnum studda node-stillingu, auk sóknarauðkennis sem er takmarkað við að lesa það repo.
Staðfestu á node-i sem þú gerðir ekki við í höndunum
Raunverulega prófið er ný sókn og fullt niðurhal allra laga á hæfu node-i, helst einu sem var búið til með skölun eða skipti. Það nær yfir öll pool sem gætu sett workload-ið, líka þau sem þú gleymdir. Handviðgerð á einu node-i er ekki útgáfulíkan, og næsti autoscale-atburður finnur eyðuna.
Að endurskapa klasann í öðru VNet getur breytt leiðinni, en það er síðasta úrræðið, ekki fyrsta greiningarskrefið. Berið saman núverandi net node-sins við nauðsynlega einkaleið og studdar AKS-netstýringar áður en flutningur er lagður til, og haldið tengingu forritsins eftir ræsingu sem sérstakri staðfestingu: pod-ið sem talar við backend sitt er önnur athugun en node-ið sem sækir image-ið.