Ноутбугіңіз образды еш қиындықсыз тартады, бірақ 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 жетпесе, тарту ортасында үзіледі.

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

Тек 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-тың образ жүктеуінен өзге тексеріс.

Қатысты мақалалар