Талабот барои таҳияи барнома дар Kubernetes

Имрӯз ман нақша дорам, ки дар бораи чӣ гуна навиштани барномаҳо ва чӣ гуна талабот барои кор кардани аризаи шумо дар Kubernetes сӯҳбат кунам. Барои он ки дар барнома ягон дарди сар вуҷуд надошта бошад, то ба шумо лозим нест, ки дар атрофи он ягон "харида" ихтироъ ва созед - ва ҳама чиз тавре кор мекунад, ки худи Кубернетес пешбинӣ кардааст.

Ин лексия як қисми "Мактаби шабонаи Slurm дар Кубернетес" Шумо метавонед лекцияхои кушоди назариявии Мактаби шабонаро тамошо кунед дар Youtube, гурӯҳбандӣ ба рӯйхати навозиш. Барои онҳое, ки матнро аз видео бартарӣ медиҳанд, мо ин мақоларо омода кардем.

Номи ман Павел Селиванов, айни замон ман муҳандиси пешбари DevOps дар Mail.ru Cloud Solutions мебошам, мо абрҳо месозем, кубернетҳои идоракуниро месозем ва ғайра. Вазифаҳои ман ҳоло кӯмак дар таҳия, паҳн кардани ин абрҳо, паҳн кардани барномаҳое, ки мо менависем ва бевосита таҳияи асбобҳоеро, ки мо барои корбарони худ пешкаш мекунем, дар бар мегирад.

Талабот барои таҳияи барнома дар Kubernetes

Ман DevOps кор мекардам, ман фикр мекунам, ки дар тӯли се соли охир. Аммо, аслан, ман он кореро мекунам, ки DevOps тақрибан панҷ сол боз мекунад. Пеш аз он, ман бештар ба корҳои маъмурӣ машғул будам. Ман муддати тӯлонӣ бо Кубернетес кор карданро сар кардам - ​​аз он вақте ки ман бо он кор карданам тақрибан чор сол гузашт.

Умуман, ман вақте оғоз кардам, ки Kubernetes версияи 1.3 буд, эҳтимол ва шояд 1.2 - вақте ки он ҳанӯз дар навзоди худ буд. Ҳоло он дигар дар ибтидои худ нест - ва маълум аст, ки дар бозор ба муҳандисоне, ки мехоҳанд Kubernetes-ро иҷро кунанд, талабот зиёд аст. Ва ширкатҳо ба чунин одамон талабот хеле зиёданд. Бинобар ин дар хакикат ин лекция пайдо шуд.

Агар дар бораи накшаи он чизе, ки ман дар бораи он сухан хохам рафт, сухан ронем, чунин менамояд, дар қавс навишта шудааст (TL;DR) — «хеле дароз; нахонед». Пешниҳоди ман имрӯз аз рӯйхатҳои беохир иборат хоҳад буд.

Талабот барои таҳияи барнома дар Kubernetes

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

Зеро, дар маҷмӯъ, ин маълумот "ctrl+c, ctrl+v" аст, аз ҷумла, Викии мо дар бахши DevOps, ки дар он мо талаботро барои таҳиягарон навиштаем: "бачаҳо, то мо барномаи шуморо дар Кубернетес, ин бояд чунин бошад."

Аз ин рӯ, презентатсия як рӯйхати калон буд. Бубахшед. Ман кӯшиш мекунам, ки то ҳадди имкон нақл кунам, то агар имкон дилгиркунанда набошад.

Он чизе ки мо ҳоло дида мебароем:

  • инҳо, аввалан, гузоришҳо (журналҳои барнома?), бо онҳо дар Кубернетес чӣ кор кардан лозим аст, бо онҳо чӣ бояд кард, онҳо чӣ гуна бояд бошанд;
  • бо конфигуратсияҳо дар Kubernetes чӣ бояд кард, беҳтарин ва бадтарин роҳҳои конфигуратсияи барнома барои Kubernetes кадомҳоянд;
  • Биёед дар бораи он сӯҳбат кунем, ки санҷишҳои дастрасӣ дар маҷмӯъ чӣ гунаанд ва онҳо бояд чӣ гуна бошанд;
  • биёед дар бораи он чӣ гуна хомӯшии зебо сӯҳбат кунем;
  • боз дар бораи захирахо сухан ронем;
  • Биёед бори дигар ба мавзӯи нигоҳдории маълумот муроҷиат кунем;
  • ва дар охир ман ба шумо мегӯям, ки истилоҳи ин замимаи абрии пурасрор чист. Абрнокӣ, ҳамчун сифат аз ин истилоҳ.

Гузоришҳо

Ман тавсия медиҳам, ки аз гузоришҳо сар кунед - бо он ҷое, ки ин гузоришҳоро дар Кубернетес кӯчондан лозим аст. Акнун шумо як барномаро дар Кубернетес оғоз кардед. Ба гуфтаи классикон, қаблан барномаҳо ҳамеша дар ҷое дар файл сабтҳо менавиштанд. Барномаҳои бад гузоришҳоро ба файл дар феҳристи хонагии таҳиягаре, ки барномаро оғоз кардааст, навиштанд. Барномаҳои хуб гузоришҳоро ба файл дар ҷое менависанд /var/log.

Талабот барои таҳияи барнома дар Kubernetes

Мутаносибан, минбаъд, маъмурони хуб дар инфрасохтори худ баъзе чизҳоеро танзим карда буданд, ки ин гузоришҳо метавонанд гардиш кунанд - ҳамон rsyslog, ки ба ин гузоришҳо назар мекунад ва вақте ки бо онҳо чизе рӯй медиҳад, онҳо зиёданд, нусхаҳои эҳтиётиро эҷод мекунад, дар он ҷо гузоришҳоро мегузорад. , файлҳои кӯҳна, зиёда аз як ҳафта, шаш моҳ ва вақти дигарро нест мекунад. Дар назария, мо бояд муқаррарот дошта бошем, то танҳо аз сабаби он ки барнома гузоришҳоро менависад, ҷой дар серверҳои истеҳсолӣ (серверҳои ҷангӣ?) тамом нашавад. Ва мутаносибан тамоми истедсолот аз дисоби чубу тахта катъ нагардид.

Вақте ки мо ба ҷаҳони Кубернетес мегузарем ва ҳамон чизро дар он ҷо иҷро мекунем, аввалин чизе, ки шумо метавонед ба он диққат диҳед, ин аст, ки одамон ҳангоми навиштани гузоришҳо дар файл, навиштани онҳоро идома медиҳанд.

Маълум мешавад, ки агар мо дар бораи Кубернетес сухан ронем, ҷои дурусти навиштани гузоришҳо дар ҷое аз контейнери докер ин танҳо навиштани онҳо аз барнома ба Stdout/Stderr, яъне ҷараёнҳои стандартии баромади системаи оператсионӣ мебошад. баромади хатои стандартӣ. Ин роҳи дуруст, соддатарин ва мантиқтарин барои гузоштани гузоришҳо дар Docker ва махсусан дар Кубернетис мебошад. Зеро агар аризаи шумо гузоришҳоро ба Stdout/Stderr нависад, пас он ба Docker ва иловаи Kubernetes вобаста аст, ки бо ин гузоришҳо чӣ кор кардан лозим аст. Docker ба таври нобаёнӣ файлҳои махсуси худро дар формати JSON месозад.

Дар ин ҷо саволе ба миён меояд, ки шумо бо ин гузоришҳо чӣ кор хоҳед кард? Осонтарин роҳ равшан аст, мо тавони онро дорем kubectl logs ва ба ин гузоришҳои ин "подҳо" нигаред. Аммо, эҳтимол, ин як варианти хуб нест - чизи дигаре бояд бо гузоришҳо анҷом дода шавад.

Ҳоло, биёед дар айни замон сӯҳбат кунем, зеро мо ба мавзӯи гузоришҳо дахл кардем, дар бораи он чизе, ки логҳо бояд ба назар монанд бошанд. Яъне, ин бевосита ба Кубернетес дахл надорад, аммо вақте ки мо дар бораи чӣ кор кардан бо гузоришҳо фикр карданро оғоз мекунем, хуб мебуд, ки дар ин бора низ фикр кунем.

Ба мо як навъ асбобе лозим аст, ки ба таври мусолиматомез, ки ин гузоришҳоро, ки докери мо ба файлҳои худ мегузорад, гирифта, ба ҷое мефиристад. Умуман, мо одатан як намуди агентро дар дохили Kubernetes дар шакли DaemonSet - коллектори логро ба кор меандозем, ки ба он танҳо гуфта мешавад, ки гузоришҳое, ки Docker ҷамъ мекунанд, дар куҷо ҷойгиранд. Ва ин агенти ҷамъоварӣ онҳоро танҳо мегирад, шояд ҳатто бо ягон роҳ онҳоро дар роҳ таҳлил мекунад, шояд онҳоро бо баъзе мета-маълумоти иловагӣ ғанӣ гардонад ва дар ниҳоят онҳоро барои нигоҳдорӣ ба ҷое мефиристад. Дар он ҷо аллакай вариантҳо имконпазиранд. Аз ҳама маъмултарин эҳтимол Elasticsearch аст, ки дар он шумо метавонед гузоришҳоро нигоҳ доред ва шумо метавонед онҳоро аз он ҷо ба осонӣ дарёфт кунед. Сипас, бо истифода аз дархост, бо истифода аз Kibana, масалан, дар асоси онҳо графикҳо созед, дар асоси онҳо огоҳиҳо созед ва ғайра.

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

Зеро аввалан, дар файл дар дохили контейнер ворид кардани гузоришҳо душвор аст. Шумо бояд аввал ба контейнер равед, дар он ҷо кор кунед ва сипас ба гузоришҳо нигаред. Нуктаи навбатӣ ин аст, ки агар шумо дар файл сабтҳо дошта бошед, пас контейнерҳо одатан муҳити минималистӣ доранд ва ҳеҷ гуна утилитаҳое вуҷуд надоранд, ки одатан барои кори муқаррарӣ бо гузоришҳо лозиманд. Онҳоро дафн кунед, ба онҳо нигоҳ кунед, онҳоро дар муҳаррири матн кушоед. Лаҳзаи дигар ин аст, ки мо дар як файл дар дохили контейнер сабтҳо дорем, агар ин контейнер нест карда шавад, шумо мефаҳмед, гузоришҳо ҳамроҳи он мемиранд. Мутаносибан, ҳама гуна аз нав оғоз кардани контейнер маънои онро дорад, ки дигар гузоришҳо вуҷуд надоранд. Боз, варианти бад.

