VPN පිටුපස ඇති පුද්ගලික registry එකකින් AKS හට image ඇදගත නොහැක
kubelet node හි ජාලය හරහා ඇදගනී, pod හි VPN හරහා නොවේ. node මාර්ග, node DNS, ඇදගැනීම ස්පර්ශ කරන සෑම endpoint, පසුව TLS සහ අනන්යතාවය අනුව තීරණය කරන්න.
ඔබේ ලැප්ටොප් එක image ඇදගන්නවා කිසිදු ප්රශ්නයක් නැතිව, නමුත් pod ImagePullBackOff තුළ රැඳී ඇත. ආයතනික VPN client එක sidecar ලෙස ධාවනය කරන ලෙස යෝජනාව උදව් නොවේ, මන්ද ඇදගැනීම ඔබේ container පවතින්නට පෙර සිදුවේ: kubelet node හි container runtime එකට image ගෙන එන ලෙස කියයි, runtime node හි ජාල namespace භාවිතා කරයි.
ක්රියාවන්ගේ අනුපිළිවෙල ස්ථරය තීරණය කරයි
පළමුව නාම විභේදනය, පසුව සම්බන්ධතාවය, සත්යාපනය, ස්ථර බාගැනීම සහ පසුව container ආරම්භ වේ. pod VPN සමඟ කරන සියල්ල ඊට පසුව සිදුවේ, එබැවින් cluster තුළ ක්රියාත්මක වන ටනලය ඇදගැනීම පිළිබඳ සාක්ෂියක් නොවේ.
එබැවින් cache හි image විශ්වාසනීය බොරුවකි: සති ගණනකට පෙර image ඇදගත් node එය දිගටම ලබා දෙයි, deployment සුවපත් ලෙස පෙනේ, නව node එකක replica තැබූ විට පමණක් අසාර්ථකත්වය පෙනේ. scale-up හෝ node මාරුවීම හේතුව නොවේ, ට්රිගරයයි.
කොන්දේසි තුනක් නිවැරදි කිරීම තීරණය කරයි
ප්රවේශය රවුටින්, නාම විභේදනය සහ endpoint කට්ටලය මත රඳා පවතී. node හි subnet එකට registry ජාලයට route කළ නොහැකි නම් කිසිදු 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, certificate ප්රතික්ෂේපය සහ නොමැති image, සහ අවසර අසාර්ථකත්වය එකිනෙකින් වෙන් කරයි.
සත්යාපනය වඩාත්ම අධි ඇස්තමේන්තුගත මෙවලමයි. imagePullSecret runtime ට registry credential ලබා දෙයි; එය මාර්ගයක් ස්ථාපනය නොකරයි, resolver නොවෙනස් කරයි, විශ්වාස නොකළ certificate වලංගු නොකරයි. සිදුවීම කියන්නේ ඇදගැනීමට අවසර නොතිබුණු බව නම් අනන්යතාවයේ පරාසය බලන්න; සම්බන්ධතාවය timeout වූ බව කියන්නේ නම් credential අදාළ නොවේ.
Kubernetes image ලේඛන ඇදගැනීමේ හැසිරීම සහ පුද්ගලික registry credential සඳහා මූලාශ්රයයි, ජාලය වෙනස් කිරීමට පෙර එක් වරක් කියවීම වටී, මන්ද එය සත්යාපනය සහ ප්රවාහනය අතර සීමාව පැහැදිලි කරයි.
pod යටින් මාර්ගය ගොඩනගන්න
මෙම අනුපිළිවෙලින් වැඩ කරන්න. පළමුව node ජාලය route කරන්න: subnet ට registry ජාලයට සහාය දක්වන මාර්ගයක් ඇති බව තහවුරු කරන්න, node හි ඵලදායී මාර්ග, දෙපස ආරක්ෂක නීති සහ registry පැත්තේ ආපසු මාර්ගය පරීක්ෂා කරන්න.
පසුව node හි සන්දර්භයෙන් නම විභේදනය කරන්න. node හි resolver යනු pod හි DNS සැකසුම නොවේ, pod තුළ සාර්ථකත්වය host runtime සඳහා සාක්ෂියක් නොවේ. ස්ථිර hosts පිවිසුමක් වෙනුවට කළමනාකරණය කරන පුද්ගලික DNS භාවිතා කරන්න; පිවිසුම node මාරු වන තෙක් පවතී, පසුව නිහඬව අතුරුදහන් වේ.
පසුව සෑම endpoint එකක්ම ඔප්පු කරන්න. registry ක්ලයන්ට් එකට වෙනම සත්යාපන සේවාවක් සහ වෙනම blob ගබඩාවක් දිය හැක. manifest වෙත ළඟා වීම ස්ථර ගැන පාහේ කිසිවක් ඔප්පු නොකරයි. අවසානයේ TLS සහ අවසර සම්පූර්ණ කරන්න: registry නාමයට වලංගු සහ සහාය දක්වන node වින්යාසය හරහා විශ්වාසනීය certificate, සහ එම repository කියවීමට සීමිත ඇදගැනීමේ අනන්යතාවය.
අතින් අලුත්වැඩියා නොකළ node එකක පරීක්ෂා කරන්න
සැබෑ පරීක්ෂණය වන්නේ සුදුසු node එකක නව ඇදගැනීමක් සහ සියලු ස්ථර සම්පූර්ණයෙන් බාගැනීමයි, scale හෝ මාරුවීමෙන් සෑදූ node එකක් නම් වඩා හොඳය. එය workload තැබිය හැකි සියලු pool ආවරණය කරයි, අමතක වූවන් ද ඇතුළුව. එක් node එකක අතින් සිදු කරන අලුත්වැඩියාව deployment ආකෘතියක් නොවේ, ඊළඟ autoscale සිදුවීම පරතරය සොයා ගනී.
වෙනත් VNet එකක cluster නැවත සෑදීම මාර්ගය වෙනස් කළ හැක, නමුත් එය පළමු රෝග විනිශ්චය පියවර නොවේ, අවසාන ක්රමයයි. සංක්රමණය යෝජනා කිරීමට පෙර වර්තමාන node ජාලය අවශ්ය පුද්ගලික මාර්ගය සහ සහාය දක්වන AKS ජාල පාලන සමඟ සසඳන්න, සහ ආරම්භයෙන් පසු යෙදුම් සම්බන්ධතාවය වෙනම පරීක්ෂාවක් ලෙස තබන්න: pod සහ backend අතර සංවාදය node හි image බාගැනීමට වඩා වෙනස් පරීක්ෂාවකි.