Amazon EKS Windows дар GA хатогиҳо дорад, аммо зудтарин аст

Amazon EKS Windows дар GA хатогиҳо дорад, аммо зудтарин аст

Нимаи хуб, ман мехоҳам бо шумо таҷрибаи худро дар танзим ва истифодаи хидмати AWS EKS (Elastic Kubernetes Service) барои контейнерҳои Windows, аниқтараш дар бораи имконнопазирии истифодаи он ва хатогие, ки дар контейнери системаи AWS пайдо шудааст, мубодила кунам. ки ба ин хидмат барои контейнерҳои Windows таваҷҷӯҳ доранд, лутфан зери гурба.

Ман медонам, ки контейнерҳои Windows мавзӯи маъмул нестанд ва кам одамон аз онҳо истифода мебаранд, аммо ман ба ҳар ҳол тасмим гирифтам, ки ин мақоларо нависам, зеро дар бораи Habré дар kubernetes ва Windows чанд мақола буданд ва ҳоло ҳам чунин одамон ҳастанд.

Оғоз

Ҳамааш вақте оғоз шуд, ки тасмим гирифта шуд, ки хидматҳо дар ширкати мо ба kubernetes интиқол дода шаванд, ки 70% Windows ва 30% Linux мебошад. Бо ин мақсад, хидмати абрии AWS EKS ҳамчун яке аз имконоти имконпазир баррасӣ шуд. То 8 октябри соли 2019, AWS EKS Windows дар пешнамоиши оммавӣ буд, ман бо он оғоз кардам, версияи кӯҳнаи 1.11 кубернетҳо дар он ҷо истифода мешуд, аммо ман қарор додам, ки ба ҳар ҳол онро тафтиш кунам ва бубинам, ки ин хидмати абрӣ дар кадом марҳила буд, оё он кор мекунад ё не умуман, чунон ки маълум шуд, не, он ҷо хатогие бо иловаи нест кардани подкҳо вуҷуд дошт, дар ҳоле ки кӯҳнаҳо тавассути IP-и дохилӣ аз ҳамон зершабакаи гиреҳи коргари windows посух намедиҳанд.

Аз ин рӯ, тасмим гирифта шуд, ки аз истифодаи AWS EKS ба манфиати кластери худамон дар кубернетҳо дар ҳамон EC2 даст кашем, танҳо мо бояд тамоми мувозинат ва HA-ро тавассути CloudFormation тавсиф кунем.

Дастгирии Amazon EKS Windows Container ҳоло ба таври умум дастрас аст

аз ҷониби Мартин Биби | 08 октябри соли 2019

Пеш аз он ки ман барои кластери худам шаблонро ба CloudFormation илова кунам, ман ин хабарро дидам Дастгирии Amazon EKS Windows Container ҳоло ба таври умум дастрас аст

Албатта, ман тамоми кори худро як сӯ гузоштам ва ба омӯхтани он шурӯъ кардам, ки онҳо барои GA чӣ кор карданд ва бо Preview Public Preview чӣ гуна ҳама чиз тағир ёфт. Бале, AWS, хуб кард, тасвирҳоро барои гиреҳи коргари Windows ба версияи 1.14 навсозӣ кард, инчунин худи кластер, версияи 1.14 дар EKS, ҳоло гиреҳҳои Windows-ро дастгирӣ мекунад. Лоиҳа аз ҷониби Public Preview дар github Онҳо инро пӯшонданд ва гуфтанд, ки ҳоло ҳуҷҷатҳои расмиро дар ин ҷо истифода баред: Дастгирии EKS Windows

Интегратсияи кластери EKS ба VPC ва зершабакаҳои ҷорӣ

Дар ҳама манбаъҳо, дар истиноди боло дар эълон ва инчунин дар ҳуҷҷатҳо, пешниҳод карда шуд, ки кластер ё тавассути утилитаи хусусии eksctl ё тавассути CloudFormation + kubectl пас аз танҳо бо истифода аз зершабакаҳои ҷамъиятӣ дар Амазонка ва инчунин сохтани як VPC алоҳида барои кластери нав.