Ва нуқтаи охирин ин аст, ки шумо одатан дар дохили контейнерҳо аризаи худро доред ва ин аст - ин одатан ягона равандест. Дар бораи ягон раванде, ки файлҳоро бо сабтҳои шумо гардонад, ҳеҷ гап нест. Ҳамин ки сабтҳо ба файл навишта мешаванд, ин маънои онро дорад, ки бубахшед, мо сервери истеҳсолиро аз даст медиҳем. Зеро, аввалан, пайдо кардани онҳо душвор аст, ҳеҷ кас онҳоро пайгирӣ намекунад, инчунин ҳеҷ кас онҳоро назорат намекунад - мувофиқан, файл то он даме, ки ҷой дар сервер тамом нашавад, беохир меафзояд. Аз ин рӯ, ман бори дигар мегӯям, ки ворид шудан ба Docker, махсусан дар Кубернетес, ба файл фикри бад аст.

Нуктаи навбатӣ, дар ин ҷо ман мехоҳам бори дигар дар ин бора сӯҳбат кунам - азбаски мо ба мавзӯи гузоришҳо дахл мекунем, хуб мебуд, ки дар бораи он сӯҳбат кунем, ки гузоришҳо чӣ гуна бояд бошанд, то кор бо онҳо қулай бошад. Тавре ки ман гуфтам, мавзӯъ мустақиман бо Kubernetes алоқаманд нест, аммо он ба мавзӯи DevOps хеле хуб алоқаманд аст. Дар мавзӯи рушди фарҳанг ва дӯстии байни ин ду шӯъбаи гуногун - Dev ва Ops, то ҳама бароҳат бошанд.

Ин маънои онро дорад, ки идеалӣ имрӯз, гузоришҳо бояд дар формати JSON навишта шаванд. Агар шумо ягон барномаи нофаҳмои худ дошта бошед, ки гузоришҳоро дар форматҳои нофаҳмо менависад, зеро шумо ягон намуди чоп ё чизе ба он монандро ворид мекунед, пас вақти он расидааст, ки google як навъ чаҳорчӯба, як навъ печандае, ки ба шумо имкон медиҳад сабти муқаррариро амалӣ кунед; параметрҳои сабти номро дар JSON дар он ҷо фаъол созед, зеро JSON формати оддӣ аст, таҳлили он оддӣ аст.

Агар JSON-и шумо мувофиқи баъзе меъёрҳо кор накунад, ҳеҷ кас намедонад, ки чӣ гуна аст, пас ҳадди аққал гузоришҳоро дар формате нависед, ки онро таҳлил кардан мумкин аст. Дар ин ҷо, баръакс, дар бораи он фикр кардан лозим аст, ки масалан, агар шумо як қатор контейнерҳоро кор карда истода бошед ё танҳо бо nginx коркард карда бошед ва ҳар як танзимоти сабти худро дошта бошад, пас эҳтимол ба назар мерасад, ки ин барои шумо хеле нороҳат хоҳад буд. онҳоро таҳлил кунед. Зеро барои ҳар як мисоли нави nginx шумо бояд таҳлилгари шахсии худро нависед, зеро онҳо гузоришҳоро ба таври гуногун менависанд. Боз ҳам, шояд дар бораи он фикр кардан лозим буд, ки ҳамаи ин nginx конфигуратсияи сабти якхела дошта бошанд ва ҳама гузоришҳои худро комилан яксон навишт. Ҳамин чиз ба ҳама барномаҳо дахл дорад.

Дар ниҳоят, ман инчунин мехоҳам, ки ба оташ сӯзишворӣ илова кунам, ки дар идеалӣ, аз сабтҳои формати бисёрсатрӣ канорагирӣ кардан лозим аст. Гап дар сари он аст, ки агар шумо боре бо коллекторҳои чӯбкорӣ кор карда бошед, пас эҳтимоли зиёд дидаед, ки онҳо ба шумо чӣ ваъда медиҳанд, ки онҳо метавонанд бо гузоришҳои бисёрсатрӣ кор кунанд, чӣ гуна ҷамъоварӣ карданро медонанд ва ғайра. Дар хакикат, ба фикри ман, имруз ягон коллектяв журналхои бисьёрхатро муътадил, пурра ва бехато чамъ карда наметавонад. Ба таври инсонӣ, то он қулай ва бе хато бошад.

Талабот барои таҳияи барнома дар Kubernetes

Аммо пайгирии стек ҳамеша гузоришҳои бисёрсатр аст ва чӣ гуна аз онҳо пешгирӣ кардан мумкин аст. Савол дар ин ҷо ин аст, ки журнал сабти рӯйдод аст ва stactrace аслан гузориш нест. Агар мо гузоришҳоро ҷамъоварӣ кунем ва онҳоро дар ҷое дар Elasticsearch ҷойгир кунем ва аз онҳо графикҳо кашем, дар сайти худ баъзе гузоришҳоро дар бораи фаъолияти корбар созем, пас вақте ки шумо пайгирии стекро мегиред, ин маънои онро дорад, ки ягон чизи ғайричашмдошт рӯй медиҳад. Вазъияти ҳалнашаванда дар барномаи шумо. Ва ба таври худкор бор кардани пайгирии стек дар ҷое ба системае, ки онҳоро пайгирӣ карда метавонад, маъно дорад.

Ин нармафзор аст (ҳамон Sentry), ки махсус барои кор бо пайгирии стек сохта шудааст. Он метавонад фавран вазифаҳои автоматиро эҷод кунад, онҳоро ба касе таъин кунад, ҳангоми рух додани стактрасҳо ҳушдор диҳад, ин стактрасҳоро аз рӯи як намуд гурӯҳбандӣ кунад ва ғайра. Аслан, вақте ки мо дар бораи логҳо гап мезанем, дар бораи стактрасҳо сухан гуфтан чандон маъно надорад, зеро инҳо, дар ниҳоят, чизҳои гуногун бо мақсадҳои гуногун мебошанд.

Танзимот

Минбаъд мо дар бораи конфигуратсия дар Kubernetes сӯҳбат мекунем: бо он чӣ бояд кард ва чӣ гуна замимаҳои дохили Kubernetes бояд танзим карда шаванд. Умуман, ман одатан мегӯям, ки Docker дар бораи контейнерҳо нест. Ҳама медонанд, ки Docker дар бораи контейнерҳо аст, ҳатто онҳое, ки бо Docker зиёд кор накардаанд. Такрор мекунам, Docker дар бораи контейнерҳо нест.

Докер, ба андешаи ман, дар бораи стандартҳо аст. Ва барои ҳама чиз стандартҳо вуҷуд доранд: стандартҳо барои сохтани замимаи шумо, стандартҳо барои насб кардани замимаи шумо.

Талабот барои таҳияи барнома дар Kubernetes

Ва ин чиз - мо онро қаблан истифода мебурдем, он танҳо бо пайдоиши контейнерҳо маъмул шуд - ин чиз тағирёбандаҳои ENV (муҳит) номида мешавад, яъне тағирёбандаҳои муҳити зист, ки дар системаи оператсионии шумо ҳастанд. Ин умуман як роҳи беҳтарини танзими замимаи шумост, зеро агар шумо дар JAVA, Python, Go, Perl барномаҳо дошта бошед ва онҳо ҳама метавонанд хости пойгоҳи додаҳо, корбари пойгоҳи додаҳо, тағирёбандаҳои пароли махзани маълумотро хонанд, пас он беҳтарин аст. Шумо барномаҳое доред, ки бо чаҳор забони гуногун дар нақшаи пойгоҳи додаҳо ҳамин тавр танзим карда шудаанд. Дигар конфигуратсияҳои гуногун вуҷуд надоранд.

Ҳама чизро метавон бо истифода аз тағирёбандаҳои ENV танзим кард. Вақте ки мо дар бораи Kubernetes гап мезанем, роҳи олии эълон кардани тағирёбандаҳои ENV дар дохили Deployment мавҷуд аст. Мувофиқи он, агар мо дар бораи маълумоти махфӣ сухан ронем, мо метавонем фавран маълумоти махфиро аз тағирёбандаҳои ENV (паролҳо ба пойгоҳи додаҳо ва ғайра) ба махфӣ тела диҳем, кластери махфӣ эҷод кунем ва дар тавсифи ENV дар Deployment нишон диҳем, ки мо мустақиман эълон намекунем. арзиши ин тағирёбанда ва арзиши ин тағирёбандаи пароли махзани маълумот аз махфӣ хонда мешавад. Ин рафтори стандартии Kubernetes аст. Ва ин беҳтарин вариант барои танзими замимаҳои шумост. Танҳо дар сатҳи код, ин боз ба таҳиягарон дахл дорад. Агар шумо DevOps бошед, шумо метавонед пурсед: "Бачаҳо, лутфан барномаи худро барои хондани тағирёбандаҳои муҳити зист таълим диҳед. Ва мо ҳама хушбахт хоҳем буд ».

Агар ҳама дар ширкат ҳамон тағирёбандаҳои муҳити номбаршударо хонанд, ин хеле хуб аст. Барои он ки ин тавр нашавад, ки баъзеҳо интизори пойгоҳи додаҳои postgres ҳастанд, дигарон мунтазири номи пойгоҳи додаҳо ҳастанд, дигарон интизори чизи дигаре ҳастанд, дигарон мунтазири як dbn як навъ ҳастанд, то мувофиқан якхела вуҷуд дошта бошад.

