Амазон ЕКС Виндовс у ГА има грешке, али је најбржи

Амазон ЕКС Виндовс у ГА има грешке, али је најбржи

Добар дан, желим да поделим са вама своје искуство у постављању и коришћењу АВС ЕКС (Еластиц Кубернетес Сервице) сервиса за Виндовс контејнере, односно о немогућности његовог коришћења и грешци пронађеној у контејнеру АВС система, за оне који су заинтересовани за ову услугу за Виндовс контејнере, молимо под кат.

Знам да Виндовс контејнери нису популарна тема, и мало ко их користи, али сам се ипак одлучио да напишем овај чланак, пошто је било пар чланака на Хабре-у о кубернетес-у и Виндовс-у и још увек има таквих људи.

почетак

Све је почело када је одлучено да се услуге у нашој компанији мигрирају на кубернетес, који је 70% Виндовс и 30% Линук. У ту сврху, АВС ЕКС цлоуд сервис је разматран као једна од могућих опција. До 8. октобра 2019. АВС ЕКС Виндовс је био у јавном прегледу, почео сам са њим, тамо је коришћена стара верзија кубернетеса 1.11, али сам ипак одлучио да то проверим и видим у којој је фази овај клауд сервис, да ли ради уопште, како се испоставило, не, ту је била грешка са додатком уклањања подова, док су стари престали да реагују преко интерног ип-а из исте подмреже као и виндовс воркер чвор.

Због тога је одлучено да се одустане од употребе АВС ЕКС-а у корист сопственог кластера на кубернетес-у на истом ЕЦ2, само што бисмо морали сами да опишемо све балансирање и ХА преко ЦлоудФорматион-а.

Подршка за Амазон ЕКС Виндовс Цонтаинер је сада генерално доступна

би Мартин Бееби | дана 08

Пре него што сам имао времена да додам шаблон у ЦлоудФорматион за свој сопствени кластер, видео сам ову вест Подршка за Амазон ЕКС Виндовс Цонтаинер је сада генерално доступна

Наравно, оставио сам сав свој посао по страни и почео да проучавам шта су урадили за ГА и како се све променило са Публиц Превиев-ом. Да, АВС, браво, ажурирао је слике за виндовс воркер чвор на верзију 1.14, као и сам кластер, верзија 1.14 у ЕКС-у, сада подржава виндовс чворове. Пројекат од јавног прегледа на гитхуб Заташкали су то и рекли да сада користите званичну документацију овде: ЕКС Виндовс подршка

Интегрисање ЕКС кластера у тренутни ВПЦ и подмреже

У свим изворима, на линку изнад у најави као иу документацији, предложено је да се кластер распореди или преко власничког ексцтл услужног програма или преко ЦлоудФорматион + кубецтл након, користећи само јавне подмреже у Амазону, као и креирање одвојени ВПЦ за нови кластер.

Ова опција није погодна за многе, прво, одвојени ВПЦ значи додатне трошкове за своје трошкове + пееринг саобраћај на ваш тренутни ВПЦ. Шта би требало да раде они који већ имају готову инфраструктуру у АВС-у са сопственим вишеструким АВС налозима, ВПЦ-ом, подмрежама, табелама рута, транзитним пролазом и тако даље? Наравно, не желите да разбијете или поновите све ово, и потребно је да интегришете нови ЕКС кластер у тренутну мрежну инфраструктуру, користећи постојећи ВПЦ и, за раздвајање, највише креирате нове подмреже за кластер.

У мом случају је изабран овај пут, користио сам постојећи ВПЦ, додао само 2 јавне подмреже и 2 приватне подмреже за нови кластер, наравно, сва правила су узета у обзир према документацији Креирајте свој Амазон ЕКС Цлустер ВПЦ.

Такође је постојао један услов: нема радних чворова у јавним подмрежама које користе ЕИП.

ексцтл вс ЦлоудФорматион

Одмах ћу резервисати да сам испробао оба начина постављања кластера, у оба случаја слика је била иста.

Показаћу пример само користећи ексцтл пошто ће код овде бити краћи. Користећи ексцтл, распоредите кластер у 3 корака:

1. Креирамо сам кластер + Линук радни чвор, који ће касније угостити системске контејнере и тај исти несрећни впц-контролер.

eksctl create cluster 
--name yyy 
--region www 
--version 1.14 
--vpc-private-subnets=subnet-xxxxx,subnet-xxxxx 
--vpc-public-subnets=subnet-xxxxx,subnet-xxxxx 
--asg-access 
--nodegroup-name linux-workers 
--node-type t3.small 
--node-volume-size 20 
--ssh-public-key wwwwwwww 
--nodes 1 
--nodes-min 1 
--nodes-max 2 
--node-ami auto 
--node-private-networking