Ин хосият барои бисёриҳо мувофиқ нест; аввалан, VPC-и алоҳида маънои хароҷоти иловагиро барои арзиши он + трафики ҳамбастагӣ ба VPC-и ҳозираи шумо дорад. Онҳое, ки аллакай дар AWS инфрасохтори тайёр доранд, бо ҳисобҳои сершумори AWS, VPC, зершабакаҳо, ҷадвалҳои масир, шлюзи транзитӣ ва ғайра бояд чӣ кор кунанд? Албатта, шумо намехоҳед, ки ҳамаи инро вайрон кунед ё такрор кунед ва ба шумо лозим аст, ки кластери нави EKS-ро ба инфрасохтори шабакавии ҷорӣ бо истифода аз VPC-и мавҷуда ворид кунед ва барои ҷудокунӣ, ҳадди аксар зершабакаҳои навро барои кластер эҷод кунед.

Дар ҳолати ман, ин роҳ интихоб карда шуд, ман VPC-и мавҷударо истифода кардам, барои кластери нав танҳо 2 зершабакаи ҷамъиятӣ ва 2 зершабакаи хусусӣ илова кардам, албатта, ҳама қоидаҳо мувофиқи ҳуҷҷатҳо ба инобат гирифта шуданд. Amazon EKS Cluster VPC-и худро эҷод кунед.

Як шарт низ вуҷуд дошт: ягон гиреҳи корӣ дар зершабакаҳои ҷамъиятӣ бо истифода аз EIP.

eksctl против CloudFormation

Ман фавран фармоиш медиҳам, ки ман ҳарду усули ҷойгиркунии кластерро санҷидам, дар ҳарду ҳолат тасвир якхела буд.

Ман мисолро танҳо бо истифода аз eksctl нишон медиҳам, зеро код дар ин ҷо кӯтоҳтар хоҳад буд. Бо истифода аз eksctl, кластерро дар 3 қадам ҷойгир кунед:

1. Мо худи кластер + гиреҳи кории Linux-ро эҷод мекунем, ки баъдтар контейнерҳои система ва ҳамон нозири vpc-и бадбахтро ҷойгир мекунад.

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

Барои ҷойгиркунӣ дар VPC мавҷуда, танҳо ID-и зершабакаҳои худро муайян кунед ва eksctl худи VPC-ро муайян мекунад.

Барои боварӣ ҳосил кардани он, ки гиреҳҳои коргарии шумо танҳо дар зершабакаи хусусӣ ҷойгир карда мешаванд, шумо бояд --node-private-networking барои гурӯҳи nodegroup -ро муайян кунед.

2. Мо vpc-controller-ро дар кластери худ насб мекунем, ки он гоҳ гиреҳҳои кории моро коркард карда, шумораи суроғаҳои IP-и ройгон ва инчунин шумораи ENI-ҳоро дар инстансия, илова ва хориҷ кардани онҳоро ҳисоб мекунад.

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

3. Пас аз он ки контейнерҳои системаи шумо дар гиреҳи кории Linux, аз ҷумла vpc-controller бомуваффақият ба кор андохта шуданд, танҳо эҷоди як гурӯҳи дигар бо коргарони Windows боқӣ мемонад.

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

Пас аз он ки гиреҳи шумо ба кластери шумо бомуваффақият пайваст шуд ва ҳама чиз хуб ба назар мерасад, он дар ҳолати омода аст, аммо не.

Хатогӣ дар vpc-controller

Агар мо кӯшиш кунем, ки подкҳоро дар гиреҳи коргари Windows кор кунем, мо хатогиро мегирем:

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]

Агар мо амиқтар назар кунем, мебинем, ки мисоли мо дар AWS чунин аст:

Amazon EKS Windows дар GA хатогиҳо дорад, аммо зудтарин аст

Ва он бояд чунин бошад:

Amazon EKS Windows дар GA хатогиҳо дорад, аммо зудтарин аст

Аз ин маълум мешавад, ки vpc-контроллер бо баъзе сабабҳо қисми худро иҷро накардааст ва натавонистааст ба инстансия суроғаҳои нави IP илова кунад, то поддонҳо аз онҳо истифода баранд.

Биёед ба гузоришҳои pod vpc-controller назар андозем ва ин аст он чизе ки мо мебинем:

сабти kubectl -n kube-система

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.