Мушкилот вақте ба миён меояд, ки шумо ин қадар тағирёбандаҳои муҳити зист доред, ки шумо танҳо Deployment -ро мекушоед - ва панҷсад сатри тағирёбандаҳои муҳити зист вуҷуд дорад. Дар ин ҳолат, шумо танҳо тағирёбандаҳои муҳити зистро аз даст додаед - ва ба шумо дигар лозим нест, ки худро шиканҷа кунед. Дар ин ҳолат, оғоз кардани истифодаи конфигуратсияҳо маъно дорад. Яъне, барномаи худро барои истифодаи конфигуратсияҳо омӯзонед.

Ягона савол ин аст, ки конфигуратсия он чизест, ки шумо фикр мекунед. Config.pi конфигуратсияе нест, ки барои истифода қулай бошад. Ё баъзе конфигуратсияҳо дар формати шахсии шумо, ба таври алтернативӣ боистеъдод - ин ҳам конфигуратсияе, ки ман дар назар дорам, нест.

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

Мувофиқи он, ба ғайр аз YAML, шумо инчунин метавонед, масалан, JSON-ро истифода баред, таҳлил тақрибан ба мисли YAML дар робита ба хондани конфигуратсияи барнома аз он ҷо қулай аст. Барои одамон хондан ба таври назаррас нороҳат аст. Шумо метавонед формати кӯшиш, як ла ini. Хондан аз нуқтаи назари инсон хеле қулай аст, аммо коркарди он ба таври худкор метавонад нороҳат бошад, ба он маъно, ки агар шумо ягон бор хоҳед, ки конфигуратсияҳои шахсии худро тавлид кунед, формати ini барои тавлид аллакай нороҳат аст.

Аммо дар ҳар сурат, новобаста аз он ки шумо кадом форматро интихоб мекунед, гап дар он аст, ки аз нуқтаи назари Кубернетес он хеле қулай аст. Шумо метавонед тамоми конфигуратсияи худро дар дохили Kubernetes, дар ConfigMap ҷойгир кунед. Ва он гоҳ ин конфигуратсияро бигиред ва хоҳиш кунед, ки онро дар дохили подшипникатон дар ягон директорияи мушаххас насб кунед, ки дар он ҷо барномаи шумо конфигуратсияро аз ин конфигуратсия хонда хоҳад кард, ки гӯё он танҳо як файл бошад. Дар асл, ин корест хуб аст, вақте ки шумо дар барномаи худ имконоти зиёди конфигуратсия доред. Ё ин танҳо як намуди сохтори мураккаб аст, лона вуҷуд дорад.

Агар шумо харитаи конфигуратсия дошта бошед, шумо метавонед барномаи худро хеле хуб омӯзед, масалан, ба таври худкор тағиротро дар файле, ки дар он конфигмап насб карда шудааст, пайгирӣ кунед ва инчунин ҳангоми тағир додани конфигуратсияҳо барномаи худро ба таври худкор аз нав бор кунед. Ин одатан як варианти идеалӣ хоҳад буд.

Боз, ман аллакай дар ин бора гуфта будам - ​​маълумоти махфӣ дар конфигмап нест, маълумоти махфӣ дар тағирёбанда нест, маълумоти махфӣ дар махфият нест. Аз он ҷо, ин маълумоти махфиро ба дипломатия пайваст кунед. Одатан мо ҳама тавсифи объектҳои Kubernetes, ҷойгиркунӣ, конфигмапҳо, хидматҳоро дар git нигоҳ медорем. Мувофиқи он, гузоштани парол ба пойгоҳи додаҳо дар git, ҳатто агар он git-и шумо бошад, ки шумо дар дохили ширкат доред, фикри бад аст. Зеро, ҳадди аққал, git ҳама чизро дар хотир дорад ва тоза кардани паролҳо аз он ҷо он қадар осон нест.

Санҷиши саломатӣ

Нуктаи навбатӣ ин чизест, ки санҷиши саломатӣ номида мешавад. Умуман, санҷиши саломатӣ танҳо тафтиш кардани кор кардани аризаи шумо мебошад. Дар айни замон, мо аксар вақт дар бораи баъзе веб-барномаҳо сухан меронем, ки барои онҳо, мувофиқан, аз нуқтаи назари санҷиши саломатӣ (бехтараш дар ин ҷо ва минбаъд тарҷума накунед) ин як URL-и махсусе хоҳад буд, ки онҳо ҳамчун коркард мекунанд. стандарт, онҳо одатан чунин мекунанд /health.

Ҳангоми дастрасӣ ба ин URL, мувофиқан, барномаи мо мегӯяд, ки "ҳа, хуб, ҳама чиз бо ман хуб аст, 200" ё "не, ҳама чиз бо ман хуб нест, тақрибан 500". Мувофиқи он, агар замимаи мо http набошад, на веб-барнома, мо ҳоло дар бораи як навъ демон гап мезанем, мо метавонем фаҳмем, ки чӣ гуна санҷиши саломатӣ анҷом дода шавад. Яъне ин шарт нест, агар барнома http набошад, ҳама чиз бидуни санҷиши саломатӣ кор мекунад ва ин корро ба ҳеҷ ваҷҳ иҷро кардан мумкин нест. Шумо метавонед давра ба давра баъзе маълумотро дар файл навсозӣ кунед, шумо метавонед як фармони махсус барои демони худ пайдо кунед, масалан: daemon status, ки "бале, ҳама чиз хуб аст, демон кор мекунад, зинда аст" мегӯяд.

Он барои чӣ? Аввалин ва аз ҳама аёнтарин чиз ин аст, ки чаро санҷиши саломатӣ лозим аст - барои фаҳмидани он, ки барнома кор мекунад. Ман дар назар дорам, ки ин танҳо аблаҳ аст, вақте ки он ҳоло фаъол аст, ба назар чунин менамояд, ки он кор мекунад, то боварӣ ҳосил кунед, ки он кор мекунад. Ва маълум мешавад, ки барнома кор мекунад, контейнер кор мекунад, инстансия кор мекунад, ҳама чиз хуб аст - ва он гоҳ корбарон аллакай ҳама рақамҳои телефонро аз дастгирии техникӣ буриданд ва мегӯянд, ки "шумо чӣ ҳастед ..., шумо хоб рафтааст, ҳеҷ чиз кор намекунад».

Санҷиши саломатӣ маҳз чунин роҳест барои аз нуқтаи назари корбар дидани он, ки он кор мекунад. Яке аз усулхо. Биёед инро ин тавр кунем. Аз нуқтаи назари Кубернетес, ин инчунин як роҳи фаҳмидани кай оғоз шудани барнома аст, зеро мо мефаҳмем, ки байни вақте ки контейнер оғоз, сохта ва оғоз карда шудааст ва вақте ки барнома бевосита дар ин контейнер оғоз шудааст, фарқият вуҷуд дорад. Зеро агар мо ягон барномаи миёнаи java-ро гирем ва кӯшиш кунем, ки онро дар док оғоз кунем, пас барои чиҳил сония, ҳатто як дақиқа ё ҳатто даҳ, он метавонад хуб оғоз кунад. Дар ин ҳолат, шумо метавонед ҳадди аққал бандарҳои онро бикӯбед, он ҷо ҷавоб намедиҳад, яъне он ҳанӯз барои қабули трафик омода нест.

Боз, бо ёрии санҷиши саломатӣ ва бо ёрии он, ки мо ба ин ҷо рӯй меорем, мо метавонем дар Кубернетес фаҳмем, ки дар барнома на танҳо як контейнер боло рафтааст, балки худи барнома оғоз шудааст, он аллакай ба санҷиши саломатӣ, ки маънои онро дорад, ки мо метавонем трафикро ба он ҷо фиристем.

Талабот барои таҳияи барнома дар Kubernetes

Он чизе ки ман ҳоло дар бораи он гап мезанам, санҷишҳои Омодагӣ / Зиндагӣ дар дохили Кубернетес номида мешаванд; мувофиқан, санҷишҳои омодагии мо барои мавҷудияти барнома дар мувозинат масъуланд. Яъне, агар дар барнома санҷишҳои омодагӣ гузаронида шаванд, ҳама чиз хуб аст, трафики муштарӣ ба барнома меравад. Агар санҷишҳои омодагӣ гузаронида нашаванд, он гоҳ барнома танҳо иштирок намекунад, ин мисоли мушаххас дар мувозинат иштирок намекунад, он аз мувозинат хориҷ карда мешавад, трафики муштарӣ ҷараён намеёбад. Мувофиқи он, санҷишҳои Liveness дар дохили Kubernetes лозиманд, то агар барнома часпид, онро дубора оғоз кардан мумкин аст. Агар санҷиши зинда барои замимае, ки дар Kubernetes эълон шудааст, кор накунад, он гоҳ барнома на танҳо аз мувозинат хориҷ карда мешавад, он аз нав оғоз карда мешавад.

Ва ин ҷо як нуктаи муҳимеро, ки мехоҳам зикр намоям: аз нуқтаи назари амалӣ, санҷиши омодагӣ одатан бештар истифода мешавад ва бештар аз санҷиши зиндагонӣ лозим аст. Яъне, беандешона эълон кардани ҳам санҷишҳои омодагӣ ва ҳам зинда, зеро Кубернетес ин корро карда метавонад ва биёед ҳама чизеро, ки карда метавонад, истифода барем, ин фикри хуб нест. Сабабашро мефаҳмонам. Азбаски нуқтаи рақами дуюм дар санҷиш ин аст, ки фикри хубе мебуд, ки хидмати асосиро дар санҷишҳои саломатии худ тафтиш кунед. Ин маънои онро дорад, ки агар шумо як замимаи веб дошта бошед, ки баъзе маълумотро медиҳад, ки дар навбати худ, табиист, ки он бояд аз ҷое бигирад. Дар базаи маълумот, масалан. Хуб, он маълумотеро, ки ба ин REST API ворид мешавад, дар як махзани маълумот захира мекунад. Пас, мувофиқан, агар санҷиши саломатии шумо танҳо ба монанди slashhealth тамос гирад, барнома мегӯяд: "200, хуб, ҳама чиз хуб аст" ва дар айни замон пойгоҳи додаи дархости шумо дастнорас аст ва замимаи санҷиш мегӯяд: "200, хуб, ҳама чиз хуб аст" ” - Ин санҷиши саломатии бад аст. Ин тавр набояд кор кунад.

