Amazon EKS Windows f'GA għandha bugs, iżda hija l-aktar mgħaġġla

Amazon EKS Windows f'GA għandha bugs, iżda hija l-aktar mgħaġġla

Wara nofsinhar it-tajjeb, irrid naqsam magħkom l-esperjenza tiegħi fit-twaqqif u l-użu tas-servizz AWS EKS (Elastic Kubernetes Service) għall-kontenituri tal-Windows, jew aħjar dwar l-impossibbiltà li tużah, u l-bug misjub fil-kontenitur tas-sistema AWS, għal dawk li huma interessati f'dan is-servizz għall-kontenituri tal-Windows, jekk jogħġbok taħt cat.

Naf li l-kontenituri tal-Windows mhumiex suġġett popolari, u ftit nies jużawhom, imma xorta ddeċidejt li nikteb dan l-artikolu, peress li kien hemm ftit artikli dwar Habré fuq kubernetes u Windows u għad hemm nies bħal dawn.

Bidu

Kollox beda meta ġie deċiż li s-servizzi fil-kumpanija tagħna jiġu migrati għal kubernetes, li huwa 70% Windows u 30% Linux. Għal dan il-għan, is-servizz cloud AWS EKS tqies bħala waħda mill-għażliet possibbli. Sat-8 ta’ Ottubru 2019, AWS EKS Windows kien fil-Public Preview, bdejt biha, il-verżjoni l-antika 1.11 ta’ kubernetes intużat hemmhekk, iżda ddeċidejt li niċċekkjaha xorta waħda u nara f’liema stadju kien dan is-servizz cloud, jekk kienx qed jaħdem fil-livelli kollha, kif irriżulta, le, kien hemm bug biż-żieda tat-tneħħija tal-miżwed, filwaqt li dawk qodma waqfu jirrispondu permezz ta 'ip intern mill-istess subnet tan-node tal-ħaddiem tat-twieqi.

Għalhekk, ġie deċiż li nabbandunaw l-użu ta 'AWS EKS favur il-cluster tagħna stess fuq kubernetes fuq l-istess EC2, biss ikollna niddeskrivu l-ibbilanċjar u l-HA kollha aħna stess permezz ta' CloudFormation.

Amazon EKS Windows Kontenitur Appoġġ issa Ġeneralment Disponibbli

minn Martin Beeby | fit-08 ta' Ottubru 2019

Qabel ma kelli żmien inżid mudell ma' CloudFormation għall-cluster tiegħi stess, rajt din l-aħbar Amazon EKS Windows Kontenitur Appoġġ issa Ġeneralment Disponibbli

Naturalment, warrabt ix-xogħol kollu tiegħi u bdejt nistudja x'għamlu għal GA, u kif kollox inbidel bil-Public Preview. Iva, AWS, sar tajjeb, aġġorna l-immaġini għan-node tal-ħaddiema twieqi għall-verżjoni 1.14, kif ukoll il-cluster innifsu, il-verżjoni 1.14 f'EKS, issa jappoġġja n-nodi tat-twieqi. Proġett minn Public Preview fi github Huma koprewha u qalu issa uża d-dokumentazzjoni uffiċjali hawn: Appoġġ tal-Windows EKS

L-integrazzjoni ta' cluster EKS fil-VPC u s-subnets attwali

Fis-sorsi kollha, fil-link ta 'hawn fuq fuq it-tħabbira kif ukoll fid-dokumentazzjoni, ġie propost li jiġi skjerat il-cluster jew permezz tal-utilità eksctl proprjetarja jew permezz ta' CloudFormation + kubectl wara, bl-użu biss ta 'subnets pubbliċi fl-Amazon, kif ukoll il-ħolqien ta' VPC separat għal cluster ġdid.