Да бисте се применили на постојећи ВПЦ, само наведите ид ваше подмреже, а ексцтл ће одредити сам ВПЦ.

Да бисте били сигурни да су ваши раднички чворови распоређени само на приватну подмрежу, морате навести --ноде-привате-нетворкинг за групу чворова.

2. Инсталирамо впц-контролер у наш кластер, који ће затим обрадити наше радне чворове, рачунајући број слободних ИП адреса, као и број ЕНИ-ова на инстанци, додајући их и уклањајући их.

eksctl utils install-vpc-controllers --name yyy --approve

3. Након што се ваши системски контејнери успешно покрену на вашем Линук радном чвору, укључујући впц-контролер, све што остаје је да креирате другу групу чворова са Виндовс радницима.

eksctl create nodegroup 
--region www 
--cluster yyy 
--version 1.14 
--name windows-workers 
--node-type t3.small 
--ssh-public-key wwwwwwwwww 
--nodes 1 
--nodes-min 1 
--nodes-max 2 
--node-ami-family WindowsServer2019CoreContainer 
--node-ami ami-0573336fc96252d05 
--node-private-networking

Након што се ваш чвор успешно повеже са вашим кластером и чини се да је све у реду, он је у статусу Реади, али не.

Грешка у впц-контролеру

Ако покушамо да покренемо подове на чвору Виндовс Воркер, добићемо грешку:

NetworkPlugin cni failed to teardown pod "windows-server-iis-7dcfc7c79b-4z4v7_default" network: failed to parse Kubernetes args: pod does not have label vpc.amazonaws.com/PrivateIPv4Address]

Ако погледамо дубље, видимо да наша инстанца у АВС-у изгледа овако:

Амазон ЕКС Виндовс у ГА има грешке, али је најбржи

А требало би да буде овако:

Амазон ЕКС Виндовс у ГА има грешке, али је најбржи

Из овога је јасно да впц-контролер из неког разлога није испунио свој део и није могао да дода нове ИП адресе инстанци како би подови могли да их користе.

Хајде да погледамо евиденције впц-контролер под и ево шта видимо:

кубецтл лог -н ​​коцкасти систем

I1011 06:32:03.910140       1 watcher.go:178] Node watcher processing node ip-10-xxx.ap-xxx.compute.internal.
I1011 06:32:03.910162       1 manager.go:109] Node manager adding node ip-10-xxx.ap-xxx.compute.internal with instanceID i-088xxxxx.
I1011 06:32:03.915238       1 watcher.go:238] Node watcher processing update on node ip-10-xxx.ap-xxx.compute.internal.
E1011 06:32:08.200423       1 manager.go:126] Node manager failed to get resource vpc.amazonaws.com/CIDRBlock  pool on node ip-10-xxx.ap-xxx.compute.internal: failed to find the route table for subnet subnet-0xxxx
E1011 06:32:08.201211       1 watcher.go:183] Node watcher failed to add node ip-10-xxx.ap-xxx.compute.internal: failed to find the route table for subnet subnet-0xxx
I1011 06:32:08.201229       1 watcher.go:259] Node watcher adding key ip-10-xxx.ap-xxx.compute.internal (0): failed to find the route table for subnet subnet-0xxxx
I1011 06:32:08.201302       1 manager.go:173] Node manager updating node ip-10-xxx.ap-xxx.compute.internal.
E1011 06:32:08.201313       1 watcher.go:242] Node watcher failed to update node ip-10-xxx.ap-xxx.compute.internal: node manager: failed to find node ip-10-xxx.ap-xxx.compute.internal.

Претраге на Гуглу нису довеле до ничега, пошто очигледно нико још није ухватио такву грешку, или није објавио проблем на њој, морао сам прво сам да смислим опције. Прва ствар која ми је пала на памет је да можда впц-контролер не може да разреши ип-10-ккк.ап-ккк.цомпуте.интернал и да допре до њега и стога долази до грешака.

Да, заиста, ми користимо прилагођене ДНС сервере у ВПЦ-у и, у принципу, не користимо Амазонове, тако да чак ни прослеђивање није конфигурисано за овај ап-ккк.цомпуте.интернал домен. Тестирао сам ову опцију, и није донела резултате, можда тест није био чист, па сам даље, у комуникацији са техничком подршком, подлегао њиховој идеји.

Пошто заправо није било никаквих идеја, све безбедносне групе је креирао сам ексцтл, тако да није било сумње у њихову употребљивост, табеле рута су такође биле исправне, нат, днс, приступ Интернету са радничким чворовима је такође био ту.