Яъне, аризаи шумо, вақте ки дархост ба он меояд /health, он танҳо ҷавоб намедиҳад, ки "200, хуб", аввал, масалан, ба пойгоҳи додаҳо меравад, кӯшиш мекунад, ки ба он пайваст шавад, дар он ҷо як чизи хеле оддиро иҷро мекунад, масалан якеро интихоб кунед, танҳо тафтиш мекунад, ки дар махзани маълумот ва шумо метавонед базаи маълумотро пурсед. Агар ҳамаи ин муваффақ бошад, пас ҷавоб "200, хуб" аст. Агар он муваффақ набошад, он мегӯяд, ки хатогӣ вуҷуд дорад, базаи маълумот дастрас нест.

Аз ин рӯ, дар ин робита, ман боз ба санҷишҳои омодагӣ/зиндагӣ бармегардам - ​​чаро шумо эҳтимолан ба санҷиши омодагӣ ниёз доред, аммо санҷиши зиндагонӣ зери суол аст. Зеро агар шумо санҷишҳои саломатиро айнан ҳамон тавре ки ман гуфтам, тавсиф кунед, пас маълум мешавад, ки он дар қисми мисол дастрас нест.в или со всех instanceдар базаи маълумот, масалан. Вақте ки шумо санҷиши омодагиро эълон кардед, санҷишҳои саломатии мо ноком шуданд ва мувофиқан ҳамаи барномаҳое, ки ба онҳо пойгоҳи додаҳо дастрас нестанд, онҳо танҳо аз мувозинат хомӯш карда мешаванд ва дар асл танҳо дар ҳолати беэътиноӣ "овехта мешаванд" ва интизор мешаванд, ки пойгоҳи додаҳои онҳо ба кор андохта шаванд. кор.

Агар мо санҷиши зиндаро эълон карда бошем, пас тасаввур кунед, ки пойгоҳи додаи мо вайрон шудааст ва дар Kubernetes-и шумо нисфи ҳама чиз аз нав оғоз мешавад, зеро санҷиши зиндашавӣ ноком мешавад. Ин маънои онро дорад, ки шумо бояд аз нав оғоз кунед. Ин асло он чизест, ки шумо мехоҳед нест, ман ҳатто дар амал таҷрибаи шахсӣ доштам. Мо як барномаи чат доштем, ки дар JS навишта шуда, ба пойгоҳи додаи Mongo ворид карда шуда буд. Ва мушкилот дар он буд, ки маҳз дар оғози кори ман бо Кубернетес буд, мо омодагӣ ва зинда будани санҷишҳоро аз рӯи принсипе тавсиф кардем, ки Кубернетес ин корро карда метавонад, аз ин рӯ мо онро истифода хоҳем бурд. Мутаносибан, дар баъзе лаҳзаҳо Монго каме "кунд" шуд ва намуна ноком шудан гирифт. Муво-фики санчиши боронгарй, куракхо «куштан» шуданд.

Тавре ки шумо мефаҳмед, вақте ки онҳо "куштан" мешаванд, ин чат аст, яъне дар он робитаҳои зиёди муштариён овезон аст. Онҳо инчунин «куштанд» - не, муштариён не, танҳо пайвастҳо - на ҳама дар як вақт ва аз сабаби он ки онҳо дар як вақт кушта намешаванд, баъзеҳо пештар, баъзеҳо дертар, дар як вақт оғоз намекунанд. вақт. Илова бар ин, тасодуфии стандартӣ, мо наметавонем бо дақиқии миллисония ҳар дафъа вақти оғози барномаро пешгӯӣ кунем, аз ин рӯ онҳо ин корро дар як вақт иҷро мекунанд. Як infospot баланд мешавад, ба мувозинат илова мешавад, ҳама муштариён ба он ҷо меоянд, он ба чунин сарборӣ тоб оварда наметавонад, зеро он танҳо аст ва тақрибан даҳҳо онҳо дар он ҷо кор мекунанд ва меафтад. Дигараш баланд мешавад, тамоми бор бар ӯ аст, ӯ ҳам меафтад. Хуб, ин шаршараҳо ба таври фаврӣ идома медиҳанд. Дар ниҳоят, ин чӣ гуна ҳал карда шуд - ба мо лозим буд, ки трафики корбаронро ба ин барнома қатъиян қатъ кунем, бигзор ҳама инстансияҳо афзоиш ёбанд ва сипас ҳама трафики корбарро якбора оғоз кунем, то он аллакай дар байни ҳамаи даҳ мисол тақсим карда шавад.

Агар ин санҷиши зинда эълон карда намешуд, ки ҳамаи онро маҷбур мекунад, ки аз нав оғоз шавад, барнома онро хуб ҳал мекард. Аммо ҳама чиз аз мувозинат барои мо ғайрифаъол аст, зеро пойгоҳи додаҳо дастнорасанд ва ҳама корбарон "афтидаанд". Сипас, вақте ки ин базаи маълумот дастрас мешавад, ҳама чиз ба мувозинат дохил карда мешавад, аммо барномаҳо лозим нест, ки дубора оғоз кунанд ва барои ин сарф кардани вақт ва захираҳо лозим нест. Ҳамаи онҳо аллакай дар ин ҷо ҳастанд, онҳо барои трафик омодаанд, бинобар ин трафик кушода мешавад, ҳама чиз хуб аст - барнома дар ҷои худ аст, ҳама чиз корашро идома медиҳад.

Аз ин рӯ, санҷишҳои омодагӣ ва зиндашавӣ гуногунанд, ҳатто зиёда аз он, шумо метавонед аз ҷиҳати назариявӣ санҷишҳои гуногуни саломатӣ, як намуди радиус, як намуди ливро анҷом диҳед ва чизҳои гуногунро тафтиш кунед. Ҳангоми санҷишҳои омодагӣ, пуштибонии худро тафтиш кунед. Ва дар як санҷиши зинда, масалан, шумо аз он нуқтаи назар намесанҷед, ки санҷиши зиндагонӣ одатан танҳо як барномаест, ки посух медиҳад, агар он комилан ҷавоб диҳад.

Зеро санҷиши зиндагонӣ, умуман, вақте аст, ки мо "часпидаем". Давраи беохир оғоз шуд ё чизи дигар - ва дигар дархостҳо коркард карда намешаванд. Аз ин рӯ, ҳатто онҳоро ҷудо кардан ва дар онҳо мантиқи гуногунро татбиқ кардан маъно дорад.

Дар мавриди он, ки ҳангоми санҷиш, ҳангоми санҷиши саломатӣ ба шумо чӣ ҷавоб додан лозим аст. Ин танҳо дард аст. Онҳое, ки бо ин ошно ҳастанд, эҳтимол механданд - аммо ҷиддӣ, ман дар ҳаёти худ хидматҳоеро дидаам, ки дар 200% ҳолатҳо "XNUMX" ҷавоб медиҳанд. Яъне, кӣ муваффақ аст. Аммо дар баробари ин дар матни посух “фалон хато” менависанд.

Яъне, ҳолати посух ба шумо меояд - ҳама чиз муваффақ аст. Аммо дар айни замон, шумо бояд баданро таҳлил кунед, зеро бадан мегӯяд, ки "бубахшед, дархост бо хатогӣ анҷом ёфт" ва ин танҳо воқеият аст. Ман инро дар ҳаёти воқеӣ дидам.

Ва ба тавре ки баъзе одамон онро хандаовар набинанд ва дигарон онро хеле дарднок меҳисобанд, ба ҳар ҳол ба як қоидаи оддӣ риоя кардан меарзад. Дар санҷишҳои саломатӣ ва аслан ҳангоми кор бо барномаҳои веб.

Агар ҳама чиз хуб бошад, пас бо дусадум ҷавоб диҳед. Аслан, ҳар як ҷавоби дусадум ба шумо мувофиқ аст. Агар шумо ragsy-ро хуб хонед ва бидонед, ки баъзе статусҳои ҷавобӣ аз дигарон фарқ мекунанд, бо ҷавобҳои мувофиқ ҷавоб диҳед: 204, 5, 10, 15, ҳар чӣ. Агар он хеле хуб набошад, пас танҳо "ду сифр сифр". Агар ҳама чиз бад бошад ва санҷиши саломатӣ ҷавоб надиҳад, пас бо ягон панҷсадяк ҷавоб диҳед. Боз ҳам, агар шумо фаҳмед, ки чӣ гуна ҷавоб додан лозим аст, то чӣ андоза вазъиятҳои гуногуни посух аз ҳамдигар фарқ мекунанд. Агар шумо нафаҳмед, пас 502 интихоби шумо барои посух додан ба санҷишҳои саломатӣ аст, агар чизе хато кунад.

Ин нуқтаи дигар аст, ман мехоҳам каме дар бораи тафтиши хидматҳои асосӣ баргардам. Агар шумо, масалан, тафтиш кардани ҳама хидматҳои асосие, ки дар паси барномаи шумо истодаанд, оғоз кунед - ҳама чиз дар маҷмӯъ. Он чизе ки мо аз нуқтаи назари меъмории микросервис ба даст меорем, мо чунин мафҳуми "пайванди паст" дорем, яъне вақте ки хидматҳои шумо аз ҳамдигар ҳадди аққал вобастаанд. Агар яке аз онҳо ноком шавад, ҳамаи дигарон бе ин функсия танҳо кор мекунанд. Баъзе аз функсияҳо танҳо кор намекунанд. Мутаносибан, агар шумо ҳамаи санҷишҳои тиббиро бо ҳам пайваст кунед, пас шумо бо як чиз дар инфрасохтор афтода хоҳед шуд ва азбаски он афтод, тамоми санҷишҳои саломатии ҳама хидматҳо низ ноком мешаванд - ва дар маҷмӯъ барои инфрасохтори бештар вуҷуд дорад. тамоми меъмории микросервис №. Дар он ҷо ҳама чиз торик шуд.

