{"id":91199,"date":"2020-08-10T01:42:03","date_gmt":"2020-08-09T23:42:03","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov"},"modified":"2020-08-10T01:42:03","modified_gmt":"2020-08-09T23:42:03","slug":"kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov","title":{"rendered":"Kubernetes DomClickis: kuidas rahulikult magada, hallates 1000 mikroteenuse klastrit","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Minu nimi on Viktor Yagofarov ja ma olen tehnoloogia juht, kes arendab Kubernetes platvormi ettev\u00f5ttes DomClick, takistuse Ops meeskonnas. Soovin r\u00e4\u00e4kida meie Dev &lt;-&gt; Ops protsesside struktuurist, \u00fchtedest Venemaa suurimatest k8s klastritest ja ka meie meeskonna rakendatud DevOps\/SRE praktikast.<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes DomClickis: kuidas rahulikult magada, hallates 1000 mikroteenuse klastrit\" src=\"\/wp-content\/uploads\/2020\/08\/6c908104c734b36cc7a960fbe4d65e3f.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>Ops meeskond<\/h4>\n<p>\nOps meeskonnas t\u00f6\u00f6tab hetkel 15 inimest. Kolm neist vastutavad kontori eest, kaks t\u00f6\u00f6tavad teises ajav\u00f6\u00f6ndis ja on kergesti k\u00e4ttesaadavad, sealhulgas \u00f6\u00f6sel. Seega on alati keegi Opsis monitori ees ja valmis reageerima mis tahes keerukusega juhtumile. \u00d6\u00f6vahtimisi meil ei ole, mis kaitseb meie vaimu ja v\u00f5imaldab k\u00f5igil piisavalt und saada ning aega veeta mitte ainult arvuti taga.<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes DomClickis: kuidas rahulikult magada, hallates 1000 mikroteenuse klastrit\" src=\"\/wp-content\/uploads\/2020\/08\/47051db273f116df376e64bad67c6f37.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00f5igil on erinevad oskused: v\u00f5rguhaldurid, DBA-d, ELK stack spetsialistid, Kubernetes administraatorid\/arendajad, j\u00e4lgimise, virtualiseerimise ja riistvara spetsialistid jne. \u00dchendab meid see, et iga\u00fchel on v\u00f5imalus kellegi teise rolli mingil m\u00e4\u00e4ral t\u00e4ita: n\u00e4iteks uute s\u00f5lmede lisamine k8s klastrisse, PostgreSQL uuendamine, CI\/CD + Ansible torujuhtme kirjutamine, millegi automatiseerimine Pythonis\/Bashis\/Go-s, riistvara \u00fchendamine andmekeskuses. Tugevad oskused \u00fches valdkonnas ei takista suunamuutust ja arengut teises valdkonnas. N\u00e4iteks astusin ettev\u00f5ttesse sisse PostgreSQL spetsialistina, kuid n\u00fc\u00fcd on minu peamine vastutusala Kubernetes klastrid. Meeskonnas on iga kasv ainult teretulnud ning \u00fchtekuuluvustunne on tugev.<\/p>\n<p>Muide, me otsime t\u00f6\u00f6tajaid. Kandidaatide n\u00f5udmised on \u00fcsna standardsed. Isiklikult on mulle oluline, et inimene sobituks meeskonda, oleks konfliktivaba, kuid oskaks ka oma seisukohti kaitsta, sooviks areneda ja ei kardaks proovida midagi uut, pakkuda oma ideid. Samuti on vajalikud oskused skriptikeelte programmeerimises, Linuxi p\u00f5hialuste tundmine ja inglise keele oskus. Inglise keelt on vaja lihtsalt selleks, et inimene saaks vajadusel probleemide lahendusi kiiremini googeldada, mitte kulutada sellele 10 minutit. S\u00fcgava Linuxi tundmisega spetsialistidega on praegu v\u00e4ga keeruline: naljakas, kuid kaks kolmandikku kandidaatidest ei oska vastata k\u00fcsimusele \u201eMis on Load Average? Kuidas see koosneb?\u201d, ja k\u00fcsimust \u201eKuidas koguda core dump C-programmist?\u201d peavad nad millegiks \u00fcleloomulikuks\u2026 v\u00f5i dinosaurusteks. Sellega tuleb leppida, kuna tavaliselt on inimeste muud oskused v\u00e4ga arenenud ja \u201eLinuxit\u201c \u00f5petame me ise. K\u00fcsimusele \u201emiks on see k\u00f5ik vajalik DevOps insenerile t\u00e4nap\u00e4eva pilve maailmas\u201c peame vastuse j\u00e4tma artikli piiresse, kuid kolme s\u00f5naga: k\u00f5ik see on vajalik.<\/p>\n<h4>T\u00f6\u00f6riistade meeskond<\/h4>\n<p>\nAutomatiseerimisel m\u00e4ngib olulist rolli T\u00f6\u00f6riistade meeskond. Nende peamine eesm\u00e4rk on luua mugavaid graafilisi ja CLI t\u00f6\u00f6riistu arendajatele. N\u00e4iteks meie sisearendus Confer v\u00f5imaldab t\u00f5eliselt paar hiirekl\u00f5psu abil rakendust Kubernetesesse v\u00e4lja saata, seadistada ressursid, v\u00f5tmed vaultist jne. Varem kasutati Jenkins + Helm 2, kuid tuli arendada oma t\u00f6\u00f6riist, et v\u00e4ltida kopeerimist ja kleepimist ning tuua tarkvara eluts\u00fcklisse \u00fchtlus.<\/p>\n<p>Ops meeskond ei kirjuta arendajate jaoks torusid, kuid v\u00f5ib anda n\u00f5u k\u00f5igis nende kirjutamise k\u00fcsimustes (osadel on veel j\u00e4\u00e4nud Helm 3).<\/p>\n<h4>DevOps<\/h4>\n<p>\nMis puudutab DevOps\u2019i, siis n\u00e4eme seda sellisena:<\/p>\n<p>Dev meeskonnad kirjutavad koodi ja saadavad selle Conferiga dev -&gt; qa\/stage -&gt; prod. Vastutus, et kood ei aeglustuks ja ei viskaks vigu, lasub Dev ja Ops meeskondadel. P\u00e4eval peab oma rakenduse probleemi puhul reageerima peamiselt Ops\u2019i vaht, aga \u00f5htul ja \u00f6isel ajal peab vahtadmin (Ops) \u00e4ratama vahtarendaja, kui ta on kindel, et probleem ei ole infrastruktuuris. K\u00f5ik m\u00f5\u00f5dikud ja h\u00e4ired tulevad j\u00e4lgimisest automaatselt v\u00f5i poolautomaatselt.<\/p>\n<p>Opsi vastutus algab rakenduse kasutuselev\u00f5tust, kuid Dev'i vastutus ei l\u00f5ppe sellega \u2014 me teeme sama asja ja oleme samas paadis.<\/p>\n<p>Arendajad n\u00f5ustavad administraatoreid, kui vajalik on abi administraatori mikroteenuse kirjutamisel (n\u00e4iteks Go backend + HTML5), ja administraatorid n\u00f5ustavad arendajaid iga infrastruktuuri v\u00f5i k8s-iga seotud k\u00fcsimuses.<\/p>\n<p>\u00dcldiselt pole meil monoliiti, vaid ainult mikroteenuseid. Nende arv k\u00f5igub praegu 900 ja 1000 vahel prod k8s-klasteres, s\u00f5ltuvalt arvust. <i>deployments<\/i>Pod'i arv k\u00f5igub 1700 ja 2000 vahel. Pod'e on praegu umbes 2000 prod-klastri sees.<\/p>\n<p>Exact arve \u00f6elda ei saa, kuna j\u00e4lgime tarbetuid mikroteenuseid ja eemaldame neid poolautomaatse s\u00fcsteemiga. Tarbetute \u00fcksuste j\u00e4lgimist k8s-is aitab meil teha <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Nastradamus\/useless-operator\">useless-operator<\/a><\/noindex>, mis s\u00e4\u00e4stab suurep\u00e4raselt ressursse ja raha.<\/p>\n<h2> Ressursside haldamine <\/h2>\n<p><\/p>\n<h4> J\u00e4lgimine <\/h4>\n<p>\nSuurte klastrite haldamise oluline alus on n\u00f5uetekohaselt \u00fcles ehitatud ja informatiivne j\u00e4lgimine. Me ei ole veel leidnud universaalset lahendust, mis kataks 100% k\u00f5igist j\u00e4lgimise soove, seet\u00f5ttu teeme aeg-ajalt erinevaid kohandatud lahendusi selles valdkonnas.<\/p>\n<ul>\n<li><b>Zabbix<\/b>. Vanakooli j\u00e4lgimine, mis on peamiselt m\u00f5eldud infrastruktuuri \u00fcldise oleku j\u00e4lgimiseks. See teatab meile, kui s\u00f5lm hukkub protsessori, m\u00e4lu, ketaste, v\u00f5rgu jne osas. Midagi \u00fclem\u00e4\u00e4ra erakordset, kuid meil on ka eraldi DaemonSet agendiga, millega j\u00e4lgime n\u00e4iteks klastris DNS-i seisundit: otsime coredns'i ummikutega pod'e, kontrollime v\u00e4listest hostidest juurdep\u00e4\u00e4su. Tundub, et miks selle \u00fcle \u00fcldse muretsemine, kuid suurte andmehulkade korral on see komponent t\u00f5sine t\u00f5rkepunkt. Olen juba varem <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/domclick\/blog\/495450\/\">kirjeldanud<\/a><\/noindex>, kuidas ma v\u00f5itlen DNS-i toimivuse nimel klastris.<\/li>\n<li><b>Prometheus Operator<\/b>. Erinevate eksportijate kogum annab suure \u00fclevaate k\u00f5igist klastrikomponentidest. Edasi visualiseerime k\u00f5ik selle suurtes armatuurlaudades Grafanas, ja teavitamiseks kasutame alertmanagerit.\n<\/li>\n<\/ul>\n<p>\nTeine meie jaoks kasulik t\u00f6\u00f6riist on <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Nastradamus\/list-ingress\">list-ingress<\/a><\/noindex>. Me kirjutame seda p\u00e4rast mitmeid kordi, kui \u00fcks meeskond kattis oma teed teise meeskonna Ingressiga, mille t\u00f5ttu tekkisid 50x vead. N\u00fc\u00fcd enne tootmisse toimetamist kontrollivad arendajad, et nad kedagi ei segaks, ja minu meeskonnale on see hea t\u00f6\u00f6riist Ingress\u2019iga seotud probleemide esmaseks diagnoosimiseks. Naljakas, et algselt kirjutati see administraatoritele ja see n\u00e4gi v\u00e4lja \u00fcsna \u201ej\u00e4medalt\u201c, kuid p\u00e4rast seda, kui t\u00f6\u00f6riist sai armastust arendusmeeskondadelt, muutos see oluliselt ning ei n\u00e4inud enam v\u00e4lja nagu \u201eadministraator tegi veebi liidese administraatoritele\u201c. Peagi loobume sellest t\u00f6\u00f6riistast ja sarnased olukorrad valideeritakse juba enne toru v\u00e4ljalaskmist.<\/p>\n<h4>Meeskondade ressursid 'Kubes'<\/h4>\n<p>\nEnne n\u00e4idete vaatamist on m\u00f5istlik selgitada, kuidas meie s\u00fcsteem ressursi eraldamist t\u00f6\u00f6tajaile. <i>Mikroteenused<\/i>.<\/p>\n<p>Et aru saada, millised meeskonnad ja kui palju nad oma ressursse kasutavad <i>ressursid<\/i> (protsessor, m\u00e4lu, kohalik SSD), eraldame igale meeskonnale oma <i>namespace<\/i> Kubes ning piirame selle maksimaalseid v\u00f5imalusi protsessoris, m\u00e4lus ja kettal, eelnevalt arutades meeskondade vajadusi. Seega ei blokeeri \u00fcks meeskond tavaliselt kogu klastrit, eraldades endale tuhandeid tuumasid ja terabaiti m\u00e4lu. Juurdep\u00e4\u00e4sud namespace\u2019idesse antakse l\u00e4bi AD (me kasutame RBAC-d). Namespace\u2019id ja nende piirangud lisatakse l\u00e4bi pull-requesti GIT-repositooriumisse ning seej\u00e4rel t\u00f5ukab Ansible-pipeline selle automaatselt v\u00e4lja.<\/p>\n<p>Ressursi eraldamise n\u00e4ide meeskonnale:<\/p>\n<pre><code class=\"go\">namespaces:\n\n  chat-team:\n    pods: 23\n    limits:\n      cpu: 11\n      memory: 20Gi\n    requests:\n      cpu: 11\n      memory: 20Gi\n<\/code><\/pre>\n<p><\/p>\n<h4>P\u00e4ringud ja piirangud<\/h4>\n<p>\nKubes <i>P\u00e4ring<\/i> \u2014 see on garantii, et ressursside kogus on eraldatud <i>pod<\/i> (\u00fcks v\u00f5i enam docker-konteinerit) klastris. Limit on garantii, mis t\u00e4hendab maksimaalseid v\u00e4\u00e4rtusi. Sageli v\u00f5ib graafikutelt n\u00e4ha, et m\u00f5ni meeskond on seadnud endale liiga palju reitingute k\u00f5ikidele oma rakendustele ja ei saa rakendust \u201eKubes\u201c \u00fcles seada, kuna nende namespace\u2019is on k\u00f5ik request\u2019id juba \u201ekulutatud\u201c.<\/p>\n<p>\u00d5ige v\u00e4ljap\u00e4\u00e4s sellisest olukorrast: vaadata tegelikku ressursikasutust ja v\u00f5rrelda seda k\u00fcsitud kogusega (P\u00e4ring).<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes DomClickis: kuidas rahulikult magada, hallates 1000 mikroteenuse klastrit\" src=\"\/wp-content\/uploads\/2020\/08\/417373d4421064f28d57a03b6bb5bf94.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Kubernetes DomClickis: kuidas rahulikult magada, hallates 1000 mikroteenuse klastrit\" src=\"\/wp-content\/uploads\/2020\/08\/3168ad6dc8b159059b21e1177e145376.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00dclaltoodud ekraanipiltidel on n\u00e4ha, et \"k\u00fcsimustikud\" (Requested) protsessorid l\u00e4hedane reaalsele l\u00f5ime arvule, samas kui Piirangud v\u00f5ivad \u00fcletada reaalseid keskprotsessori l\u00f5ime arve =)<\/p>\n<p>N\u00fc\u00fcd vaatleme \u00fcksikasjalikult m\u00f5nda namespace'i (valisin namespace kube-system \u2014 s\u00fcsteemi namespace'i \"Kubi\" komponentide jaoks) ja vaatame, kuidas suhe tegelikult kasutatud protsessorite ja m\u00e4lu ning k\u00fcsitud v\u00e4\u00e4rtuste vahel on:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes DomClickis: kuidas rahulikult magada, hallates 1000 mikroteenuse klastrit\" src=\"\/wp-content\/uploads\/2020\/08\/ed6160de5397b8cd39cbae172d4bb872.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOn ilmne, et s\u00fcsteemiteenuste jaoks on reserveeritud palju rohkem m\u00e4lu ja CPU-d, kui tegelikult kasutatakse. Kube-systemi puhul on see p\u00f5hjendatud: on juhtunud, et nginx ingress controller v\u00f5i nodelocaldns on tipphetkel j\u00f5udnud CPU piirini ja kasutanud v\u00e4ga palju RAM-i, seega on siin selline varu \u00f5igustatud. Lisaks ei saa me tugineda viimase kolme tunni graafikutele: oleks soovitav n\u00e4ha ajaloolisi m\u00f5\u00f5dikuid pikema aja jooksul.<\/p>\n<p>On v\u00e4lja t\u00f6\u00f6tatud \"soovituste\" s\u00fcsteem. N\u00e4iteks on siin n\u00e4ha, milliseid ressursse oleks m\u00f5istlik \"piirata\" (\u00fclemine lubatud tase), et v\u00e4ltida \"trotling'ut\": hetke, mil juba kulutatud CPU v\u00f5i m\u00e4lu antud ajakvandi jooksul ning oodata, kuni see \"k\u00fclmutatakse\":<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes DomClickis: kuidas rahulikult magada, hallates 1000 mikroteenuse klastrit\" src=\"\/wp-content\/uploads\/2020\/08\/f23aece10a585e6847bcacfe947031d1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJa siin on podid, millel oleks kasulik oma apetiti m\u00f5\u00f5ta:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes DomClickis: kuidas rahulikult magada, hallates 1000 mikroteenuse klastrit\" src=\"\/wp-content\/uploads\/2020\/08\/1ec9996ce6355aeba603008d51aac209.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u00fcsimus <i>trotling<\/i> + ressursimonitoringu kohta saab kirjutada mitmeid artikleid, seega k\u00fcsige k\u00fcsimusi kommentaarides. Paar s\u00f5na v\u00f5ib \u00f6elda, et selliste m\u00f5\u00f5dikute automatiseerimise \u00fclesanne on \u00fcsna keeruline ja n\u00f5uab palju aega ja akrobaatikat \"aken\" funktsioonide ja \"CTE\" Prometheus \/ VictoriaMetrics abil (need terminid on siin jutum\u00e4rkides, kuna PromQL-is pole peaaegu midagi sarnast ning tuleb koostada hirmutavaid p\u00e4ringuid, mis katavad mitu ekraani teksti, ja tegeleda nende optimeerimisega).<\/p>\n<p>L\u00f5ppkokkuv\u00f5ttes on arendajatel t\u00f6\u00f6riistad oma namespace'ide j\u00e4lgimiseks \"Kubis\", ja nad saavad ise valida, kus ja millal milliste rakenduste ressursse \"l\u00f5igata\" ning millistele podidele saab kogu CPU \u00f6\u00f6 jooksul anda.<\/p>\n<h4>Metodoloogiad<\/h4>\n<p>\nEttev\u00f5ttes, nagu n\u00fc\u00fcd <i>moes<\/i>, j\u00e4rgime DevOps- ja <i>SRE<\/i>-praktikaid. Kui ettev\u00f5ttes on 1000 mikros\u00fcsteemi, umbes 350 arendajat ja 15 administraatorit kogu infrastruktuuri jaoks, peab olema \"moes\": k\u00f5ikide nende \"buzzwordide\" taga peitub \u00e4ge vajadus automaatika j\u00e4rele, ja administraatorid ei tohi olla pudelikael protsessides.<\/p>\n<p>Opsina anname arendajatele erinevaid m\u00f5\u00f5dikuid ja juhtpaneele, mis on seotud teenuste vastamise kiirus ja nende vead.<\/p>\n<p>Kasutame selliseid metodoloogiaid nagu: <noindex><a rel=\"nofollow\" href=\"https:\/\/thenewstack.io\/monitoring-microservices-red-method\/\">RED<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"http:\/\/www.brendangregg.com\/usemethod.html\">USE<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/forepaas\/distributed-monitoring-101-the-four-golden-signals-305bbbc33d35\">Golden Signals<\/a><\/noindex>, kombineerides need koos. P\u00fc\u00fcame v\u00e4hendada armatuurlaudade arvu nii, et \u00fchest pilgust oleks selge, milline teenus praegu halveneb (n\u00e4iteks vastuskoodide hulk sekundis, 99. persenti vastamise aeg) jne. Niipea kui vajame uusi m\u00f5\u00f5dikuid \u00fchiste armatuurlaudade jaoks, viime need kohe joonistesse ja lisame.<\/p>\n<p><i>Ma ei ole graafikuid joonistanud juba kuu aega. Arvatavasti on see hea m\u00e4rk: see t\u00e4hendab, et enamik \"soove\" on juba ellu viidud. Juhtus, et n\u00e4dalas joonistasin v\u00e4hemalt kord p\u00e4evas m\u00f5ne uue graafiku.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes DomClickis: kuidas rahulikult magada, hallates 1000 mikroteenuse klastrit\" src=\"\/wp-content\/uploads\/2020\/08\/574f1b4d2be78fb779f1771bffac51dd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Kubernetes DomClickis: kuidas rahulikult magada, hallates 1000 mikroteenuse klastrit\" src=\"\/wp-content\/uploads\/2020\/08\/6ab2aa05f912839b14bdbcf84faaeb3a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSaavutatud tulemus on v\u00e4\u00e4rtuslik, kuna n\u00fc\u00fcd esitlevad arendajad \u00fcsna harva administratsioonile k\u00fcsimusi \"kus vaadata m\u00f5nda m\u00f5\u00f5dikut\".<\/p>\n<p>Rakendamine <i>Service Mesh<\/i> ei ole kaugel ja peaks k\u00f5igile elu oluliselt lihtsustama, kolleegid Toolsist on juba l\u00e4hedal \"terve inimese Istio\" rakendamisele: iga HTTP(s) p\u00e4ringu eluts\u00fckkel on j\u00e4lgimise kaudu n\u00e4htav ning alati saab aru, \"millises etapis k\u00f5ik l\u00e4ks valesti\" teenustevahelises (ja mitte ainult) suhtluses. Liituge DomClicki ettev\u00f5tte uudiskirjaga. =)<\/p>\n<h2>Kubernetes infrastruktuuri tugi<\/h2>\n<p>\nAjalooliselt oleme kasutanud pat\u0161itud versiooni <i>Kubespray<\/i> \u2014 Ansible'i roll Kubernetes'i k\u00e4ivitamiseks, laiendamiseks ja v\u00e4rskendamiseks. \u00dchel hetkel eemaldati p\u00f5hivoolust tugi non-kubeadm installatsioonidele, ja protsessi \u00fcleminekut kubeadm-ile ei pakutud. L\u00f5puks tegi ettev\u00f5te Southbridge oma k\u00f5rgendatud versiooni (kubeadm toe ja kiire kriitiliste probleemide lahendusega). <\/p>\n<p>Kogu k8s klastrite v\u00e4rskendamisprotsess n\u00e4eb v\u00e4lja selline:<\/p>\n<ul>\n<li>V\u00f5tame <i>Kubespray<\/i> Southbridge'ist, kontrollime meie haruga, sulandame.<\/li>\n<li>V\u00e4ljastame v\u00e4rskenduse <i>Stress<\/i>-\"Kuppel\".<\/li>\n<li>V\u00e4ljastame v\u00e4rskenduse \u00fche nodi kaupa (Ansible'is on see \"serial: 1\") <i>Dev<\/i>-\"Kuppel\".<\/li>\n<li>V\u00e4rskendame <i>Prod<\/i> laup\u00e4eva \u00f5htul \u00fche nodi kaupa.<\/li>\n<\/ul>\n<p>\nTulevikus on plaanis asendada <i>Kubespray<\/i> millegi kiirema vastu ja liikuda \u00fcle <i>kubeadm<\/i>.<\/p>\n<p>Kokku on meil kolm \"Kuppel\": Stress, Dev ja Prod. Plaanime k\u00e4ivitada veel \u00fche (<i>hot standby<\/i>) Prod-\"Kuppel\" teises andmekeskuses. <i>Stress<\/i> ja <i>Dev<\/i> elavad \"virtuaalmasinates\" (oVirt Stressi jaoks ja VMWare cloud Dev'i jaoks). <i>Prod<\/i>-\"Kuppel\" elab \"alumisel raual\" (bare metal): need on samasugused nodid, iga\u00fches 32 CPU l\u00f5nga, 64-128 GB m\u00e4lu ja 300 GB SSD RAID 10 \u2014 kokku on neid 50. Kolm \"pehmed\" nodi on m\u00e4\u00e4ratud \"meister\" <i>Prod<\/i>-\"Kuppel\": 16 GB m\u00e4lu, 12 CPU l\u00f5nga.<\/p>\n<p>M\u00fc\u00fcgis eelistame kasutada \"alust rauda\" ja v\u00e4ltida liigseid kihtide, nagu <i>OpenStack<\/i>: meil ei ole vaja \"m\u00fcrarikkaid naabreid\" ja CPU <i>steal time<\/i>Ja keerukus haldamine suureneb umbes kahekordselt in-house OpenStacki puhul.<\/p>\n<p>CI\/CD \u201eKube\u201d ja teiste infrastruktuurikomponentide jaoks kasutame eraldi GIT-serverit, Helm 3 (\u00fcleminek Helm 2-st oli \u00fcsna vaevaline, kuid oleme v\u00e4ga rahul v\u00f5imalusega <i>aatomiline<\/i>), Jenkins, Ansible ja Docker. Me armastame feature-harusid ja juurutamist erinevatesse keskkondadesse \u00fchest hoidlast.<\/p>\n<h3>Kokkuv\u00f5te<\/h3>\n<p><img decoding=\"async\" alt=\"Kubernetes DomClickis: kuidas rahulikult magada, hallates 1000 mikroteenuse klastrit\" src=\"\/wp-content\/uploads\/2020\/08\/34ddcd1f275c63c1ad821218d16b5abb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNii n\u00e4eb DomClickis inseneri vaatenurgast DevOpsi protsess v\u00e4lja. Artikkel on v\u00e4hem tehniline, kui ma ootasin: seega, j\u00e4lgige DomClicki uudiseid Habr's, tulevad rohkem \u201ehardcore\u201d artiklid Kubernetesest ja muust.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/domclick\/blog\/501122\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0412\u0438\u043a\u0442\u043e\u0440 \u042f\u0433\u043e\u0444\u0430\u0440\u043e\u0432, \u0438 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c Kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0432 \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Ops (\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f). \u042f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e\u0431 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 Dev &lt;-&gt; Ops, \u043e\u0431 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 k8s-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e DevOps\/SRE-\u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043d\u0430\u0448\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430. \u041a\u043e\u043c\u0430\u043d\u0434\u0430 Ops \u0412 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Ops [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":91200,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-91199","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0412\u0438\u043a\u0442\u043e\u0440 \u042f\u0433\u043e\u0444\u0430\u0440\u043e\u0432, \u0438 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c Kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0432 \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Ops (\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f).\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Kubernetes \u0432 \u0414\u043e\u043c\u041a\u043b\u0438\u043a: \u043a\u0430\u043a \u0441\u043f\u0430\u0442\u044c \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u043d\u0430 1000 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0412\u0438\u043a\u0442\u043e\u0440 \u042f\u0433\u043e\u0444\u0430\u0440\u043e\u0432, \u0438 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c Kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0432 \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Ops (\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f).\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-09T23:42:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-09T23:42:03+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Kubernetes DomClickis: kuidas rahulikult magada, hallates 1000 mikroteenuse klastrit | ProHoster","description":"Minu nimi on Viktor Yagofarov ja arendan Kubernetes platvormi ettev\u00f5ttes DomClick tehnilise arenduse meeskonna juhina (eksploateerimine).","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Kubernetes \u0432 \u0414\u043e\u043c\u041a\u043b\u0438\u043a: \u043a\u0430\u043a \u0441\u043f\u0430\u0442\u044c \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e, \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u043c \u043d\u0430 1000 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 | ProHoster","og:description":"\u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u0412\u0438\u043a\u0442\u043e\u0440 \u042f\u0433\u043e\u0444\u0430\u0440\u043e\u0432, \u0438 \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c Kubernetes-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0432 \u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0435 Ops (\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f).","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-09T23:42:03+00:00","article:modified_time":"2020-08-09T23:42:03+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"91199","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:32:23","updated":"2022-09-28 06:43:59","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/91199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=91199"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/91199\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/91200"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=91199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=91199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=91199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}