Ҷустуҷӯҳо дар Google ба ҳеҷ чиз оварда нарасонданд, зеро зоҳиран то ҳол ҳеҷ кас чунин хатогиро нагирифтааст ва ё дар ин бора масъала нагузоштааст, ман бояд аввал худам дар бораи вариантҳо фикр мекардам. Аввалин чизе, ки ба хотир омад, ин буд, ки шояд vpc-controller ip-10-xxx.ap-xxx.compute.internal-ро ҳал карда, ба он расида наметавонад ва аз ин рӯ хатогиҳо рух медиҳанд.

Бале, воқеан, мо серверҳои фармоишии DNS-ро дар VPC истифода мебарем ва дар асл, мо серверҳои Amazon-ро истифода намебарем, аз ин рӯ ҳатто интиқол барои ин домени ap-xxx.compute.internal танзим карда нашудааст. Ман ин вариантро санҷидам ва он натиҷа надод, шояд санҷиш тоза набуд ва аз ин рӯ, минбаъд ҳангоми муошират бо дастгирии техникӣ, ман ба фикри онҳо таслим шудам.

Азбаски воқеан ягон ғоя вуҷуд надошт, ҳама гурӯҳҳои амниятӣ аз ҷониби худи eksctl таъсис дода шудаанд, бинобар ин, дар бораи хидматрасонии онҳо шубҳае набуд, ҷадвалҳои хатсайрҳо низ дуруст буданд, nat, dns, дастрасӣ ба Интернет бо гиреҳҳои коргарӣ низ вуҷуд дошт.

Ғайр аз он, агар шумо гиреҳи коргариро дар зершабакаи ҷамъиятӣ бе истифода аз —node-private-networking ҷойгир кунед, ин гиреҳ аз ҷониби vpc-controller фавран навсозӣ карда шуд ва ҳама чиз мисли кори соат кор мекард.

Ду вариант вуҷуд дошт:

  1. Аз он даст кашед ва мунтазир бошед, ки касе ин хаторо дар AWS тавсиф кунад ва онҳо онро ислоҳ кунанд, ва он гоҳ шумо метавонед AWS EKS Windows-ро бехатар истифода баред, зеро онҳо нав дар GA бароварда шудаанд (дар вақти навиштани ин мақола 8 рӯз гузашт), бисёриҳо эҳтимолан бо ҳамон роҳ равед.
  2. Ба Дастгирии AWS нависед ва ба онҳо моҳияти мушкилотро бо як қатор гузоришҳо аз ҳама ҷо бигӯед ва ба онҳо исбот кунед, ки хидмати онҳо ҳангоми истифодаи VPC ва зершабакаҳои шумо кор намекунад, ин бесабаб нест, ки мо дастгирии бизнес доштем, шумо бояд истифода баред ақаллан як бор :)

Муошират бо муҳандисони AWS

Пас аз сохтани чипта дар портал, ман иштибоҳан интихоб кардам, ки ба ман тавассути веб - почтаи электронӣ ё маркази дастгирӣ посух гӯям, ба воситаи ин интихоб онҳо метавонанд пас аз чанд рӯз ба шумо ҷавоб диҳанд, сарфи назар аз он ки чиптаи ман вазнинӣ - система вайрон шудааст, ки маънои вокунишро дар давоми <12 соат дошт ва азбаски нақшаи дастгирии соҳибкорӣ 24/7 дастгирии дорад, ман ба беҳтарин умед доштам, аммо чун ҳамеша маълум шуд.

Чиптаи ман аз рӯзи ҷумъа то рӯзи душанбе таъин нашуда буд, пас ман қарор додам, ки дубора ба онҳо нависам ва варианти ҷавоби Чатро интихоб кардам. Пас аз мунтазири кутох Харшад Мадхав маро ба дидор таъин карданд ва баъд сар шуд...

Мо бо он дар тӯли 3 соат пай дар пай онлайн ислоҳ кардем, гузоришҳоро интиқол додем, ҳамон кластерро дар лабораторияи AWS барои тақлид кардани мушкилот ҷойгир кардем, кластерро аз ҷониби ман дубора эҷод кардем ва ғайра, ягона чизе, ки мо ба он расидем, ин аст, ки аз гузоришҳо маълум буд, ки резол номҳои домени дохилии AWS кор намекунад, ки ман дар бораи онҳо дар боло навишта будам ва Ҳаршад Мадхав аз ман хоҳиш кард, ки интиқол эҷод кунам, гӯё мо DNS-и фармоиширо истифода мебарем ва ин метавонад мушкилот бошад.