Din l-għażla mhix adattata għal ħafna l-ewwelnett, VPC separat ifisser spejjeż addizzjonali għall-ispiża tiegħu + peering tat-traffiku għall-VPC attwali tiegħek. X'għandhom jagħmlu dawk li diġà għandhom infrastruttura lesta fl-AWS bil-kontijiet Multiple AWS tagħhom stess, VPC, subnets, tabelli tar-rotot, gateway ta' transitu u l-bqija? Naturalment, ma tridx tkisser jew terġa 'tagħmel dan kollu, u għandek bżonn tintegra l-cluster EKS il-ġdid fl-infrastruttura tan-netwerk attwali, billi tuża l-VPC eżistenti u, għas-separazzjoni, l-iktar toħloq subnets ġodda għall-cluster.

Fil-każ tiegħi, intgħażlet din it-triq, użajt il-VPC eżistenti, żidt biss 2 subnets pubbliċi u 2 subnets privati ​​għall-cluster il-ġdid, ovvjament, ir-regoli kollha ġew ikkunsidrati skont id-dokumentazzjoni Oħloq Amazon EKS Cluster VPC tiegħek.

Kien hemm ukoll kundizzjoni waħda: l-ebda nodi tal-ħaddiema fis-subnets pubbliċi li jużaw l-EIP.

eksctl vs CloudFormation

Se nagħmel riżerva minnufih li ppruvajt iż-żewġ metodi ta 'skjerament ta' cluster, fiż-żewġ każijiet l-istampa kienet l-istess.

Se nuri eżempju biss bl-użu eksctl peress li l-kodiċi hawn se jkun iqsar. Bl-użu eksctl, skjera l-cluster fi 3 passi:

1. Aħna noħolqu l-cluster innifsu + Linux ħaddiem node, li aktar tard se jospita kontenituri tas-sistema u dak l-istess vpc-kontrollur ħażin.

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

Sabiex jiġi skjerat għal VPC eżistenti, speċifika biss l-id tas-subnets tiegħek, u eksctl jiddetermina l-VPC innifsu.

Biex tiżgura li n-nodi tal-ħaddiema tiegħek jiġu skjerati biss għal subnet privat, trid tispeċifika --node-private-networking għal nodegroup.

2. Aħna ninstallaw vpc-controller fil-cluster tagħna, li mbagħad jipproċessaw in-nodi tal-ħaddiema tagħna, billi jgħoddu n-numru ta 'indirizzi IP ħielsa, kif ukoll in-numru ta' ENIs fuq l-istanza, iżiduhom u jneħħuhom.

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

3.Wara li l-kontenituri tas-sistema tiegħek nedew b'suċċess fuq in-node tal-ħaddiem tal-Linux tiegħek, inkluż il-vpc-controller, dak kollu li jibqa 'huwa li jinħoloq nodegroup ieħor b'ħaddiema tat-twieqi.

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

Wara li n-node tiegħek ikun ikkonnettjat b'suċċess mal-cluster tiegħek u kollox jidher li hu tajjeb, ikun fl-istat Lest, iżda le.

Żball fil-vpc-controller

Jekk nippruvaw inħaddmu l-imżiewed fuq nodu tal-ħaddiema tat-twieqi, se nġibu l-iżball:

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]

Jekk inħarsu aktar fil-fond, naraw li l-istanza tagħna fl-AWS tidher bħal din:

Amazon EKS Windows f'GA għandha bugs, iżda hija l-aktar mgħaġġla

U għandu jkun hekk:

Amazon EKS Windows f'GA għandha bugs, iżda hija l-aktar mgħaġġla

Minn dan huwa ċar li l-vpc-controller ma wettaqx il-parti tiegħu għal xi raġuni u ma setax iżid indirizzi IP ġodda mal-istanza sabiex il-miżwed ikunu jistgħu jużawhom.

Ejja nħarsu lejn ir-zkuk tal-vpc-controller pod u dan huwa dak li naraw:

log kubectl -n kube-sistema

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.