Штавише, ако распоредите радни чвор на јавну подмрежу без коришћења —ноде-привате-нетворкинг, впц-контролер је одмах ажурирао овај чвор и све је функционисало као сат.

Постојале су две опције:

  1. Одустаните од тога и сачекајте док неко не опише ову грешку у АВС-у и поправи је, а онда можете безбедно да користите АВС ЕКС Виндовс, јер су управо објављени у ГА (прошло је 8 дана у време писања овог чланка), многи ће вероватно иди истим путем као и ја.
  2. Пишите АВС подршци и реците им суштину проблема са читавом гомилом дневника са свих страна и докажите им да њихова услуга не ради када користите ваш ВПЦ и подмреже, није за ништа што смо имали пословну подршку, требало би да користите бар једном :)

Комуникација са АВС инжењерима

Након што сам креирао тикет на порталу, грешком сам изабрао да ми одговорим путем веб-е-маила или центра за подршку, преко ове опције могу да вам одговоре уопште након неколико дана, упркос чињеници да је мој тикет имао озбиљност – оштећење система, што значио одговор у року од <12 сати, а пошто план пословне подршке има подршку 24/7, надао сам се најбољем, али испало је као и увек.

Моја карта је остала нераспоређена од петка до понедељка, а онда сам одлучио да им поново пишем и изабрао опцију за одговор на ћаскање. Након кратког чекања, Харшад Мадхав је одређен да ме види, а онда је почело...

Отклањали смо грешке са њим на мрежи 3 сата заредом, преносили евиденције, постављали исти кластер у АВС лабораторију да бисмо емулирали проблем, поново креирали кластер са моје стране, и тако даље, једино до чега смо дошли је да од у евиденцијама је било јасно да ресол не ради АВС интерна имена домена, о чему сам писао горе, а Харсхад Мадхав ме је замолио да креирам прослеђивање, наводно користимо прилагођени ДНС и то би могао бити проблем.

Прослеђивање

ap-xxx.compute.internal  -> 10.x.x.2 (VPC CIDRBlock)
amazonaws.com -> 10.x.x.2 (VPC CIDRBlock)

То је оно што је учињено, дан је готов, Харсхад Мадхав је писао да то провери и требало би да функционише, али не, резолуција уопште није помогла.

Затим је дошло до комуникације са још 2 инжењера, један је једноставно испао из ћаскања, очигледно се плашио сложеног случаја, други је поново провео дан на пуном циклусу отклањања грешака, слању евиденције, креирању кластера са обе стране, у крај само је рекао добро, мени ради, ево ја радим све корак по корак у званичној документацији и успећете и ви и ви.

На шта сам га љубазно замолио да оде и додели неког другог на моју карту ако не знаш где да потражиш проблем.

Финале

Трећег дана ми је додељен нови инжењер Арун Б. и од самог почетка комуникације са њим одмах је било јасно да то нису претходна 3 инжењера. Прочитао је целу историју и одмах затражио да прикупи дневнике користећи сопствену скрипту на пс1, која је била на његовом гитхубу. Поново су уследиле све итерације креирања кластера, излаза командних резултата, прикупљања логова, али Арун Б. се кретао у правом смеру судећи по питањима која су ми постављена.

Када смо дошли до тачке да омогућимо -стдерртхресхолд=дебуг у њиховом впц-контролеру и шта се даље догодило? наравно да не ради) под једноставно не почиње са овом опцијом, ради само -стдерртхресхолд=инфо.

Овде смо завршили и Арун Б. је рекао да ће покушати да репродукује моје кораке да добије исту грешку. Следећег дана добијам одговор од Аруна Б. није одустао од овог случаја, већ је преузео прегледни код њиховог впц-контролера и пронашао место где се налази и зашто не ради:

Амазон ЕКС Виндовс у ГА има грешке, али је најбржи

Дакле, ако користите главну табелу рута у вашем ВПЦ-у, онда она подразумевано нема асоцијације са потребним подмрежама, које су толико неопходне за впц-контролор, у случају јавне подмреже, она има прилагођену табелу рута која има асоцијацију.

Ручним додавањем асоцијација за главну табелу рута са потребним подмрежама и поновним креирањем групе чворова, све функционише савршено.

Надам се да ће Арун Б. заиста пријавити ову грешку ЕКС програмерима и видећемо нову верзију впц-контролера где ће све функционисати из кутије. Тренутно најновија верзија је: 602401143452.дкр.ецр.ап-соутхеаст-1.амазонавс.цом/екс/впц-ресоурце-цонтроллер:0.2.1
има овај проблем.

Хвала свима који су прочитали до краја, тестирајте све што ћете користити у продукцији пре имплементације.

Извор: ввв.хабр.цом

Додај коментар