Интиқол

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

Хамин тавр шуд, руз гузашт.Харшад Мадхав чавоб навишт, то онро тафтиш кунад ва он бояд кор кунад, аммо не, резолюция умуман кумак накард.

Сипас бо 2 муҳандиси дигар муошират шуд, яке танҳо аз чат хориҷ шуд, зоҳиран ӯ аз як парвандаи мураккаб метарсид, дуюмӣ рӯзи маро боз бо як давраи пурраи ислоҳ, фиристодани гузоришҳо, эҷоди кластерҳо дар ҳарду ҷониб, дар охири ӯ танҳо гуфт, хуб, ин барои ман кор мекунад, дар ин ҷо ман ҳама чизро қадам ба қадам дар ҳуҷҷатҳои расмӣ иҷро мекунам ва шумо ва шумо муваффақ хоҳед шуд.

Ба он ман боадабона аз ӯ хоҳиш кардам, ки рафта, каси дигарро ба чиптаи ман таъин кунад, агар шумо намедонед, ки мушкилотро дар куҷо ҷустуҷӯ кунед.

Натиҷа

Рузи сейум ба назди ман инженери нав Арун Б. таъин шуд ва аз ибтидои муошират бо у фавран маълум шуд, ки ин 3 инженери пештара нест. Вай тамоми таърихро хонд ва фавран хоҳиш кард, ки гузоришҳоро бо истифода аз скрипти худ дар ps1, ки дар github-и ӯ буд, ҷамъ кунад. Пас аз ин боз тамоми такрори эҷоди кластерҳо, баровардани натиҷаҳои фармонҳо, ҷамъоварии гузоришҳо идома ёфт, аммо Арун Б. аз рӯи саволҳои ба ман додашуда ба самти дуруст ҳаракат мекард.

Мо кай ба нуқтаи фаъол кардани -stderrthreshold=debug дар vpc-назоратчии онҳо расидем ва баъд чӣ шуд? албатта он кор намекунад) поддон танҳо бо ин хосият оғоз намешавад, танҳо -stderrthreshold=info кор мекунад.

Мо дар ин ҷо ба итмом расидем ва Арун Б. гуфт, ки ӯ кӯшиш мекунад, ки қадамҳои маро такрор кунад, то ҳамон хатогиро ба даст орад. Рӯзи дигар ман аз Арун Б ҷавоб мегирам, ки ӯ ин парвандаро тарк накардааст, балки рамзи баррасии vpc-контроллери онҳоро гирифт ва ҷойе ёфт, ки он дар куҷост ва чаро он кор намекунад:

Amazon EKS Windows дар GA хатогиҳо дорад, аммо зудтарин аст

Ҳамин тариқ, агар шумо ҷадвали масири асосиро дар VPC-и худ истифода баред, он гоҳ ба таври нобаёнӣ он бо зершабакаҳои зарурӣ, ки барои vpc-controller хеле заруранд, ассотсиатсия надорад, дар сурати зершабакаи ҷамъиятӣ, он дорои ҷадвали масири фармоишӣ мебошад. ки иттиходия дорад.

Бо дастӣ илова кардани ассотсиатсияҳо барои ҷадвали масири асосӣ бо зершабакаҳои зарурӣ ва аз нав сохтани гурӯҳи гиреҳ, ҳама чиз ба таври комил кор мекунад.

Ман умедворам, ки Arun B. воқеан дар бораи ин хато ба таҳиягарони EKS гузориш медиҳад ва мо версияи нави vpc-controller-ро мебинем, ки дар он ҳама чиз берун аз қуттӣ кор хоҳад кард. Дар айни замон версияи охирин: 602401143452.dkr.ecr.ap-souteast-1.amazonaws.com/eks/vpc-resource-controller:0.2.1
ин мушкилот дорад.

Ташаккур ба ҳар касе, ки то охир хондааст, ҳама чизеро, ки шумо дар истеҳсолот истифода мебаред, пеш аз татбиқ санҷед.

Манбаъ: will.com

Илова Эзоҳ