It-tfittxijiet fuq Google ma wasslu għal xejn, peress li jidher li ħadd ma kien qabad bug bħal dan s'issa, jew ma kienx ippubblika kwistjoni fuqha, l-ewwel kelli naħseb fl-għażliet jien. L-ewwel ħaġa li ġiet f'moħħna kienet li forsi l-vpc-controller ma jistax isolvi ip-10-xxx.ap-xxx.compute.internal u jilħaqha u għalhekk iseħħu żbalji.

Iva, tabilħaqq, nużaw servers tad-DNS tad-dwana fil-VPC u, fil-prinċipju, ma nużawx dawk tal-Amazon, għalhekk lanqas it-trażmissjoni ma kinitx ikkonfigurata għal dan id-dominju ap-xxx.compute.internal. Ittestjajt din l-għażla, u ma ġabitx riżultati, forsi t-test ma kienx nadif, u għalhekk, aktar, meta kkomunikajt b'appoġġ tekniku, ċeda għall-idea tagħhom.

Peress li ma kienx hemm verament xi ideat, il-gruppi tas-sigurtà kollha nħolqu minn eksctl innifsu, għalhekk ma kien hemm l-ebda dubju dwar is-servizz tagħhom, it-tabelli tar-rotot kienu wkoll korretti, nat, dns, aċċess għall-Internet b'nodi tal-ħaddiema kien hemm ukoll.

Barra minn hekk, jekk tuża node tal-ħaddiem f'subnet pubbliku mingħajr ma tuża —node-private-networking, dan in-node ġie immedjatament aġġornat mill-vpc-controller u kollox ħadem bħal clockwork.

Kien hemm żewġ għażliet:

  1. Agħtiha u stenna sakemm xi ħadd jiddeskrivi dan il-bug fl-AWS u jirranġah, u mbagħad tista' tuża AWS EKS Windows b'mod sikur, għax għadhom kemm ħarġu f'GA (għadu 8 ijiem fil-ħin tal-kitba ta' dan l-artikolu), ħafna probabbilment se segwi l-istess triq bħali.
  2. Ikteb lil AWS Support u għidilhom l-essenza tal-problema b'mazz sħiħ ta' zkuk minn kullimkien u pprovalhom li s-servizz tagħhom ma jaħdimx meta tuża l-VPC u s-subnets tiegħek, mhux ta' b'xejn li kellna appoġġ tan-Negozju, għandek tuża mill-inqas darba :)

Komunikazzjoni ma 'inġiniera AWS

Wara li ħloqt biljett fuq il-portal, għażilt bi żball li nirrispondi lili permezz tal-Web - email jew ċentru ta 'appoġġ, permezz ta' din l-għażla jistgħu jwieġbuk wara ftit jiem, minkejja l-fatt li l-biljett tiegħi kellu Severità - Sistema indebolita, li fisser rispons fi żmien <12-il siegħa, u peress li l-pjan ta 'appoġġ tan-Negozju għandu appoġġ 24/7, ttamat għall-aħjar, iżda rriżulta bħal dejjem.

Il-biljett tiegħi tħalla mhux assenjat mill-Ġimgħa sat-Tnejn, imbagħad iddeċidejt li nerġa’ niktebilhom u għażilt l-għażla ta’ rispons taċ-Chat. Wara li stenniet għal żmien qasir, Harshad Madhav inħatar biex jarani, u mbagħad beda...

Aħna debugged magħha online għal 3 sigħat in fila, ittrasferixxi zkuk, skjerament l-istess cluster fil-laboratorju AWS biex jimitaw il-problema, mill-ġdid il-ħolqien tal-cluster min-naħa tiegħi, u l-bqija, l-unika ħaġa li wasalna għaliha hija li minn ir-zkuk kien ċar li r-resol ma kienx qed jaħdem ismijiet ta 'dominju intern tal-AWS, li ktibt dwarhom hawn fuq, u Harshad Madhav talabni biex noħloq twassil, allegatament nużaw DNS tad-dwana u din tista' tkun problema.

