{"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\/sv\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov","title":{"rendered":"Kubernetes p\u00e5 DomClick: hur man sover lugnt medan man hanterar en kluster med 1000 mikrotj\u00e4nster","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Jag heter Viktor Yagofarov och jag arbetar med utvecklingen av Kubernetes-plattformen p\u00e5 f\u00f6retaget DomClick som teknisk utvecklingsledare inom Ops-teamet (drift). Jag skulle vilja ber\u00e4tta om hur v\u00e5ra Dev  Ops-processer fungerar, om de unika egenskaperna hos en av de st\u00f6rsta k8s-klustrarna i Ryssland, samt om DevOps\/SRE-praktiker som v\u00e5rt team till\u00e4mpar.<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes p\u00e5 DomClick: hur man sover lugnt medan man hanterar en kluster med 1000 mikrotj\u00e4nster\" 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-teamet<\/h4>\n<p>\nI Ops-teamet arbetar f\u00f6r n\u00e4rvarande 15 personer. Tre av dem ansvarar f\u00f6r kontoret, tv\u00e5 arbetar i en annan tidszon och \u00e4r tillg\u00e4ngliga, \u00e4ven p\u00e5 natten. P\u00e5 s\u00e5 s\u00e4tt finns det alltid n\u00e5gon fr\u00e5n Ops vid sk\u00e4rmen och \u00e4r redo att reagera p\u00e5 incidenter av alla sv\u00e5righetsgrader. Vi har inga nattpass, vilket skyddar v\u00e5r mentala h\u00e4lsa och ger alla m\u00f6jlighet att f\u00e5 tillr\u00e4ckligt med s\u00f6mn och tillbringa fritiden inte bara framf\u00f6r datorn.<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes p\u00e5 DomClick: hur man sover lugnt medan man hanterar en kluster med 1000 mikrotj\u00e4nster\" src=\"\/wp-content\/uploads\/2020\/08\/47051db273f116df376e64bad67c6f37.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKompetenserna \u00e4r varierande: n\u00e4tverksspecialister, DBA, experter p\u00e5 ELK-stack, Kubernetes-administrat\u00f6rer\/utvecklare, \u00f6vervakningsexperter, virtualisering, h\u00e5rdvara osv. Det som f\u00f6renar oss \u00e4r att var och en av oss kan ers\u00e4tta den andra till viss del: till exempel, l\u00e4gga till nya noder i k8s-klustret, uppdatera PostgreSQL, skriva CI\/CD-pipelines + Ansible, automatisera n\u00e5got i Python\/Bash\/Go, koppla ihop h\u00e5rdvara i datacentret. Starka kompetenser inom ett omr\u00e5de hindrar inte att man byter inriktning och b\u00f6rjar utvecklas inom ett annat omr\u00e5de. Till exempel b\u00f6rjade jag p\u00e5 f\u00f6retaget som PostgreSQL-specialist, och nu \u00e4r mitt huvudansvarsomr\u00e5de Kubernetes-kluster. I teamet uppskattas all tillv\u00e4xt och k\u00e4nslan av st\u00f6d \u00e4r v\u00e4ldigt stark.<\/p>\n<p>F\u00f6r \u00f6vrigt rekryterar vi. Kraven p\u00e5 kandidater \u00e4r ganska standardiserade. Personligen tycker jag att det \u00e4r viktigt att personen passar in i teamet, \u00e4r konfliktsk\u00f6r men ocks\u00e5 kan st\u00e5 upp f\u00f6r sin \u00e5sikt, vill utvecklas och inte \u00e4r r\u00e4dd f\u00f6r att g\u00f6ra n\u00e5got nytt, samt att de ger sina egna id\u00e9er. Det \u00e4r ocks\u00e5 obligatoriskt med programmeringskunskaper i skriptspr\u00e5k, f\u00f6rst\u00e5else f\u00f6r grunderna i Linux och engelska. Engelska beh\u00f6vs helt enkelt s\u00e5 att personen, vid en eventuell n\u00f6dsituation, kan googla l\u00f6sningen p\u00e5 problemet p\u00e5 10 sekunder ist\u00e4llet f\u00f6r 10 minuter. Det \u00e4r nu mycket sv\u00e5rt att hitta specialister med djup kunskap om Linux: det \u00e4r l\u00f6jligt, men tv\u00e5 av tre kandidater kan inte svara p\u00e5 fr\u00e5gan \"Vad \u00e4r Load Average? Vad best\u00e5r det av?\", och fr\u00e5gan \"Hur samlar man en core dump fr\u00e5n ett C-program\" betraktas som n\u00e5got fr\u00e5n en superm\u00e4nniska... eller dinosaurier. Man f\u00e5r acceptera detta, eftersom m\u00e4nniskor vanligtvis har starka kompetenser p\u00e5 andra omr\u00e5den, och vi kan l\u00e4ra dem \"Linux\". Svaret p\u00e5 fr\u00e5gan \"varf\u00f6r detta \u00e4r viktigt f\u00f6r en DevOps-ingenj\u00f6r i dagens molnv\u00e4rld\" f\u00e5r jag l\u00e4mna utanf\u00f6r artikeln, men om jag ska sammanfatta det med tre ord: allt detta \u00e4r n\u00f6dv\u00e4ndigt.<\/p>\n<h4>Verktygsteamet<\/h4>\n<p>\nVerktygsteamet spelar en stor roll i automatiseringen. Deras huvuduppgift \u00e4r att skapa anv\u00e4ndarv\u00e4nliga grafiska och CLI-verktyg f\u00f6r utvecklare. Till exempel till\u00e5ter v\u00e5r interna utveckling Confer att man bokstavligen kan rulla ut en applikation i Kubernetes med bara n\u00e5gra musklick, st\u00e4lla in resurser, nycklar fr\u00e5n vault etc. Tidigare anv\u00e4nde vi Jenkins + Helm 2, men vi var tvungna att utveckla v\u00e5rt eget verktyg f\u00f6r att utesluta copy-paste och inf\u00f6ra enhetlighet i programvarans livscykel.<\/p>\n<p>Ops-teamet skriver inte pipelines f\u00f6r utvecklarna, men kan ge r\u00e5d i alla fr\u00e5gor ang\u00e5ende deras skrivande (n\u00e5gra har fortfarande Helm 3).<\/p>\n<h4>DevOps<\/h4>\n<p>\nN\u00e4r det kommer till DevOps ser vi det som f\u00f6ljer:<\/p>\n<p>Utvecklarteam skriver kod och rullar ut den genom Confer fr\u00e5n dev -&gt; qa\/stage -&gt; prod. Ansvarigheten f\u00f6r att koden inte saktas ner eller ger fel ligger p\u00e5 utvecklar- och ops-team. Under dagtid ska den jourhavande fr\u00e5n Ops-teamet reagera p\u00e5 incidenter med sin applikation, medan under kv\u00e4lls- och nattetid b\u00f6r den jourhavande administrat\u00f6ren (Ops) v\u00e4cka den jourhavande utvecklaren om han \u00e4r s\u00e4ker p\u00e5 att problemet inte ligger i infrastrukturen. Alla metrik och larm i \u00f6vervakningen upptr\u00e4der automatiskt eller halvautomatiskt.<\/p>\n<p>Ops ansvaromr\u00e5de b\u00f6rjar fr\u00e5n det \u00f6gonblick applikationen g\u00e5r live, men \u00e4ven Dev:s ansvar tar inte slut d\u00e4r \u2013 vi arbetar med samma saker och \u00e4r i samma b\u00e5t.<\/p>\n<p>Utvecklarna konsulterar administrat\u00f6rer om hj\u00e4lp med att skriva administrativa mikrotj\u00e4nster (t.ex. Go backend + HTML5), och administrat\u00f6rer konsulterar utvecklarna om infrastrukturella fr\u00e5gor eller fr\u00e5gor relaterade till k8s.<\/p>\n<p>F\u00f6r \u00f6vrigt har vi \u00f6verhuvudtaget ingen monolit, bara mikrotj\u00e4nster. Antalet ligger f\u00f6r n\u00e4rvarande mellan 900 och 1000 i prod k8s-klustret, om man m\u00e4ter p\u00e5 antal <i>deployment<\/i>. Antalet pods varierar mellan 1700 och 2000. Det finns f\u00f6r n\u00e4rvarande cirka 2000 pods i prod-klustret.<\/p>\n<p>Jag kan inte ge exakta siffror, eftersom vi \u00f6vervakar on\u00f6diga mikrotj\u00e4nster och tar bort dem i ett semi-automatiskt l\u00e4ge. Att \u00f6vervaka on\u00f6diga enheter i k8s hj\u00e4lper oss <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Nastradamus\/useless-operator\">useless-operator<\/a><\/noindex>, vilket sparar resurser och pengar.<\/p>\n<h2> Resurshantering <\/h2>\n<p><\/p>\n<h4> \u00d6vervakning <\/h4>\n<p>\nDen grundl\u00e4ggande best\u00e5ndsdelen i driften av ett stort kluster blir en v\u00e4lbyggd och informativ \u00f6vervakning. Vi har \u00e4nnu inte funnit en universell l\u00f6sning som t\u00e4cker 100 % av alla \u00f6nskem\u00e5l kring \u00f6vervakning, s\u00e5 vi skapar periodvis olika skr\u00e4ddarsydda l\u00f6sningar inom detta omr\u00e5de.<\/p>\n<ul>\n<li><b>Zabbix<\/b>. Den gamla goda \u00f6vervakningen, som \u00e4r avsedd, framf\u00f6r allt, f\u00f6r att sp\u00e5ra det \u00f6vergripande tillst\u00e5ndet i infrastrukturen. Den meddelar oss n\u00e4r en nod faller p\u00e5 grund av CPU, minne, diskar, n\u00e4tverk etc. Inget \u00f6verkomplicerat, men vi har ocks\u00e5 en separat DaemonSet med agenter genom vilka vi till exempel \u00f6vervakar tillst\u00e5ndet f\u00f6r DNS i klustret: vi letar efter segande pods av coredns, kontrollerar \u00e5tkomligheten av externa v\u00e4rdar. Man kan tycka att det \u00e4r on\u00f6digt att kr\u00e5ngla med det, men vid stora trafikvolymer \u00e4r denna komponent en allvarlig punkt f\u00f6r avbrott. Jag har tidigare <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/domclick\/blog\/495450\/\">beskrivit<\/a><\/noindex>, k\u00e4mpat med DNS-prestanda i klustret.<\/li>\n<li><b>Prometheus Operator<\/b>. En upps\u00e4ttning olika exporters ger en god \u00f6versikt \u00f6ver alla komponenter i klustret. Sedan visualiserar vi allt detta p\u00e5 stora dashboards i Grafana, och f\u00f6r aviseringar anv\u00e4nder vi alertmanager.\n<\/li>\n<\/ul>\n<p>\nEtt annat anv\u00e4ndbart verktyg f\u00f6r oss har blivit <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Nastradamus\/list-ingress\">list-ingress<\/a><\/noindex>. \u041c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0435\u0433\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0435\u0439, \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u0435\u0440\u0435\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0443\u0442\u044f\u043c\u0438 Ingress \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0438\u0437-\u0437\u0430 \u0447\u0435\u0433\u043e \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u043e\u0448\u0438\u0431\u043a\u0438 50x. \u0421\u0435\u0439\u0447\u0430\u0441 \u043f\u0435\u0440\u0435\u0434 \u0434\u0435\u043f\u043b\u043e\u0435\u043c \u043d\u0430 \u043f\u0440\u043e\u0434 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442, \u0447\u0442\u043e \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435 \u0437\u0430\u0434\u0435\u043d\u0443\u0442, \u0430 \u0434\u043b\u044f \u043c\u043e\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u044d\u0442\u043e \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0439 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 Ingress&#8217;\u0430\u043c\u0438. \u0417\u0430\u0431\u0430\u0432\u043d\u043e, \u0447\u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0435\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u043e\u0432 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b \u043e\u043d \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u00ab\u0442\u043e\u043f\u043e\u0440\u043d\u043e\u00bb, \u043d\u043e \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u043f\u043e\u043b\u044e\u0431\u0438\u043b\u0441\u044f dev-\u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c, \u043e\u043d \u0441\u0438\u043b\u044c\u043d\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0438\u043b\u0441\u044f \u0438 \u0441\u0442\u0430\u043b \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043d\u0435 \u043a\u0430\u043a \u00ab\u0430\u0434\u043c\u0438\u043d \u0441\u0434\u0435\u043b\u0430\u043b \u0432\u0435\u0431-\u043c\u043e\u0440\u0434\u0443 \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u043e\u0432\u00bb. \u0421\u043a\u043e\u0440\u043e \u043c\u044b \u043e\u0442\u043a\u0430\u0436\u0435\u043c\u0441\u044f \u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0438 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0435\u0449\u0435 \u0434\u043e \u0432\u044b\u043a\u0430\u0442\u043a\u0438 \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u0430.<\/p>\n<h4>Teamresurser i \"Kuben\"<\/h4>\n<p>\nInnan vi g\u00e5r in p\u00e5 exemplen, \u00e4r det v\u00e4rt att f\u00f6rklara hur vi arbetar med resursallokering f\u00f6r <i>mikrotj\u00e4nster<\/i>.<\/p>\n<p>F\u00f6r att f\u00f6rst\u00e5 vilka team och i vilka m\u00e4ngder de anv\u00e4nder sina <i>resurser<\/i> (processor, minne, lokal SSD) tilldelar vi varje team sitt eget <i>namnrymd<\/i> \u0432 \u00ab\u041a\u0443\u0431\u0435\u00bb \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0443, \u043f\u0430\u043c\u044f\u0442\u0438 \u0438 \u0434\u0438\u0441\u043a\u0443, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0431\u0433\u043e\u0432\u043e\u0440\u0438\u0432 \u043d\u0443\u0436\u0434\u044b \u043a\u043e\u043c\u0430\u043d\u0434. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043e\u0434\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u0432 \u043e\u0431\u0449\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043d\u0435 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u0442 \u0434\u043b\u044f \u0434\u0435\u043f\u043b\u043e\u044f \u0432\u0435\u0441\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440, \u0432\u044b\u0434\u0435\u043b\u0438\u0432 \u0441\u0435\u0431\u0435 \u0442\u044b\u0441\u044f\u0447\u0438 \u044f\u0434\u0435\u0440 \u0438 \u0442\u0435\u0440\u0430\u0431\u0430\u0439\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438. \u0414\u043e\u0441\u0442\u0443\u043f\u044b \u0432 namespace \u0432\u044b\u0434\u0430\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 AD (\u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c RBAC). Namespace&#8217;\u044b \u0438 \u0438\u0445 \u043b\u0438\u043c\u0438\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0443\u043b-\u0440\u0435\u043a\u0432\u0435\u0441\u0442 \u0432 GIT-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0430 \u0434\u0430\u043b\u0435\u0435 \u0447\u0435\u0440\u0435\u0437 Ansible-\u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d \u0432\u0441\u0451 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0430\u0441\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>Exempel p\u00e5 resursallokering f\u00f6r ett team:<\/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>Beg\u00e4rningar och gr\u00e4nser<\/h4>\n<p>\nI \"Kuben\" <i>Beg\u00e4ran<\/i> \u2013 \u00e4r det den m\u00e4ngd garanterade reserverade resurser f\u00f6r <i>pod<\/i> (\u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u043a\u0435\u0440-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432) \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435. Limit \u2014 \u044d\u0442\u043e \u043d\u0435\u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c. \u0427\u0430\u0441\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445, \u043a\u0430\u043a \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u0441\u0435\u0431\u0435 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0435\u043a\u0432\u0435\u0441\u0442\u043e\u0432 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u0434\u0435\u043f\u043b\u043e\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u00ab\u041a\u0443\u0431\u00bb, \u0442\u0430\u043a \u043a\u0430\u043a \u043f\u043e\u0434 \u0438\u0445 namespace \u0432\u0441\u0435 request&#8217;\u044b \u0443\u0436\u0435 \u00ab\u043f\u043e\u0442\u0440\u0430\u0447\u0435\u043d\u044b\u00bb.<\/p>\n<p>Den r\u00e4tta l\u00f6sningen p\u00e5 en s\u00e5dan situation: att titta p\u00e5 det faktiska resursutnyttjandet och j\u00e4mf\u00f6ra det med den beg\u00e4rda m\u00e4ngden (Request).<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes p\u00e5 DomClick: hur man sover lugnt medan man hanterar en kluster med 1000 mikrotj\u00e4nster\" src=\"\/wp-content\/uploads\/2020\/08\/417373d4421064f28d57a03b6bb5bf94.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Kubernetes p\u00e5 DomClick: hur man sover lugnt medan man hanterar en kluster med 1000 mikrotj\u00e4nster\" src=\"\/wp-content\/uploads\/2020\/08\/3168ad6dc8b159059b21e1177e145376.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00e5 sk\u00e4rmdumparna ovan kan man se att \"beg\u00e4rda\" (Requested) CPU:er n\u00e4rmar sig det faktiska antalet tr\u00e5dar, medan Limits kan \u00f6verstiga det verkliga antalet CPU-tr\u00e5dar =)<\/p>\n<p>L\u00e5t oss nu ta en n\u00e4rmare titt p\u00e5 ett namespace (jag valde namespace kube-system \u2013 systemnamnrymd f\u00f6r komponenterna i \"Kuben\") och se f\u00f6rh\u00e5llandet mellan faktisk processoranv\u00e4ndning och minne i f\u00f6rh\u00e5llande till beg\u00e4rt:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes p\u00e5 DomClick: hur man sover lugnt medan man hanterar en kluster med 1000 mikrotj\u00e4nster\" src=\"\/wp-content\/uploads\/2020\/08\/ed6160de5397b8cd39cbae172d4bb872.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet \u00e4r uppenbart att minne och CPU reserveras f\u00f6r systemtj\u00e4nster i betydligt st\u00f6rre utstr\u00e4ckning \u00e4n vad som faktiskt anv\u00e4nds. I fallet med kube-system \u00e4r detta ber\u00e4ttigat: det har f\u00f6rekommit att nginx ingress controller eller nodelocaldns i toppar har n\u00e5tt CPU-gr\u00e4nsen och anv\u00e4nt mycket RAM, d\u00e4rf\u00f6r \u00e4r den h\u00e4r reserveringen motiverad. Dessutom kan vi inte f\u00f6rlita oss p\u00e5 diagrammen fr\u00e5n de senaste 3 timmarna: det \u00e4r \u00f6nskv\u00e4rt att se historiska m\u00e4tv\u00e4rden \u00f6ver en l\u00e4ngre tidsperiod.<\/p>\n<p>Ett system f\u00f6r \"rekomendationer\" har utvecklats. Till exempel kan man h\u00e4r se vilka resurser som skulle ha nytta av att h\u00f6ja \"gr\u00e4nserna\" (den \u00f6vre till\u00e5tna gr\u00e4nsen) f\u00f6r att f\u00f6rhindra \"throttling\": stunden n\u00e4r en redan har anv\u00e4nt CPU eller minne under sin tilldelade tidskvant och v\u00e4ntar p\u00e5 att bli \"avfrostat\":<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes p\u00e5 DomClick: hur man sover lugnt medan man hanterar en kluster med 1000 mikrotj\u00e4nster\" src=\"\/wp-content\/uploads\/2020\/08\/f23aece10a585e6847bcacfe947031d1.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOch h\u00e4r \u00e4r pods som b\u00f6r moderera sina beg\u00e4rningar:<\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes p\u00e5 DomClick: hur man sover lugnt medan man hanterar en kluster med 1000 mikrotj\u00e4nster\" src=\"\/wp-content\/uploads\/2020\/08\/1ec9996ce6355aeba603008d51aac209.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOm <i>throttling<\/i> + resurs\u00f6vervakning kan skrivas inte i en utan m\u00e5nga artiklar, s\u00e5 st\u00e4ll fr\u00e5gor i kommentarerna. Kort sagt kan jag s\u00e4ga att uppgiften att automatisera s\u00e5dana metoder \u00e4r ganska komplicerad och kr\u00e4ver mycket tid och balans med \"f\u00f6nster\"-funktioner och \"CTE\" i Prometheus \/ VictoriaMetrics (dessa termer \u00e4r inom citat eftersom det i PromQL n\u00e4stintill inte finns n\u00e5got som liknar det, och det kr\u00e4vs att skapa skr\u00e4mmande fr\u00e5gor p\u00e5 flera sk\u00e4rmar av text och arbeta med deras optimering).<\/p>\n<p>I slut\u00e4ndan har utvecklarna verktyg f\u00f6r att \u00f6vervaka sina namespaces i \"Kuben\", och de kan sj\u00e4lva besluta var och n\u00e4r de kan \"sk\u00e4ra ner\" resurser f\u00f6r vilka applikationer, och vilka pods som kan f\u00e5 hela CPU:n under natten.<\/p>\n<h4>Metodologier<\/h4>\n<p>\nI f\u00f6retaget, som nu <i>\u00e4r trendy<\/i>, f\u00f6ljer vi DevOps- och <i>SRE<\/i>-praktiker. N\u00e4r f\u00f6retaget har 1000 mikrotj\u00e4nster, cirka 350 utvecklare och 15 administrat\u00f6rer f\u00f6r hela infrastrukturen, m\u00e5ste man \"vara trendy\": bakom alla dessa \"buzzwords\" d\u00f6ljer sig ett akut behov av att automatisera allt och ingen ska vara flaskhals i processerna.<\/p>\n<p>Som Ops tillhandah\u00e5ller vi olika m\u00e4tv\u00e4rden och instrumentpaneler f\u00f6r utvecklarna, kopplade till servicen svarstid och deras fel.<\/p>\n<p>Vi anv\u00e4nder s\u00e5dana metodologier som: <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\">ANV\u00c4ND<\/a><\/noindex> och <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/forepaas\/distributed-monitoring-101-the-four-golden-signals-305bbbc33d35\">Golden Signals<\/a><\/noindex>, genom att kombinera dem. Vi f\u00f6rs\u00f6ker minimera antalet instrumentpaneler s\u00e5 att det med ett enda \u00f6gonkast \u00e4r tydligt vilken tj\u00e4nst som just nu degraderas (till exempel svarskoder per sekund, svarstid enligt 99:e percentilen), och s\u00e5 vidare. S\u00e5 snart nya metrik beh\u00f6vs f\u00f6r gemensamma instrumentpaneler ritar vi dem och l\u00e4gger till dem.<\/p>\n<p><i>Jag har inte ritat n\u00e5gra diagram p\u00e5 en m\u00e5nad. Kanske \u00e4r det ett bra tecken: det betyder att de flesta av \"\u00f6nskem\u00e5len\" redan har f\u00f6rverkligats. Det har h\u00e4nt att jag \u00e5tminstone en g\u00e5ng om dagen under en vecka har ritat n\u00e5got nytt diagram.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Kubernetes p\u00e5 DomClick: hur man sover lugnt medan man hanterar en kluster med 1000 mikrotj\u00e4nster\" src=\"\/wp-content\/uploads\/2020\/08\/574f1b4d2be78fb779f1771bffac51dd.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Kubernetes p\u00e5 DomClick: hur man sover lugnt medan man hanterar en kluster med 1000 mikrotj\u00e4nster\" src=\"\/wp-content\/uploads\/2020\/08\/6ab2aa05f912839b14bdbcf84faaeb3a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet skapade resultatet \u00e4r v\u00e4rdefullt eftersom utvecklarna numera s\u00e4llan g\u00e5r till administrat\u00f6rerna med fr\u00e5gor om \"var man kan se en viss metrik\".<\/p>\n<p>Implementering <i>Service Mesh<\/i> \u00e4r inte l\u00e5ngt borta och b\u00f6r underl\u00e4tta livet f\u00f6r alla av oss, kollegor fr\u00e5n Tools \u00e4r redan n\u00e4ra att implementera den abstrakta \"Istio f\u00f6r den friska personen\": livscykeln f\u00f6r varje HTTP(s)-beg\u00e4ran kommer att synas i \u00f6vervakningen, och det kommer alltid att vara m\u00f6jligt att f\u00f6rst\u00e5 \"vid vilket steg allt gick snett\" vid tj\u00e4nsteinteraktion (och inte bara). Prenumerera p\u00e5 nyheter fr\u00e5n Hubben p\u00e5 DomKlick. =)<\/p>\n<h2>St\u00f6d f\u00f6r Kubernetes-infrastruktur<\/h2>\n<p>\nHistoriskt sett har vi anv\u00e4nt en patchad version <i>Kubespray<\/i> \u2013 Ansible-roll f\u00f6r distribution, utvidgning och uppdatering av Kubernetes. Vid n\u00e5got tillf\u00e4lle togs st\u00f6det f\u00f6r non-kubeadm installationer bort fr\u00e5n huvudgrenen, och \u00f6verg\u00e5ngen till kubeadm f\u00f6reslogs inte. Som ett resultat gjorde f\u00f6retaget Southbridge sin egen fork (med st\u00f6d f\u00f6r kubeadm och snabb fix av kritiska problem). <\/p>\n<p>Processen f\u00f6r att uppdatera alla k8s-kluster ser ut s\u00e5 h\u00e4r:<\/p>\n<ul>\n<li>Vi h\u00e4mtar <i>Kubespray<\/i> fr\u00e5n Southbridge, j\u00e4mf\u00f6r med v\u00e5r gren, sl\u00e5r samman.<\/li>\n<li>Vi rullar ut uppdateringen i <i>Stress<\/i>-\"Kuben\".<\/li>\n<li>Vi utf\u00f6r uppdateringen en nod i taget (i Ansible \u00e4r detta \"serial: 1\") i <i>Dev<\/i>-\"Kuben\".<\/li>\n<li>Uppdaterar <i>Prod<\/i> p\u00e5 l\u00f6rdag kv\u00e4ll en nod \u00e5t g\u00e5ngen.<\/li>\n<\/ul>\n<p>\nI framtiden finns planer p\u00e5 att ers\u00e4tta <i>Kubespray<\/i> med n\u00e5got snabbare och \u00f6verg\u00e5 till <i>kubeadm<\/i>.<\/p>\n<p>Totalt har vi tre \"Kuber\": Stress, Dev och Prod. Vi planerar att starta en till (<i>hot standby<\/i>) Prod-\"Kub\" i det andra datacentret. <i>Stress<\/i> och <i>Dev<\/i> bor i \"virtuella maskiner\" (oVirt f\u00f6r Stress och VMWare cloud f\u00f6r Dev). <i>Prod<\/i>-\"Kuben\" lever p\u00e5 \"bar h\u00e5rdvara\": det \u00e4r identiska noder med 32 CPU-tr\u00e5dar, 64-128 GB minne och 300 GB SSD RAID 10 \u2014 totalt finns det 50 stycken. Tre \"smala\" noder \u00e4r avsatta f\u00f6r \"master\" <i>Prod<\/i>-\"Kuben\": 16 GB minne, 12 CPU-tr\u00e5dar.<\/p>\n<p>F\u00f6r produktion f\u00f6redrar vi att anv\u00e4nda \"bar h\u00e5rdvara\" och undviker on\u00f6diga lager som <i>OpenStack<\/i>: vi beh\u00f6ver inga \"bullriga grannar\" och CPU <i>steal time<\/i>Och dessutom \u00f6kar komplexiteten i administrationen med ungef\u00e4r det dubbla vid in-house OpenStack.<\/p>\n<p>F\u00f6r CI\/CD av \"Kubernetes\" och andra infrastrukturskomponenter anv\u00e4nder vi en separat GIT-server, Helm 3 (vi \u00f6vergick ganska sm\u00e4rtsamt fr\u00e5n Helm 2, men \u00e4r mycket glada \u00f6ver alternativet <i>atomic<\/i>), Jenkins, Ansible och Docker. Vi \u00e4lskar feature-brancher och deploy i olika milj\u00f6er fr\u00e5n ett och samma repository.<\/p>\n<h3>Slutsats<\/h3>\n<p><img decoding=\"async\" alt=\"Kubernetes p\u00e5 DomClick: hur man sover lugnt medan man hanterar en kluster med 1000 mikrotj\u00e4nster\" src=\"\/wp-content\/uploads\/2020\/08\/34ddcd1f275c63c1ad821218d16b5abb.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nS\u00e5 h\u00e4r, i stora drag, ser processerna f\u00f6r DevOps ut p\u00e5 f\u00f6retaget DomClick fr\u00e5n en driftingsenj\u00f6rs perspektiv. Artikeln blev mindre teknisk \u00e4n vad jag f\u00f6rv\u00e4ntade mig: s\u00e5 h\u00e5ll utkik efter nyheter fr\u00e5n DomClick p\u00e5 Habra: det kommer fler \"h\u00e5rdvaru\"-artiklar om Kubernetes och mer.<br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/kubernetes-v-domklik-kak-spat-spokojno-upravlyaya-klasterom-na-1000-mikroservisov\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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 p\u00e5 DomClick: hur man sover gott medan man hanterar en kluster med 1000 mikrotj\u00e4nster | ProHoster","description":"Jag heter Viktor Yagofarov, och jag arbetar med utvecklingen av Kubernetes-plattformen p\u00e5 f\u00f6retaget DomClick som teknisk ledare f\u00f6r utveckling i Ops-teamet (drift).","canonical_url":"https:\/\/prohoster.info\/sv\/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":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/91199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=91199"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/91199\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/91200"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=91199"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=91199"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=91199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}