Docker-тегі pool қабаттасу қатесі VPN маршрутының мәселесі емес
Бір қате бөлу кезінде, екіншісі маршрут өзгергеннен кейін пайда болады. Контейнер мекенжайларына немесе туннельге тиіспес бұрын IPAM ішкі желілерін оқыңыз.
Docker осы мекенжай кеңістігінде pool басқасымен қабаттасады деген хабарламамен желі құрудан бас тартады, ал біреу VPN маршруты себеп болуы керек деп шешеді. Олай болуы мүмкін емес. Бұл қате pool бөлініп жатқанда, бір пакет те болмай тұрып пайда болады, ал қолмен жасалған ядро маршрутының оған ешқандай әсері жоқ. VPN бір қадам кейін маңызды болады, яғни мекенжайы бар контейнер маршрут пайда болғаннан кейін қолжетімсіз болғанда. Екі мәселе, екі дәлелдер жиынтығы, ал оларды араластыру екеуін де түзетпейтін өзгеріс туғызады.
Ұқсас көрінетін екі қате
Бөлу қатесі арифметикалық. Docker сіз сұраған ішкі желіні өзі басқарып отырған ішкі желілермен салыстырады, қиылыс табады және бас тартады. Әзірге ештеңе істемейді, сондықтан маршрут та, контейнер де, тексерілетін трафик те жоқ.
Орындау кезіндегі симптом — қолжетімділік сұрағы. Кеше жауап берген контейнер қазір жауап бермейді, ал хосттың маршруттау кестесінде бірдеңе өзгерді. Контейнер өз мекенжайын әлі ұстап тұр; сұрақ сол мекенжай қай жолды алатынында.
Екеуі де мекенжай жоспарының мәселелері. Олардың тек біреуі ғана Docker мәселесі.
Алдымен бөлінген pool-дарды оқыңыз
Желілерді тізіп, қиылысуы мүмкін желілерді тексеріңіз. Ішкі желі IPAM конфигурациясында тұрады, ал қосылған контейнерлер бөлек тізіледі:
docker network ls
docker network inspect EXISTING_NETWORK
Сол ішкі желіні жаңа желі сұрап отырған pool-мен салыстырыңыз және Compose әр жоба үшін өзінің әдепкі желісін жасайтынын есте сақтаңыз. Ұмытылған жобамен қақтығыс демонмен қақтығысқа тура ұқсайды.
Қызметтегі статикалық ipv4_address — бір контейнердің мекенжайы, pool анықтамасы емес. Оны өзгерту қабаттасуды жоймайды, өйткені қабаттасу контейнерлер арасында емес, желілердің ішкі желілері арасында. Docker-тің network-create анықтамалығы қарапайым көпірлік бөлу үшін қабаттаспайтын ішкі желілерді талап етеді және біреуін анық таңдауды құжаттайды.
VPN-нен өтетін префикс таңдаңыз
Дереу болған қақтығыс пен болашақ маршрут бір таңдаумен шешіледі, сондықтан оны бір рет жасаңыз. Кандидат ауқымды LAN-мен, хост жете алатын әрбір VPN межелігімен және қолданыстағы кез келген басқа overlay-мен салыстырыңыз.
Docker-ті қанағаттандырып, алыс желімен соқтығысатын префикс сізге таза іске қосылатын және туннель көтерілген сәтте қолжетімсіз болатын контейнер береді. Бұл осы мақаладағы екінші қате, және оны кейін диагностикалау қазір одан аулақ болудан әлдеқайда қиын.
Таңдалған ауқымдарды келесі жоба оқи алатын жерге жазыңыз. Бөлінген префикстердің бір жолды тізілімі түсіндірілмеген таймауттардың бір аптасынан арзан.
Желіні әдейі шығарыңыз немесе өзгертіңіз
Жаңа Compose желісі үшін желінің IPAM конфигурациясында пайдаланылмаған префиксті орнатыңыз. Бар жоба үшін қайта нөмірлеуді жоспарлаңыз: тұрақты мекенжайлар, тәуелді қызметтер және желіні қайта құру қадамы — бәрін ескеру қажет, өйткені YAML-ды өңдеу жұмыс істеп тұрған желіні қайта нөмірлемейді.
Егер ескірген желі қақтығысатын бөлуге ие болса, оны жою алдында кім қосылғанын тексеріңіз. docker network rm белсенді endpoint-тер болғанша бас тартады, ал docker stop желі атауын емес, контейнер атауларын немесе ID-лерін қабылдайды. Контейнерді тоқтату pool-ды ұстап тұрған желі анықтамасын да жоймайды.
Кең prune диагностикалық құрал емес. Ол байланысы жоқ жобаларға жетеді және сіз жинағалы отырған дәлелдерді жояды.
Әдепкі pool-дар тек келесі бөлуге көмектеседі
Демонның әдепкі мекенжай pool параметрі болашақ автоматты бөлулерді сіз резервтеген ауқымдардан тыс ұстау арқылы жақсартады. Ол бұрыннан бар желілерді кері күшпен қайта мекенжайламайды, және басқа айқын ішкі желімен қабаттасатын айқын ішкі желіні шешпейді.
Бұл параметрді жеке, жоспарланған өзгеріс ретінде қарастырыңыз, оның өз қайта жүктелуі бар, бір жобаны жөндеудің бөлігі ретінде емес. Екеуін араластыру демонның қайта жүктелуі байланысы жоқ тергеудің ортасына түседі дегенді білдіреді. Оны өз терезесінде жоспарлаңыз. Содан кейін бір жаңа автоматты бөлу шынымен резервтеген ауқымдардан тыс түсетінін растаңыз.
Құру сәтті болған соң, іс жүзінде жұмыс істеп тұрған ішкі желіні тексеріңіз, содан кейін VPN-ді оның мақсатты күйінде ұстап, бір нақты қолданба сұрауын орындаңыз. Егер pool жарамды болып, қатынас әлі де сәтсіз болса, қалған жұмыс — маршрут таңдау, сүзгілеу және қайту жолы. Бұл орындалу уақытындағы тергеу, және ол бөлу қатесін кері күшпен мағынасыз етпейді.
Жұмыс тәртібі: бөлінген pool-дарды оқыңыз, Docker мен VPN межеліктерінен де жалтаратын префикс таңдаңыз, желіні әдейі қайта жасаңыз, содан кейін туннель көтерілген күйде бір сұрауды сынаңыз.