AKS VPN артындағы жеке registry-ден образ тарта алмайды
kubelet образды pod-тың VPN-і арқылы емес, node желісі арқылы тартады. Node маршруттары, node DNS-і, тарту тиетін әр endpoint, содан кейін TLS және сәйкестік бойынша шешіңіз.
Ноутбугіңіз образды еш қиындықсыз тартады, бірақ pod ImagePullBackOff күйінде қалады. Корпоративтік VPN клиентін sidecar ретінде іске қосу ұсынысы көмектеспейді, себебі тарту контейнеріңіз пайда болмай тұрып болады: kubelet node-тегі container runtime-нан образды әкелуді сұрайды, ал runtime node-тың желілік namespace-ін пайдаланады.
Операциялар реті қабатты анықтайды
Алдымен атауды шешу, содан кейін қосылу, аутентификация және қабаттарды жүктеу, тек содан кейін контейнер қосылады. Pod-тың VPN-мен жасайтыны осы реттен кейін болады, сондықтан кластерде жұмыс істеп тұрған туннель тартуға дәлел емес.
Сондықтан кэштегі образ соншалықты сенімді өтірік: апталар бұрын тартқан node оны беруді жалғастырады, deployment сау көрінеді, ал ақау жаңа node-қа replica қойылғанда ғана шығады. scale-up немесе node ауыстыру — себеп емес, түрткі.
Үш шарт жөндеуді анықтайды
Қолжетімділік маршруттауға, атауларды шешуге және endpoint жиынтығына байланысты. Егер node subnet-і registry желісіне маршруттай алмаса, ешбір credential көмектеспейді. Егер атау node DNS-і арқылы шешілмесе, байланыс басталмайды. Тек manifest жетіп, blob жетпесе, тарту ортасында үзіледі.
| 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 gateway transit-тің барлық конфигурациясын бермейді, ал бір бағыттағы маршрут жұмыс істейтін маршрут емес. Node-қа көзделген VPN gateway арқылы қолдау көрсетілген жол, ал registry жағына node subnet-іне қайту маршруты қажет.
Шешім таңдамас бұрын ақауды оқыңыз
Pod оқиғаларынан және ол түскен node-тан бастаңыз, нақты атауларыңызбен: kubectl describe pod app-example -n team-example және kubectl get pod app-example -n team-example -o wide. Оқиға мәтіні шешілмеген hostname-ді timeout-тан, сертификаттан бас тартуды жоқ образдан, ал авторизация қатесін солардың бәрінен ажыратады.
Аутентификация — ең асыра бағаланған тетік. imagePullSecret runtime-қа registry credential-дерін береді; ол маршрут орнатпайды, resolver-ді өзгертпейді және сенімсіз сертификатты жарамды етпейді. Оқиға тарту рұқсатсыз болды десе, сәйкестік ауқымын қараңыз; байланыс уақыты өтті десе, credential маңызсыз.
Kubernetes образдар құжаттамасы тарту тәртібі мен жеке registry credential-дерінің дереккөзі, және желіні өзгерту алдында бір рет оқыған жөн, өйткені ол аутентификация мен тасымал арасындағы шекараны айқындайды.
Pod астында жол салыңыз
Осы ретпен жұмыс істеңіз. Алдымен node желісін маршруттаңыз: subnet-тің registry желісіне қолдау көрсетілген жолы бар екенін растаңыз, node-тегі нақты маршруттарды, екі шеттегі қауіпсіздік ережелерін және registry жағындағы қайту маршрутын тексеріңіз.
Содан кейін атауды node контекстінен шешіңіз. Node resolver-і pod DNS конфигурациясы емес, ал pod ішіндегі табыс host runtime-ке дәлел емес. Тұрақты hosts жазбасының орнына басқарылатын жеке DNS қолданыңыз; жазба node ауыстырылғанша тұрады, содан кейін үнсіз жоғалады.
Содан кейін әр endpoint-ті дәлелдеңіз. Registry клиентке бөлек аутентификация қызметін және бөлек blob қоймасын бере алады. Manifest-ке жету қабаттар туралы ештеңе дәлелдемейді. Соңында TLS пен авторизацияны аяқтаңыз: registry атына жарамды және қолдау көрсетілген node конфигурациясымен сенімді сертификат, қоса сол репозиторийді оқуға шектелген тарту сәйкестігі.
Қолмен жөнделмеген node-та тексеріңіз
Маңызды сынақ — қолайлы node-та жаңа тарту және барлық қабаттарды толық жүктеу, әсіресе scale немесе ауыстыру арқылы жасалған node-та. Бұл workload орналастыра алатын барлық pool-ды қамтиды, ұмытылғандарын да. Бір node-тағы қолмен жөндеу — deployment моделі емес, келесі autoscale оқиғасы олқылықты табады.
Кластерді басқа VNet-те қайта құру жолды өзгертуі мүмкін, бірақ бұл бірінші диагностикалық қадам емес, соңғы шара. Көшіруді ұсынбас бұрын қолданыстағы node желісін қажетті жеке маршрутпен және қолдау көрсетілген AKS желілік бақылауларымен салыстырыңыз, ал іске қосылғаннан кейінгі қолданба байланысын бөлек тексеру ретінде ұстаңыз: pod-тың backend-пен сөйлесуі node-тың образ жүктеуінен өзге тексеріс.