Аз ин рӯ, ман мехоҳам инро бори дигар такрор кунам, ки шумо бояд хидматҳои асосиро тафтиш кунед, ки бе онҳо аризаи шумо дар сад дарсади ҳолатҳо кори худро иҷро карда наметавонад. Яъне, мантиқист, ки агар шумо REST API дошта бошед, ки тавассути он корбар дар пойгоҳи додаҳо захира мекунад ё аз пойгоҳи додаҳо бармегардад, пас дар сурати мавҷуд набудани пойгоҳи додаҳо, шумо наметавонед кор бо корбарони худро кафолат диҳед.

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

Баъдан, мо инчунин яке аз мушкилоти дардовар ҳангоми оғози барномаҳо дорем.

Дарвоқеъ, ин на танҳо ба Кубернетесҳо дахл дорад; ҳамин тавр шуд, ки фарҳанги як навъ рушди оммавӣ ва махсусан DevOps дар як вақт бо Кубернетес паҳн шудан гирифт. Аз ин рӯ, дар маҷмӯъ, маълум мешавад, ки ба шумо лозим аст, ки барномаи худро бе Кубернетес ба таври возеҳ хомӯш кунед. Ҳатто пеш аз Кубернетес, одамон ин корро мекарданд, аммо бо пайдоиши Кубернетес, мо дар бораи он ба таври оммавӣ сӯҳбат кардем.

Хомӯшии зебо

Умуман, Graceful Shutdown чист ва чаро он лозим аст? Ин дар бораи он аст, ки аризаи шумо бо ягон сабаб суқут мекунад, шумо бояд ин корро кунед app stop - ё шумо, масалан, аз системаи оператсионӣ сигнал мегиред, барномаи шумо бояд онро дарк кунад ва дар ин бора коре кунад. Бадтарин сенарияи ҳолат, албатта, вақтест, ки аризаи шумо SIGTERM мегирад ва ба монанди "SIGTERM, биёед овезон шавем, кор кунем, ҳеҷ кор накунем". Ин як варианти комилан бад аст.

Талабот барои таҳияи барнома дар Kubernetes

Варианти тақрибан баробар бад ин аст, ки вақте аризаи шумо SIGTERM мегирад ва ба монанди "онҳо гуфтанд segterm, ин маънои онро дорад, ки мо ба охир расида истодаем, ман надидаам, ман ягон дархости корбарро намедонам, ман намедонам, ки чӣ гуна дархостҳое, ки ман ҳоло кор карда истодаам, онҳо гуфтанд SIGTERM, ин маънои онро дорад, ки мо ба охир мерасем " Ин ҳам як варианти бад аст.

Кадом вариант хуб аст? Нуктаи аввал ин аст, ки анҷоми амалиётҳо ба назар гирифта шавад. Варианти хуб ин аст, ки сервери шумо то ҳол ба назар гирад, ки агар он SIGTERM-ро қабул кунад, чӣ кор мекунад.

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

Аз нуқтаи назари Кубернетес, ин ба назар мерасад. Вақте ки мо ба подкале, ки дар кластери Кубернетес кор мекунад, мегӯем, "лутфан бас кунед, дур шавед" ё мо бозоғоз мешавем ё вақте ки Кубернетес подкҳоро дубора эҷод мекунад, навсозӣ ба амал меояд, Кубернетес ҳамон паёми SIGTERM-ро ба подк мефиристад ва интизор мешавад. чанд вақт, ва , ин вақтест, ки ӯ интизор аст, он низ танзим карда шудааст, дар дипломҳо чунин параметри махсус вуҷуд дорад ва он Graceful ShutdownTimeout номида мешавад. Тавре ки шумо мефаҳмед, он бесабаб номида нашудааст ва бесабаб нест, ки мо ҳоло дар ин бора ҳарф мезанем.

Дар он ҷо мо метавонем мушаххас гӯем, ки мо бояд дар байни вақти фиристодани SIGTERM ба барнома чӣ қадар интизор шавем ва вақте ки мо мефаҳмем, ки барнома барои чизе девона шудааст ё "часпидааст" ва ба охир нарасидааст - ва мо бояд ба он СИГКИЛ фиристед, яъне кори худро сахт ба охир расонед. Яъне, мутаносибан, мо як навъ демон дорем, ки он амалиётҳоро коркард мекунад. Мо мефаҳмем, ки ба ҳисоби миёна амалиёти мо, ки демон дар он кор мекунад, дар як вақт бештар аз 30 сония давом намекунад. Мувофиқи он, вақте ки SIGTERM меояд, мо мефаҳмем, ки демони мо метавонад ҳадди аксар 30 сония пас аз SIGTERM ба итмом расад. Мо онро менависем, масалан, 45 сония танҳо дар ҳар сурат ва мегӯянд, ки SIGTERM. Пас аз он мо 45 сония интизор мешавем. Дар назария, дар ин муддат дев бояд кори худро ба анҷом расонида, худаш анҷом медод. Аммо агар ногаҳон ин имкон надиҳад, ин маънои онро дорад, ки эҳтимоли зиёд часпидааст - он дигар дархостҳои моро ба таври муқаррарӣ коркард намекунад. Ва дар давоми 45 сония шумо метавонед, дар асл, ӯро ба таври бехатар мехкӯб кунед.

Ва дар ин ҷо, дар асл, ҳатто 2 ҷанбаро метавон ба назар гирифт. Аввалан, фаҳмед, ки агар шумо дархост гирифта бошед, шумо бо он чӣ гуна кор карданро оғоз кардаед ва ба корбар ҷавоб надодед, аммо шумо, масалан, SIGTERM-ро гирифтаед. Онро такмил додан ва ба корбар ҷавоб додан маъно дорад. Ин нуктаи рақами як дар ин маврид аст. Нуқтаи рақами дуюм ин аст, ки агар шумо аризаи шахсии худро нависед, умуман меъмориро тавре созед, ки шумо барои дархости худ дархост қабул кунед, пас шумо баъзе корҳоро оғоз мекунед, зеркашии файлҳоро аз ҷое оғоз мекунед, базаи маълумотро зеркашӣ мекунед ва ғайра. - ки. Умуман, корбари шумо, дархости шумо барои ним соат овезон аст ва интизор аст, ки шумо ба ӯ ҷавоб диҳед - пас, эҳтимоли зиёд, шумо бояд дар меъморӣ кор кунед. Яъне, ҳатто ақли солимро ба назар гиред, ки агар амалиёти шумо кӯтоҳ бошад, пас SIGTERM-ро нодида гирифтан ва тағир додани он маъно дорад. Агар амалиёти шумо дароз бошад, пас дар ин ҳолат нодида гирифтани SIGTERM маъно надорад. Аз нав тарҳрезӣ кардани меъморӣ барои пешгирӣ кардани чунин амалиёти тӯлонӣ маъно дорад. Барои он ки корбарон на танҳо дар гирду атроф овезон шаванд ва интизор шаванд. Ман намедонам, дар он ҷо ягон намуди вебсокет созед, қалмоқҳои баръакс созед, ки сервери шумо аллакай ба муштарӣ мефиристад, чизи дигар, аммо корбарро маҷбур накунед, ки ним соат овезон кунад ва то сессияро интизор шавед. ба ӯ ҷавоб диҳед. Зеро пешгӯинашаванда аст, ки дар куҷо шикаста метавонад.

Вақте ки аризаи шумо қатъ мешавад, шумо бояд рамзи баромадани мувофиқро пешниҳод кунед. Яъне, агар дархости шумо дархост карда шавад, ки баста, қатъ кунед ва он метавонад худро муқаррарӣ боздорад, пас ба шумо лозим нест, ки ягон намуди рамзи баромади 1,5,255 ва ғайраро баргардонед. Ҳар чизе, ки рамзи сифр нест, ҳадди аққал дар системаҳои Linux, ман боварӣ дорам, ки ин номуваффақ ҳисобида мешавад. Яъне, чунин ҳисобида мешавад, ки аризаи шумо дар ин маврид бо хато анҷом ёфтааст. Ҳамин тариқ, ба таври мусолиматомез, агар аризаи шумо бе хато анҷом дода шавад, шумо дар баромади худ 0 мегӯед. Агар аризаи шумо бо ягон сабаб ноком шавад, шумо дар баромади худ ғайри 0 мегӯед. Ва шумо метавонед бо ин маълумот кор кунед.

Ва варианти охирин. Вақте ки корбари шумо дархост мефиристад ва ҳангоми коркарди он ним соат овезон мешавад, бад аст. Аммо дар маҷмӯъ, ман мехоҳам бигӯям, ки аз ҷониби муштарӣ чӣ арзише дорад. Фарқ надорад, ки шумо як барномаи мобилӣ, фронт ва ғайра дошта бошед. Бояд ба назар гирифт, ки дар маҷмӯъ сеанси корбарро қатъ кардан мумкин аст, ҳама чиз метавонад рӯй диҳад. Дархост метавонад фиристода шавад, масалан, кам коркардшуда ва ҳеҷ ҷавобе барнагашт. Фронти шумо ё замимаи мобилии шумо - ҳама гуна интерфейси умумӣ, биёед ин тавр гӯем - бояд инро ба назар гиранд. Агар шумо бо вебсокетҳо кор кунед, ин одатан бадтарин дарди ман аст.

Вақте ки таҳиягарони баъзе чатҳои муқаррарӣ намедонанд, ки он рӯй медиҳад, ки веб-сокет метавонад вайрон шавад. Барои онҳо, вақте ки дар прокси чизе рӯй медиҳад, мо танҳо конфигуратсияро тағир медиҳем ва он дубора бор мекунад. Табиист, ки дар ин ҳолат ҳама сессияҳои дарозумр канда мешаванд. Таҳиягарон давида ба назди мо меоянд ва мегӯянд: "Бачаҳо, шумо чӣ кор карда истодаед, чат барои ҳама мизоҷони мо вайрон шудааст!" Мо ба онҳо мегӯем: «Шумо чӣ кор карда истодаед? Оё муштариёни шумо наметавонанд дубора пайваст шаванд? Онҳо мегӯянд: "Не, ба мо лозим аст, ки сессияҳо канда нашавад." Хулоса, ин дар асл сафсата аст. Ҷониби муштарӣ бояд ба назар гирифта шавад. Махсусан, тавре ки ман мегӯям, бо сеансҳои дарозмуддат, ба монанди вебсокетҳо, он метавонад шикаста шавад ва аз ҷониби корбар нодида гирифта, шумо бояд чунин сессияҳоро дубора насб кунед. Ва он гоҳ ҳама чиз комил аст.

