AKS ne može povući sliku iz privatnog registryja iza VPN-a
kubelet povlači kroz mrežu nodea, a ne kroz VPN poda. Odlučite po rutama nodea, DNS-u nodea, svakom endpointu koji povlačenje dotakne, zatim TLS i identitet.
Na vašem prijenosniku slika se povlači bez problema, ali pod stoji u ImagePullBackOff. Prijedlog da pokrenete korporativni VPN klijent kao sidecar neće pomoći jer se povlačenje događa prije nego što vaš kontejner postoji: kubelet traži od container runtimea na nodeu da donese sliku, a runtime koristi mrežni namespace nodea.
Redoslijed operacija određuje sloj
Prvo se razrješava ime slike, pa slijedi povezivanje, autentifikacija i preuzimanje slojeva, a tek onda pokretanje kontejnera. Sve što pod radi s VPN-om dolazi nakon toga, pa tunel koji radi u klasteru nije dokaz o povlačenju.
Zato je keširana slika tako uvjerljiva laž: node koji je sliku povukao prije tjedana nastavlja je posluživati, deployment izgleda zdravo, a kvar se pojavi tek kad scheduler stavi repliku na noviji node. Scale-up ili zamjenu nodea tretirajte kao okidač, ne kao uzrok.
Tri uvjeta određuju popravak
Dostupnost privatnog registryja svodi se na rutiranje, razrješavanje imena i skup endpointa. Ako podmreža nodea ne može rutirati do mreže registryja, nikakve vjerodajnice ne pomažu. Ako se ime ne razrješava kroz DNS put nodea, veza ne počinje. Ako radi samo manifest, a ne blob endpoint, povlačenje pada na pola.
| 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 |
Samo VNet peering ne daje sve rasporede gateway transit-a, a ruta u jednom smjeru nije ruta koja radi. Nodeu treba podržan put kroz predviđeni VPN gateway, a strani registryja povratna ruta do podmreže nodea.
Pročitajte kvar prije odabira popravka
Počnite s događajima poda i nodea na koji je sletio, sa stvarnim imenima: kubectl describe pod app-example -n team-example i kubectl get pod app-example -n team-example -o wide. Tekst događaja razlikuje nerazriješeno ime hosta od timeouta, odbijanje certifikata od nedostajuće slike i grešku autorizacije od svega toga.
Autentifikacija je najprecijenjenija poluga. imagePullSecret daje runtimeu vjerodajnice za registry; ne postavlja rutu, ne mijenja resolver nodea i ne čini nepouzdan certifikat važećim. Ako događaj kaže da povlačenje nije autorizirano, gledajte opseg identiteta; ako kaže da je veza istekla, vjerodajnice su nebitne.
Kubernetes dokumentacija o slikama referenca je za ponašanje povlačenja i vjerodajnice privatnih registryja, i vrijedi je pročitati prije promjene mreže jer jasno pokazuje granicu između autentifikacije i transporta.
Izgradite put ispod poda
Radite ovim redom. Prvo rutirajte mrežu nodea: potvrdite podržan put do mreže registryja, provjerite efektivne rute na nodeu, sigurnosna pravila na oba kraja i povratnu rutu na strani registryja.
Zatim razriješite ime iz konteksta nodea. Resolver nodea nije DNS konfiguracija poda, a uspjeh u podu nije dokaz za host runtime. Koristite upravljani privatni DNS umjesto trajnog unosa u hosts; unos živi do zamjene nodea i onda tiho nestane.
Zatim dokažite svaki endpoint. Registry može dati odvojenu uslugu autentifikacije i odvojeno blob spremište. Dostizanje manifesta ne dokazuje gotovo ništa o slojevima. Na kraju dovršite TLS i autorizaciju: certifikat važeći za ime registryja i pouzdan kroz podržanu konfiguraciju nodea, plus identitet povlačenja ograničen na čitanje tog repozitorija.
Provjerite na nodeu koji niste popravili ručno
Test koji se računa je svježe povlačenje i potpuno preuzimanje svih slojeva na prikladnom nodeu, po mogućnosti stvorenom skaliranjem ili zamjenom. To pokriva sve poolove koji bi mogli postaviti workload, uključujući zaboravljene. Ručna popravka na jednom nodeu nije model isporuke, a sljedeći autoscale događaj naći će prazninu.
Ponovno stvaranje klastera u drugom VNetu može promijeniti put, ali to je posljednje sredstvo, ne prvi dijagnostički korak. Usporedite postojeću mrežu nodea s potrebnom privatnom rutom i podržanim AKS mrežnim kontrolama prije predlaganja migracije, i držite povezanost aplikacije nakon pokretanja odvojenom provjerom: pod koji razgovara s backendom druga je provjera od nodea koji preuzima sliku.