Trażmissjoni

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

Dak sar, il-ġurnata kienet spiċċat Harshad Madhav kiteb lura biex jiċċekkja u għandu jaħdem, iżda le, ir-riżoluzzjoni ma għenet xejn.

Imbagħad kien hemm komunikazzjoni ma '2 inġiniera oħra, wieħed sempliċement waqa' mill-chat, apparentement kien jibża 'każ kumpless, it-tieni qatta' l-ġurnata tiegħi mill-ġdid fuq ċiklu sħiħ ta 'debugging, jibgħat zkuk, ħolqien ta' clusters fuq iż-żewġ naħat, fil- tmiem huwa biss qal tajjeb, jaħdem għalija, hawn jien nagħmel kollox pass pass fid-dokumentazzjoni uffiċjali u int u int se tirnexxi.

Għaliha b’mod edukat tlabtu jitlaq u jassenja lil xi ħadd ieħor għall-biljett tiegħi jekk ma tkunx taf fejn għandek tfittex il-problema.

Finali

Fit-tielet jum, inġinier ġdid Arun B. ġie assenjat lili, u mill-bidu nett tal-komunikazzjoni miegħu kien immedjatament ċar li dan ma kienx it-3 inġiniera preċedenti. Huwa qara l-istorja kollha u immedjatament talab biex jiġbor ir-zkuk billi juża l-iskript tiegħu stess fuq ps1, li kien fuq il-github tiegħu. Dan kien segwit mill-ġdid mill-iterazzjonijiet kollha tal-ħolqien ta 'clusters, ħruġ ta' riżultati ta 'kmand, ġbir ta' zkuk, iżda Arun B. kien miexi fid-direzzjoni t-tajba ġġudikati mill-mistoqsijiet li saruli.

Meta wasalna sal-punt li nippermettu -stderrthreshold=debug fil-vpc-controller tagħhom, u x'ġara wara? ovvjament ma taħdimx) il-pod sempliċement ma jibda b'din l-għażla, jaħdem biss -stderrthreshold=info.

Lestejna hawn u Arun B. qal li se jipprova jirriproduċi l-passi tiegħi biex jikseb l-istess żball. L-għada nirċievi tweġiba mingħand Arun B. huwa ma abbandunax dan il-każ, iżda ħa l-kodiċi ta 'reviżjoni tal-vpc-controller tagħhom u sab il-post fejn jinsab u għaliex ma jaħdimx:

Amazon EKS Windows f'GA għandha bugs, iżda hija l-aktar mgħaġġla

Għalhekk, jekk tuża t-tabella tar-rotot prinċipali fil-VPC tiegħek, allura b'mod awtomatiku ma jkollhiex assoċjazzjonijiet mas-subnets meħtieġa, li huma tant meħtieġa għall-vpc-controller, fil-każ ta 'subnet pubbliku, għandha tabella tar-rotta personalizzata. li għandha assoċjazzjoni.

Billi żżid manwalment assoċjazzjonijiet għat-tabella tar-rotot prinċipali bis-subnets meħtieġa, u toħloq mill-ġdid in-nodegroup, kollox jaħdem perfettament.

Nittama li Arun B. verament jirrapporta dan il-bug lill-iżviluppaturi tal-EKS u se naraw verżjoni ġdida ta 'vpc-controller fejn kollox se jaħdem barra mill-kaxxa. Bħalissa l-aħħar verżjoni hija: 602401143452.dkr.ecr.ap-southeast-1.amazonaws.com/eks/vpc-resource-controller:0.2.1
għandu din il-problema.

Grazzi lil kull min qara sa l-aħħar, ittestja dak kollu li se tuża fil-produzzjoni qabel l-implimentazzjoni.

Sors: www.habr.com

Żid kumment