Манбаъҳо

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

Манбаъҳо дар ин ҳолат, ман дар назар дорам, ки як навъ дархостҳо, маҳдудиятҳоеро, ки шумо метавонед дар кластерҳои Kubernetes худ ҷойгир кунед. Хандаовартарин чизе, ки ман аз як таҳиягар шунидам... Яке аз ҳамкорони ман дар ҷои кори қаблӣ боре гуфт: "Аризаи ман дар кластер оғоз намешавад." Ман нигоҳ кардам, ки он сар нашудааст, аммо ё он ба захираҳо мувофиқат намекунад, ё онҳо маҳдудиятҳои хеле хурд муқаррар кардаанд. Хулоса, барнома аз сабаби захираҳо оғоз карда наметавонад. Ман мегӯям: "Ин аз ҳисоби захираҳо оғоз намешавад, шумо қарор медиҳед, ки чӣ қадар ба шумо лозим аст ва арзиши мувофиқро муқаррар кунед." Ӯ мегӯяд: "Чӣ гуна захираҳо?" Ман ба ӯ фаҳмондам, ки Кубернетес, маҳдудиятҳои дархостҳо ва бла, бла, бла бояд муқаррар карда шавад. Он мард панҷ дақиқа гӯш кард, сар ҷунбонд ва гуфт: "Ман ба ин ҷо барои кор кардан ба ҳайси таҳиякунанда омадаам, ман намехоҳам дар бораи ягон захира чизе донам. Ман ба ин ҷо барои навиштани код омадаам ва ҳамин тавр." аламовар аст. Ин консепсияи хеле ғамгин аз нуқтаи назари таҳиякунанда аст. Хусусан дар чахони хозира, гуем, аз девопхои прогрессией.

Чаро захираҳо умуман лозиманд? Дар Kubernetes 2 намуди захираҳо мавҷуданд. Баъзеҳо дархост номида мешаванд, дигаронро маҳдудият меноманд. Аз рӯи захираҳо мо мефаҳмем, ки ҳамеша танҳо ду маҳдудияти асосӣ вуҷуд дорад. Яъне, маҳдудиятҳои вақти CPU ва маҳдудиятҳои RAM барои контейнере, ки дар Кубернетес кор мекунанд.

Маҳдудият маҳдудияти болоро барои чӣ гуна истифода бурдани захира дар замимаи шумо мегузорад. Яъне, мувофиқан, агар шумо 1 ГБ хотираи оперативиро дар ҳудуди худ бигӯед, он гоҳ барномаи шумо аз 1 ГБ RAM зиёд истифода бурда наметавонад. Ва агар ӯ ногаҳон мехоҳад ва ин корро кунад, пас раванде бо номи oom killer, аз хотира, яъне, меояд ва аризаи шуморо мекушад - яъне он танҳо бозоғоз мешавад. Барномаҳо дар асоси CPU аз нав оғоз намешаванд. Дар робита ба CPU, агар барнома кӯшиш кунад, ки миқдори зиёди дар ҳудуди муқарраршуда истифода шавад, CPU танҳо ба таври қатъӣ интихоб карда мешавад. Ин ба дубора оғоз кардан оварда намерасонад. Ин маҳдудият аст - ин маҳдудияти болоӣ аст.

Ва дархост ҳаст. Дархост ин аст, ки чӣ тавр Кубернетес мефаҳмад, ки гиреҳҳои кластери Кубернетеси шумо бо барномаҳо пур карда шудаанд. Яъне, дархост як навъ ӯҳдадории дархости шумост. Он чизеро, ки ман мехоҳам истифода кунам, мегӯяд: "Ман мехоҳам, ки шумо ин қадар CPU ва ин қадар хотираро барои ман захира кунед." Чунин як аналогияи оддӣ. Чӣ мешавад, агар мо гиреҳ дошта бошем, ки ман намедонам, дар маҷмӯъ 8 CPU дорад. Ва ба он ҷо як поддон меояд, ки дархостҳои онҳо 1 CPU мегӯянд, ки ин маънои онро дорад, ки гиреҳ 7 CPU боқӣ мондааст. Яъне, мутаносибан, вақте ки 8 поддон ба ин гиреҳ меоянд, ки ҳар яки онҳо дар дархостҳои худ 1 CPU дорад, гиреҳ, гӯё аз нуқтаи назари Кубернетес, аз CPU тамом шудааст ва дигар подкҳо бо дархостҳо наметавонанд. дар ин гиреҳ оғоз ёфт. Агар ҳамаи гиреҳҳо аз CPU тамом шаванд, пас Кубернетес мегӯяд, ки дар кластер гиреҳҳои мувофиқ барои кор кардани подкҳои шумо вуҷуд надоранд, зеро CPU тамом шудааст.

Чаро дархостҳо лозиманд ва чаро бидуни дархост, ман фикр мекунам, ки дар Кубернетес ҳеҷ чиз оғоз кардан лозим нест? Биёед вазъияти гипотетикиро тасаввур кунем. Шумо замимаи худро бе дархост оғоз мекунед, Кубернетес намедонад, ки шумо чӣ қадар чизе доред ва шумо онро ба кадом гиреҳ тела дода метавонед. Хуб, вай ба гиреҳҳо тела медиҳад, тела медиҳад, мезанад. Дар баъзе лаҳзаҳо, шумо трафикро ба аризаи худ оғоз мекунед. Ва яке аз замимаҳо ногаҳон ба истифодаи захираҳо то ҳадде, ки мувофиқи маҳдудият дорад, оғоз мекунад. Маълум мешавад, ки дар наздикии он замимаи дигаре ҳаст ва он ҳам ба захираҳо ниёз дорад. Гиреҳ воқеан аз ҷиҳати ҷисмонӣ аз захираҳо тамом мешавад, масалан, OP. Гиреҳ воқеан аз ҷиҳати ҷисмонӣ тамом шудани захираҳоро оғоз мекунад, масалан, хотираи дастрасии тасодуфӣ (RAM). Вақте ки гиреҳ аз қувваи барқ ​​тамом мешавад, пеш аз ҳама докер посух доданро қатъ мекунад, пас кубелет ва баъд ОС. Онҳо танҳо беҳуш хоҳанд шуд ва ҲАМА ҲАМАИ кор бешубҳа барои шумо қатъ мешавад. Яъне, ин боиси часпидани гиреҳи шумо мегардад ва шумо бояд онро аз нав оғоз кунед. Хулоса, вазъият чандон хуб нест.

Ва ҳангоме ки шумо дархост доред, маҳдудиятҳо чандон фарқ намекунанд, ҳадди аққал чанд маротиба бештар аз маҳдудиятҳо ё дархостҳо, пас шумо метавонед чунин пур кардани муқаррарӣ ва оқилонаи барномаҳоро дар гиреҳҳои кластерҳои Kubernetes дошта бошед. Дар айни замон, Кубернетес тахминан медонад, ки чӣ қадар он чизеро дар куҷо мегузорад ва чӣ қадар дар куҷо истифода мешавад. Яъне, ин танҳо як лаҳза аст. Фаҳмидани он муҳим аст. Ва назорат кардан муҳим аст, ки ин нишон дода шудааст.

Нигоҳдории маълумот

Нуктаи навбатии мо дар бораи нигоҳдории маълумот аст. Бо онҳо ва умуман, бо истодагарӣ дар Кубернетес чӣ бояд кард?

Ман фикр мекунам, боз, дар дохили мо Мактаби шабона, дар Кубернетес мавзуъ дар бораи базаи маълумот буд. Ва ба назари ман, ман ҳатто тахминан медонам, ки ҳамкасбони шумо ба шумо ҳангоми пурсидани он чӣ гуфтаанд: "Оё дар Кубернетес пойгоҳи додаҳоро идора кардан мумкин аст?" Бо баъзе сабабҳо, ба ман чунин менамояд, ки ҳамкасбони шумо бояд ба шумо мегуфтанд, ки агар шумо савол диҳед, ки оё дар Кубернетес пойгоҳи додаҳоро идора кардан мумкин аст, пас ин ғайриимкон аст.

Мантиқ дар ин ҷо оддӣ аст. Дар ҳар сурат, ман бори дигар мефаҳмонам, ки агар шумо як бачаи воқеан олиҷаноб бошед, ки метавонад як системаи ба хатогиҳо таҳаммулпазири нигаҳдории шабакаҳои тақсимшуда бунёд кунад, бифаҳмед, ки чӣ гуна махзани маълумотро ба ин ҳолат мувофиқ кардан лозим аст, ки чӣ гуна абр дар контейнерҳо бояд кор кунад. дар базаи маълумот умуман. Эҳтимол, шумо ҳеҷ саволе дар бораи он ки чӣ тавр иҷро кардани он надоред. Агар шумо чунин савол дошта бошед ва шумо мехоҳед боварӣ ҳосил кунед, ки он ҳама дар истеҳсолот ба таври фаврӣ меистад ва ҳеҷ гоҳ намеафтад, ин тавр намешавад. Бо ин равиш ба шумо кафолат дода мешавад, ки худро ба пои худ парронед. Пас, беҳтар аст, ки не.

Мо бояд бо маълумоте, ки замимаи мо мехоҳад нигоҳ дорад, баъзе расмҳое, ки корбарон бор мекунанд, баъзе чизҳое, ки замимаи мо ҳангоми кор, масалан ҳангоми оғозёбӣ тавлид мекунад, чӣ кор кунем? Бо онҳо дар Кубернетес чӣ бояд кард?

Умуман, идеалӣ, ҳа, албатта, Кубернетес хеле хуб тарҳрезӣ шудааст ва дар аввал барои барномаҳои бешаҳрвандӣ таҳия шудааст. Яъне барои он барномаҳое, ки умуман маълумотро нигоҳ намедоранд. Ин идеал аст.

Аммо, албатта, варианти идеалӣ на ҳамеша вуҷуд дорад. Хайр чӣ? Аввалин ва соддатарин нукта ин аст, ки як навъ S3 гирифта шавад, на танҳо як навъи хонагӣ, ки он ҳам маълум нест, ки чӣ тавр кор мекунад, аммо аз баъзе провайдерҳо. Провайдери хуб ва муқаррарӣ - ва барномаи худро барои истифодаи S3 таълим диҳед. Яъне, вақте ки корбари шумо мехоҳад файлеро бор кунад, бигӯед "дар ин ҷо, лутфан онро ба S3 бор кунед." Вақте ки ӯ мехоҳад онро қабул кунад, бигӯед: "Ин ҷо истиноди S3 аст ва онро аз ин ҷо гиред." Ин идеал аст.

Агар ногаҳон бо ягон сабаб ин варианти идеалӣ мувофиқ набошад, шумо барномае доред, ки шумо онро нанавиштеед, шумо таҳия намекунед ё ин як навъ мероси даҳшатнок аст, он протоколи S3-ро истифода бурда наметавонад, аммо бояд бо директорияҳои маҳаллӣ кор кунад. ҷузвдонҳои маҳаллӣ. Як чизи бештар ё камтар соддаро гиред, Kubernetes-ро ҷойгир кунед. Яъне, дарҳол Ceph-ро барои баъзе вазифаҳои минималӣ шамшербозӣ кардан, ба назарам, фикри бад аст. Зеро Ceph, албатта, хуб ва муд аст. Аммо агар шумо воқеан намефаҳмед, ки чӣ кор карда истодаед, пас вақте ки шумо чизеро ба Ceph мегузоред, шумо метавонед ба осонӣ ва ба осонӣ онро дигар аз он ҷо берун набаред. Зеро, тавре ки шумо медонед, Ceph маълумотро дар кластери худ дар шакли дуӣ нигоҳ медорад, на дар шакли файлҳои оддӣ. Аз ин рӯ, агар кластери Ceph ногаҳон вайрон шавад, пас эҳтимолияти комил ва баланд вуҷуд дорад, ки шумо ҳеҷ гоҳ маълумоти худро аз он ҷо дигар ба даст наоред.

Мо курси оид ба Ceph хоҳем дошт, шумо метавонед бо барнома шинос шавед ва ариза пешниҳод кунед.

Аз ин рӯ, беҳтар аст, ки як чизи оддӣ ба монанди сервери NFS кунед. Kubernetes метавонад бо онҳо кор кунад, шумо метавонед директорияро дар зери сервери NFS насб кунед - барномаи шумо мисли директорияи маҳаллӣ аст. Дар айни замон, табиист, ки шумо бояд фаҳмед, ки бори дигар, шумо бояд бо NFS-и худ коре кунед, шумо бояд фаҳмед, ки баъзан он метавонад дастнорас гардад ва саволеро, ки шумо дар ин ҳолат чӣ кор хоҳед кард, баррасӣ кунед. Шояд он бояд дар ягон мошини алоҳида нусхабардорӣ карда шавад.

Нуктаи навбатии ман дар бораи он аст, ки чӣ кор кардан лозим аст, агар барномаи шумо ҳангоми кор баъзе файлҳоро тавлид кунад. Масалан, вақте ки он оғоз меёбад, он як файли статикиро тавлид мекунад, ки ба баъзе маълумоте асос ёфтааст, ки барнома танҳо дар вақти оғозёбӣ мегирад. Чӣ лаҳзае. Агар чунин маълумот зиёд набошад, пас ба шумо лозим нест, ки тамоман ташвиш кашед, танҳо ин барномаро барои худ насб кунед ва кор кунед. Дар ин ҷо танҳо савол ин аст, ки чӣ гуна аст. Аксар вақт, ҳама гуна системаҳои кӯҳна, аз қабили WordPress ва ғайра, махсусан бо тағир додани як навъ плагинҳои маккорона, таҳиягарони маккоронаи PHP, онҳо аксар вақт медонанд, ки чӣ гуна онро созанд, то онҳо барои худ як навъ файл тавлид кунанд. Мувофиқи он, яке як файлро тавлид мекунад, дуюм файли дуюмро тавлид мекунад. Онҳо гуногунанд. Мувозинат дар кластери Kubernetes муштариён танҳо тасодуфан рух медиҳад. Аз ин рӯ, маълум мешавад, ки онҳо намедонанд, ки чӣ тавр якҷоя кор кунанд. Яке як маълумот медиҳад, дигаре ба корбар маълумоти дигар медиҳад. Ин чизест, ки шумо бояд пешгирӣ кунед. Яъне, дар Кубернетес, ҳама чизе, ки шумо оғоз мекунед, кафолат дода мешавад, ки дар якчанд мавридҳо кор карда тавонед. Зеро Кубернетес як чизи ҳаракаткунанда аст. Аз ин рӯ, ӯ метавонад ҳама чизро, ҳар вақт, ки бихоҳад, бидуни напурсида ҳаракат кунад. Аз ин рӯ, шумо бояд ба ин ҳисоб кунед. Ҳама чизе, ки дар як маврид оғоз шудааст, дер ё зуд ноком мешавад. Чӣ қадаре ки шумо фармоиш дошта бошед, ҳамон қадар беҳтар аст. Аммо боз мегӯям, ки агар шумо якчанд чунин файл дошта бошед, пас шумо метавонед онҳоро рост ба зери худ гузоред, онҳо миқдори кам доранд. Агар онҳо каме бештар бошанд, шумо набояд онҳоро дар дохили контейнер тела диҳед.

Ман маслиҳат медиҳам, ки дар Кубернетес чунин чизи аҷибе вуҷуд дорад, шумо метавонед ҳаҷмро истифода баред. Аз ҷумла, як ҳаҷми навъи dir холӣ нест. Яъне, танҳо он аст, ки Kubernetes ба таври худкор дар директорияҳои хидматрасонии худ дар сервере, ки шумо оғоз кардаед, директория эҷод мекунад. Ва ӯ онро ба шумо медиҳад, то шумо аз он истифода баред. Танҳо як нуқтаи муҳим вуҷуд дорад. Яъне, маълумоти шумо на дар дохили контейнер, балки дар ҳост, ки шумо дар он кор мекунед, нигоҳ дошта мешавад. Гузашта аз ин, Кубернетес метавонад чунин дирҳои холиро дар конфигуратсияи муқаррарӣ идора кунад ва қодир аст андозаи ҳадди аксарашонро назорат кунад ва ба аз ҳад зиёд гузарад. Ягона нукта дар он аст, ки он чизе, ки шумо дар дир холӣ навиштаед, ҳангоми бозоғозкунии подкӯҳҳо гум намешавад. Яъне, агар поди шумо хато афтад ва боз баланд шавад, маълумоти дар дир холӣ буда ба ҳеҷ куҷо намеравад. Вай метавонад онро дубора дар оғози нав истифода барад - ва ин хуб аст. Агар поди шумо дар ҷое равад, табиист, ки ӯ бе маълумот меравад. Яъне, ҳамин ки поддон аз гиреҳе, ки бо дир холӣ ба кор андохта шуда буд, нопадид мешавад, дири холӣ нест карда мешавад.

Дар бораи дири холӣ боз чӣ хуб аст? Масалан, он метавонад ҳамчун кэш истифода шавад. Биёед тасаввур кунем, ки замимаи мо чизеро дар парвоз тавлид мекунад, ба корбарон медиҳад ва онро муддати тӯлонӣ иҷро мекунад. Аз ин рӯ, барнома, масалан, онро тавлид мекунад ва ба корбарон медиҳад ва ҳамзамон онро дар ҷое нигоҳ медорад, то дафъаи оянда корбар барои ҳамон чиз меояд, зудтар додани он фавран тавлид мешавад. Дири холӣ метавонад аз Кубернетес хоҳиш карда шавад, ки дар хотира эҷод кунад. Ҳамин тариқ, кэшҳои шумо умуман метавонанд бо суръати барқ ​​​​кор кунанд - аз ҷиҳати суръати дастрасии диск. Яъне, шумо дар хотира дир холӣ доред, дар ОС он дар хотира нигоҳ дошта мешавад, аммо барои шумо, барои корбар дар дохили подк, он танҳо ба феҳристи маҳаллӣ монанд аст. Барои ба таври махсус таълим додани ягон ҷодугарӣ ба шумо барнома лозим нест. Шумо танҳо бевосита файли худро дар директория мегиред, аммо дар асл, дар хотираи ОС. Ин инчунин як хусусияти хеле қулай дар робита ба Kubernetes аст.

Minio кадом мушкилот дорад? Мушкилоти асосии Minio дар он аст, ки барои кор кардани ин чизе, он бояд дар ҷое кор кунад ва бояд як намуди системаи файлӣ, яъне нигоҳдорӣ бошад. Ва дар ин ҷо мо бо ҳамон мушкилоте дучор мешавем, ки Ҷеф дорад. Яъне, Minio бояд файлҳои худро дар ҷое нигоҳ дорад. Ин танҳо интерфейси HTTP барои файлҳои шумост. Гузашта аз ин, функсияҳо нисбат ба S3-и Amazon камбизоаттаранд. Пештар, он қодир набуд, ки ба корбар дуруст иҷозат диҳад. Ҳоло, то ҷое ки ман медонам, он аллакай метавонад сатилҳоро бо иҷозатҳои гуногун эҷод кунад, аммо боз ба ман чунин менамояд, ки мушкилоти асосӣ ҳадди аққал системаи нигаҳдории асосӣ аст.

Чӣ тавр Empty dir дар хотира ба маҳдудиятҳо таъсир мерасонад? Ба ҳеҷ ваҷҳ ба маҳдудиятҳо таъсир намерасонад. Он дар хотираи мизбон аст, на дар хотираи контейнери шумо. Яъне, контейнери шумо дири холиро дар хотира ҳамчун ҷузъи хотираи ишғолкардааш намебинад. Соҳибхона инро мебинад. Мувофиқи он, ҳа, аз нуқтаи назари кубернетҳо, вақте ки шумо ин корро оғоз мекунед, хуб мебуд, ки шумо фаҳмед, ки шумо як қисми хотираи худро ба дири холӣ бахшида истодаед. Ва мувофиқан, дарк кунед, ки хотира метавонад на танҳо аз сабаби барномаҳо, балки инчунин аз сабаби он ки касе ба ин дирҳои холӣ менависад, тамом шавад.

Абрнокӣ

Ва зермавзуи ниҳоӣ он чизест, ки Cloudnative аст. Чаро он лозим аст? Абрнокӣ ва ғайра.

Яъне он барномаҳое, ки қодиранд ва навишта шудаанд, то дар инфрасохтори муосири абрӣ кор кунанд. Аммо, дар асл, Cloudnative як ҷанбаи дигар дорад. Ин на танҳо барномаест, ки тамоми талаботи инфрасохтори абрии муосирро ба инобат мегирад, балки инчунин медонад, ки чӣ гуна бо ин инфрасохтори абрии муосир кор кардан, бартарӣ ва нуқсонҳои он, ки он дар ин абрҳо кор мекунад, истифода барад. На танҳо аз ҳад зиёд баромада, дар абрҳо кор кунед, балки аз бартариҳои кор дар абр истифода баред.

Талабот барои таҳияи барнома дар Kubernetes

Биёед танҳо Кубернетесро мисол гирем. Аризаи шумо дар Kubernetes кор мекунад. Аризаи шумо метавонад ҳамеша, дурусттараш маъмурони барномаи шумо ҳамеша ҳисоби хидматӣ эҷод кунанд. Яъне, ҳисоб барои авторизатсия дар худи Kubernetes дар сервери он. Баъзе ҳуқуқҳоеро, ки ба мо лозиманд, илова кунед. Ва шумо метавонед аз дохили барномаи худ ба Kubernetes дастрасӣ пайдо кунед. Шумо бо ин роҳ чӣ кор карда метавонед? Масалан, аз барнома маълумотро дар бораи он, ки дигар замимаҳои шумо, дигар мисолҳои шабеҳ дар куҷо ҷойгиранд, гиред ва агар чунин эҳтиёҷ вуҷуд дошта бошад, якҷоя дар болои Kubernetes кластер кунед.

Боз, мо ба наздикӣ воқеан як парванда доштем. Мо як контролер дорем, ки навбатро назорат мекунад. Ва вақте ки баъзе вазифаҳои нав дар ин навбат пайдо мешаванд, он ба Кубернетес меравад - ва дар дохили Кубернетес он як паҳлӯи нав эҷод мекунад. Ба ин подк чанд вазифаи нав медиҳад ва дар доираи ин подк, подк вазифаро иҷро мекунад, ба худи контроллер посух мефиристад ва контроллер баъдан бо ин маълумот коре мекунад. Масалан, он базаи маълумотро илова мекунад. Яъне, боз ҳам ин як бартарияти он аст, ки барномаи мо дар Кубернетес кор мекунад. Мо метавонем худи функсияи дарунсохташудаи Kubernetes-ро истифода барем, то ки ба таври васеъ васеъ ва функсияи замимаи моро қулайтар созем. Яъне, дар бораи чӣ гуна ба кор андохтани барнома, чӣ гуна ба кор андохтани коргар як навъ ҷодуро пинҳон накунед. Дар Kubernetes, шумо танҳо дархостро дар барнома мефиристед, агар барнома дар Python навишта шуда бошад.

Ҳамин чиз дахл дорад, агар мо аз Кубернетес берун равем. Мо Кубернетҳои худро дар ҷое иҷро мекунем - хуб аст, агар он дар ягон намуди абр бошад. Боз ҳам, мо метавонем истифода барем ва ҳатто бояд, ки ман боварӣ дорам, ки қобилиятҳои худи абрро, ки мо кор мекунем, истифода барем. Аз чизҳои ибтидоӣ, ки абр ба мо медиҳад. Мувозинат, яъне мо метавонем тавозуни абрро эҷод кунем ва онҳоро истифода барем. Ин як бартарии бевоситаи он чизест, ки мо метавонем истифода барем. Азбаски мувозинати абр, аввалан, ба таври аблаҳӣ масъулиятро барои чӣ гуна кор кардан ва танзим кардани он аз мо дур мекунад. Илова бар ин, ин хеле қулай аст, зеро Кубернетҳои муқаррарӣ метавонанд бо абрҳо муттаҳид шаванд.

Айнан ҳамин чиз ба миқёс дахл дорад. Кубернетҳои муқаррарӣ метавонанд бо провайдерҳои абрӣ ҳамгиро шаванд. Медонад, ки чӣ тавр фаҳмидани он, ки агар кластер аз гиреҳ тамом шавад, яъне фазои гиреҳ тамом шавад, шумо бояд илова кунед - худи Кубернетес ба кластери шумо гиреҳҳои нав илова мекунад ва ба оғоз кардани pods дар онҳо шурӯъ мекунад. Яъне, ваќте бори шумо ояд, шумораи оташдонњо зиёд мешавад. Вақте ки гиреҳҳои кластер барои ин подкҳо тамом мешаванд, Кубернетес гиреҳҳои навро оғоз мекунад ва мутаносибан, шумораи қубурҳо то ҳол метавонад афзоиш ёбад. Ва он хеле қулай аст. Ин як имконияти мустақим барои васеъ кардани кластер дар парвоз аст. На он қадар зуд, ба маънои он, ки ин як сония нест, барои илова кардани гиреҳҳои нав бештар ба як дақиқа монанд аст.

Аммо аз таҷрибаи ман, боз ин олитарин чизест, ки ман дидаам. Вақте ки кластери Cloudnative дар асоси вақти рӯз миқёси калон дорад. Ин хидмати пуштибонӣ буд, ки аз ҷониби одамони офиси пуштибонӣ истифода мешуд. Яъне, онҳо соати 9 ба кор меоянд, ворид шудан ба системаро оғоз мекунанд ва мувофиқан кластери Cloudnative, ки дар он ҳама кор мекунад, варам карда, подкҳои навро оғоз мекунад, то ҳар касе, ки ба кор меояд, бо барнома кор кунад. Вақте ки онҳо соати 8 ё 6 аз кор мебароянд, кластерҳои Кубернетес пай мебаранд, ки дигар ҳеҷ кас ин барномаро истифода намебарад ва коҳиш меёбад. Сарфаи то 30 фоиз кафолат дода мешавад. Он вақт дар Амазонка кор мекард; он вақт дар Русия касе набуд, ки ин корро ин қадар хуб карда тавонад.

Ман ба шумо рост мегӯям, пасандозҳо 30 фоизро ташкил медиҳанд, зеро мо Kubernetes-ро истифода мебарем ва аз имкониятҳои абр истифода мебарем. Акнун ин корро дар Русия кардан мумкин аст. Албатта, ман ба касе таблиғ намекунам, аммо биёед бигӯем, ки провайдерҳое ҳастанд, ки ин корро карда метавонанд, онро аз қуттӣ бо тугма таъмин кунанд.

Як нуктаи охирине ҳаст, ки ба он низ таваҷҷӯҳи шуморо ҷалб кардан мехоҳам. Барои он ки барномаи шумо, инфрасохтори шумо абрнок бошад, ниҳоят оғоз кардани мутобиқсозии равишеро, ки инфрасохтор ҳамчун код ном дорад, маъно дорад.Яъне ин маънои онро дорад, ки замимаи шумо, дурусттар инфрасохтори шумо ба ҳамон тарз лозим аст код Аризаи худро, мантиқи тиҷорати худро дар шакли код тавсиф кунед. Ва бо он ҳамчун код кор кунед, яъне онро санҷед, паҳн кунед, дар git нигоҳ доред ва CICD-ро ба он татбиқ кунед.

Ва ин маҳз он чизест, ки ба шумо имкон медиҳад, ки аввалан, ҳамеша зери назорати инфрасохтори худ бошед ва ҳамеша фаҳмед, ки он дар кадом ҳолат аст. Дуюм, аз амалиёти дастӣ, ки боиси хатогиҳо мешаванд, канорагирӣ кунед. Сеюм, аз он чизе, ки гардиш номида мешавад, дурӣ ҷӯед, вақте ки шумо ҳамеша бояд ҳамон як вазифаҳои дастӣ иҷро кунед. Чорум, он ба шумо имкон медиҳад, ки дар сурати нокомӣ зудтар барқарор шавед. Дар Русия, ҳар боре, ки ман дар ин бора сӯҳбат мекунам, ҳамеша шумораи зиёди одамоне ҳастанд, ки мегӯянд: "Бале, ин равшан аст, аммо шумо равишҳо доред, хулоса, ҳеҷ чизро ислоҳ кардан лозим нест." Аммо ин дуруст аст. Агар чизе дар инфрасохтори шумо вайрон шуда бошад, пас аз нуқтаи назари равиши Cloudnative ва аз нуқтаи назари инфрасохтор ҳамчун Кодекс, на ислоҳ кардани он, рафтан ба сервер, фаҳмидани он, ки чӣ вайрон шудааст ва ислоҳ кардани он осонтар аст. барои нест кардани сервер ва аз нав сохтани он. Ва ман ҳамаи инро барқарор хоҳам кард.

Ҳамаи ин масъалаҳо муфассалтар дар он баррасӣ мешаванд Курсҳои видеоии Kubernetes: Junior, Basic, Mega. Тавассути истиноди мазкур шумо метавонед бо барнома ва шартҳо шинос шавед. Чизи қулай дар он аст, ки шумо метавонед Kubernetes-ро тавассути таҳсил дар хона ё дар як рӯз 1-2 соат кор кунед.

Манбаъ: will.com

Илова Эзоҳ