{"id":97982,"date":"2020-10-23T14:42:15","date_gmt":"2020-10-23T12:42:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/devyat-sovetov-po-povysheniyu-proizvoditelnosti-kubernetes"},"modified":"2020-11-18T00:58:47","modified_gmt":"2020-11-17T22:58:47","slug":"devyat-sovetov-po-povysheniyu-proizvoditelnosti-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/devyat-sovetov-po-povysheniyu-proizvoditelnosti-kubernetes","title":{"rendered":"N\u00ebnt\u00eb k\u00ebshilla p\u00ebr rritjen e produktivitetit t\u00eb Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"N\u00ebnt\u00eb k\u00ebshilla p\u00ebr rritjen e produktivitetit t\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/92dc510aa9d785a31d310816b18bf854.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve! Un\u00eb quhem Oleg Sidorenko, punoj n\u00eb kompanin\u00eb DomKlik si drejtues i ekipit t\u00eb infrastruktur\u00ebs. Ne kemi operuar \"Kubikun\" n\u00eb prodhim p\u00ebr m\u00eb shum\u00eb se tre vjet, dhe gjat\u00eb k\u00ebsaj kohe kemi p\u00ebrjetuar shum\u00eb momente interesante me t\u00eb. Sot do t'ju tregoj si, me nj\u00eb qasje t\u00eb duhur, mund t\u00eb nxjerrni edhe m\u00eb shum\u00eb performanc\u00eb nga Kubernetes-i \"vanil\" p\u00ebr klasterin tuaj. Gati, q\u00ebndroni dhe shikoni! <\/p>\n<p>T\u00eb gjith\u00eb e dini mir\u00eb se Kubernetes \u00ebsht\u00eb nj\u00eb sistem i shkall\u00ebzuesh\u00ebm me kod t\u00eb hapur p\u00ebr orkestrimin e konteiner\u00ebve; n\u00eb fakt, \u00ebsht\u00eb 5 binar\u00eb q\u00eb kryejn\u00eb magji duke menaxhuar ciklin e jet\u00ebs s\u00eb mikrosh\u00ebrbimeve tuaja n\u00eb nj\u00eb mjedis serveri. P\u00ebr m\u00eb tep\u00ebr, \u00ebsht\u00eb nj\u00eb mjet mjaft fleksib\u00ebl, q\u00eb mund t\u00eb nd\u00ebrtohet si nj\u00eb konstruktori Lego, p\u00ebr maksimizimin e personalizimit p\u00ebr detyra t\u00eb ndryshme.<\/p>\n<p>Dhe duket gjith\u00e7ka mir\u00eb: hedh serverat n\u00eb klaster, si drut\u00eb n\u00eb zjarr, dhe nuk e di p\u00ebr lodhjen. Por n\u00ebse je p\u00ebr ekologjin\u00eb, do t\u00eb mendosh: \"Si mund ta mbaj zjarrin n\u00eb sob\u00eb dhe t\u00eb kem m\u00ebshir\u00eb p\u00ebr pyllin?\". Me fjal\u00eb t\u00eb tjera, si t\u00eb gjejm\u00eb m\u00ebnyra p\u00ebr t\u00eb p\u00ebrmir\u00ebsuar infrastruktur\u00ebn dhe p\u00ebr t\u00eb ulur kostot.<\/p>\n<h2>1. Ndiqni burimet e ekipeve dhe aplikacioneve<\/h2>\n<p><img decoding=\"async\" alt=\"N\u00ebnt\u00eb k\u00ebshilla p\u00ebr rritjen e produktivitetit t\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/91e2e60b47ee985b024532c8b685230c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Nj\u00eb nga metodat m\u00eb t\u00eb thjeshta, por efektive \u00ebsht\u00eb vendosja e requests\/limits. P\u00ebrdorni namespace p\u00ebr t\u00eb ndar\u00eb aplikacionet, dhe ndjeni namespace sipas grupeve t\u00eb zhvillimit. Caktoni vlerat e konsumit t\u00eb koh\u00ebs procesor, memories dhe ruajtjes efemere para se t\u00eb b\u00ebni deploy p\u00ebr aplikacionin.<\/p>\n<pre><code>resources:\n   requests:\n     memory: 2Gi\n     cpu: 250m\n   limits:\n     memory: 4Gi\n     cpu: 500m<\/code><\/pre>\n<p>Sipas p\u00ebrvoj\u00ebs ton\u00eb, nuk duhet t\u00eb rrisni requests p\u00ebrtej limitit m\u00eb shum\u00eb se dyfish. V\u00ebllimi i klasterit llogaritet bazuar n\u00eb requests, dhe n\u00ebse do t\u00eb caktoni nj\u00eb ndryshim n\u00eb burime p\u00ebr aplikacionet, p\u00ebr shembull 5-10 her\u00eb, imagjinoni se \u00e7far\u00eb do t\u00eb ndodh\u00eb me nod\u00ebn tuaj kur ajo do t\u00eb mbushet me pod dhe papritur do t\u00eb marr\u00eb ngarkes\u00eb. Absolutisht asgj\u00eb e mir\u00eb. N\u00eb minimum, do t\u00eb keni trottling, dhe n\u00eb maksimum, do t\u00eb p\u00ebrsh\u00ebndeteni me workerin dhe do t\u00eb merrni nj\u00eb ngarkes\u00eb ciklike n\u00eb nodat e tjera pasi pod et do t\u00eb fillojn\u00eb t\u00eb l\u00ebvizin.<\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, me ndihm\u00ebn e <code>limitranges<\/code> mund t\u00eb caktoni nga fillimi vlerat p\u00ebr burimet e kontejnerit \u2014 minimale, maksimale dhe ndryshe:<\/p>\n<pre><code>\u279c  ~ kubectl describe limitranges --namespace ops\nName:       limit-range\nNamespace:  ops\nType        Resource           Min   Max   Default Request  Default Limit  Max Limit\/Request Ratio\n----        --------           ---   ---   ---------------  -------------  -----------------------\nContainer   cpu                50m   10    100m             100m           2\nContainer   ephemeral-storage  12Mi  8Gi   128Mi            4Gi            -\nContainer   memory             64Mi  40Gi  128Mi            128Mi          2<\/code><\/pre>\n<p>Mos u kujtoni t\u00eb kufizoni burimet e em\u00ebrhap\u00ebsit, n\u00eb m\u00ebnyr\u00eb q\u00eb nj\u00eb ekip t\u00eb mos marr\u00eb t\u00eb gjith\u00eb burimet e klasterit:<\/p>\n<pre><code>\u279c  ~ kubectl describe resourcequotas --namespace ops\nName:                   resource-quota\nNamespace:              ops\nResource                Used          Hard\n--------                ----          ----\nlimits.cpu              77250m        80\nlimits.memory           124814367488  150Gi\npods                    31            45\nrequests.cpu            53850m        80\nrequests.memory         75613234944   150Gi\nservices                26            50\nservices.loadbalancers  0             0\nservices.nodeports      0             0<\/code><\/pre>\n<p>Si\u00e7 shihet nga p\u00ebrshkrimi <code>resourcequotas<\/code>, n\u00ebse ekipi ops d\u00ebshiron t\u00eb vendos\u00eb pod-e q\u00eb do t\u00eb konsumonin 10 cpu m\u00eb shum\u00eb, planifikuesi nuk do ta lejoj\u00eb k\u00ebt\u00eb dhe do t\u00eb jap\u00eb nj\u00eb gabim:<\/p>\n<pre><code>Gabim n\u00eb krijim: pod-et \"nginx-proxy-9967d8d78-nh4fs\" jan\u00eb t\u00eb ndaluara: tejkaloi kuot\u00ebn: resource-quota, e k\u00ebrkuar: limits.cpu=5, requests.cpu=5, e p\u00ebrdorur: limits.cpu=77250m, requests.cpu=53850m, e kufizuar: limits.cpu=10, requests.cpu=10<\/code><\/pre>\n<p>P\u00ebr t\u00eb zgjidhur nj\u00eb problem t\u00eb till\u00eb, mund t\u00eb shkruani nj\u00eb mjet, p\u00ebr shembull, si <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/pauljamm\/team-operator\">k\u00ebt\u00eb<\/a><\/noindex>, q\u00eb \u00ebsht\u00eb n\u00eb gjendje t\u00eb ruaj\u00eb dhe t\u00eb angazhoj\u00eb gjendjen e burimeve t\u00eb ekipeve.<\/p>\n<h2>2. Zgjidhni ruajtjen optimale t\u00eb skedar\u00ebve<\/h2>\n<p><img decoding=\"async\" alt=\"N\u00ebnt\u00eb k\u00ebshilla p\u00ebr rritjen e produktivitetit t\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/c7f8bdbf5490acc9061695a6d608015e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>K\u00ebtu do t\u00eb doja t\u00eb trajtoja tem\u00ebn e volumeve persistente dhe sistemit t\u00eb disqeve t\u00eb nodave pun\u00ebtor\u00eb Kubernetes. Shpresoj q\u00eb askush t\u00eb mos p\u00ebrdor\u00eb \"Kub\" n\u00eb HDD n\u00eb prodhim, por ndonj\u00ebher\u00eb edhe nj\u00eb SSD i zakonsh\u00ebm nuk mjafton m\u00eb. Kemi hasur nj\u00eb problem ku log-et prisnin disqet nga operacionet e hyrje-daljes, dhe k\u00ebtu opsionet e zgjidhjes nuk jan\u00eb shum\u00eb: <\/p>\n<ul>\n<li>\n<p>T\u00eb p\u00ebrdorim SSD me performanc\u00eb t\u00eb lart\u00eb ose t\u00eb kalojm\u00eb n\u00eb NVMe (n\u00ebse keni kontroll mbi harduerin tuaj).<\/p>\n<\/li>\n<li>\n<p>T\u00eb reduktojm\u00eb nivelin e regjistrimit.<\/p>\n<\/li>\n<li>\n<p>T\u00eb b\u00ebjm\u00eb nj\u00eb balansim \"t\u00eb men\u00e7ur\" t\u00eb pod-\u00ebve q\u00eb ngarkojn\u00eb disqin (<code>podAntiAffinity<\/code>).<\/p>\n<\/li>\n<\/ul>\n<p>Screenshot-i m\u00eb sip\u00ebr tregon se \u00e7far\u00eb ndodh me nginx-ingress-controller n\u00eb disk kur \u00ebsht\u00eb aktivizuar regjistrimi i access_logs (~12 mij\u00eb regjistrime\/sec.). Ky gjendje, natyrisht, mund t\u00eb \u00e7oj\u00eb n\u00eb degradimin e t\u00eb gjitha aplikacioneve n\u00eb k\u00ebt\u00eb nod.<\/p>\n<p>Sa i p\u00ebrket PV, fatkeq\u00ebsisht, nuk kam provuar t\u00eb gjitha <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/persistent-volumes\/#types-of-persistent-volumes\">llojet<\/a><\/noindex> V\u00ebllimet e Q\u00ebndrueshme. P\u00ebrdorni opsionin m\u00eb t\u00eb mir\u00eb t\u00eb p\u00ebrshtatsh\u00ebm p\u00ebr ju. Historikisht, nj\u00eb pjes\u00eb e vog\u00ebl e sh\u00ebrbimeve ka nevoj\u00eb p\u00ebr v\u00ebllime RWX, dhe qysh n\u00eb at\u00eb koh\u00eb \u00ebsht\u00eb p\u00ebrdorur ruajtja NFS p\u00ebr k\u00ebt\u00eb q\u00ebllim. E lira dhe... e mjaftueshme. Sigurisht, kemi p\u00ebrjetuar shum\u00eb probleme me t\u00eb \u2014 po ashtu, por e kemi m\u00ebsuar ta optimizojm\u00eb dhe tani nuk kemi m\u00eb kujdes. N\u00ebse \u00ebsht\u00eb e mundur, kaloni te ruajtja objekt S3.<\/p>\n<h2>3. Mblidhni imazhe t\u00eb optimizuara<\/h2>\n<p><img decoding=\"async\" alt=\"N\u00ebnt\u00eb k\u00ebshilla p\u00ebr rritjen e produktivitetit t\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/c25ce405d1eb4c01f031e18b0bfa4836.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>M\u00eb mir\u00eb \u00ebsht\u00eb t\u00eb p\u00ebrdoren imazhe t\u00eb optimizuara p\u00ebr kontejner\u00ebt, n\u00eb m\u00ebnyr\u00eb q\u00eb Kubernetes t\u00eb mund t'i nxjerr\u00eb ato m\u00eb shpejt dhe t'i ekzekutoj\u00eb m\u00eb efikasht.&nbsp;<\/p>\n<p>Optimizimi do t\u00eb thot\u00eb q\u00eb imazhet:<\/p>\n<ul>\n<li>\n<p>p\u00ebrmbajn\u00eb vet\u00ebm nj\u00eb aplikacion ose kryejn\u00eb vet\u00ebm nj\u00eb funksion;<\/p>\n<\/li>\n<li>\n<p>jan\u00eb t\u00eb vogla, sepse imazhet e m\u00ebdha p\u00ebrhapen m\u00eb keq n\u00eb rrjet;<\/p>\n<\/li>\n<li>\n<p>kan\u00eb pika fundore p\u00ebr kontrollin e funksionit dhe gatishm\u00ebris\u00eb, me ndihm\u00ebn e t\u00eb cilave Kubernetes mund t\u00eb nd\u00ebrmarr\u00eb veprime n\u00eb rast t\u00eb nd\u00ebrprerjeve;<\/p>\n<\/li>\n<li>\n<p>p\u00ebrdorin sisteme operative t\u00eb p\u00ebrshtatshme p\u00ebr kontejner\u00ebt (si Alpine ose CoreOS), t\u00eb cilat jan\u00eb m\u00eb t\u00eb q\u00ebndrueshme ndaj gabimeve n\u00eb konfigurim.<\/p>\n<\/li>\n<li>\n<p>p\u00ebrdorin nd\u00ebrtimet me shum\u00eb etapa, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb mund t\u00eb shp\u00ebrndani vet\u00ebm aplikacionet e kompiluar dhe jo burimet e shoq\u00ebruara.<\/p>\n<\/li>\n<\/ul>\n<p>Ka shum\u00eb mjete dhe sh\u00ebrbime q\u00eb lejojn\u00eb t\u00eb kontrolloni dhe optimizoni imazhet n\u00eb flukso. \u00cbsht\u00eb e r\u00ebnd\u00ebsishme q\u00eb t'i mbani gjithmon\u00eb ato t\u00eb azhurnuara dhe t\u00eb verifikuara p\u00ebr sigurin\u00eb. Si rezultat, merrni: <\/p>\n<ol>\n<li>\n<p>Reduktimi i ngarkes\u00ebs n\u00eb rrjet p\u00ebr t\u00eb gjith\u00eb klasterin.<\/p>\n<\/li>\n<li>\n<p>P\u00ebrmir\u00ebsimi i koh\u00ebs s\u00eb nisjes s\u00eb kontenierit.<\/p>\n<\/li>\n<li>\n<p>V\u00ebllimi m\u00eb i vog\u00ebl i t\u00eb gjith\u00eb regjistrit tuaj Docker.<\/p>\n<\/li>\n<\/ol>\n<h2>4. P\u00ebrdorni cache DNS<\/h2>\n<p><img decoding=\"async\" alt=\"N\u00ebnt\u00eb k\u00ebshilla p\u00ebr rritjen e produktivitetit t\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/9f4384462a77dc528d7911c56f684f2d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>N\u00ebse flasim p\u00ebr ngarkesa t\u00eb larta, pa optimizimin e sistemit DNS t\u00eb klasterit, \u00ebsht\u00eb mjaft e v\u00ebshtir\u00eb. Disa koh\u00eb m\u00eb par\u00eb, zhvilluesit e Kubernetes mb\u00ebshtet\u00ebn zgjidhjen e tyre kube-dns. Kjo ishte implementuar edhe nga ne, por ky softwar nuk u optimizua si\u00e7 duhet dhe nuk ofronte performanc\u00ebn e nevojshme, megjith\u00ebse, duket se detyra ishte e thjesht\u00eb. Pastaj erdhi coredns, n\u00eb t\u00eb cilin kaluam dhe u lirua nga shqet\u00ebsimet, m\u00eb pas ai u b\u00eb sh\u00ebrbimi DNS i parazgjedhur n\u00eb K8s. N\u00eb nj\u00eb moment arrit\u00ebm deri n\u00eb 40,000 rps n\u00eb sistemin DNS, dhe kjo zgjidhje gjithashtu filloi t\u00eb mos mjaftonte. Por, p\u00ebr nj\u00eb rast t\u00eb lumtur, doli Nodelocaldns, ai \u00ebsht\u00eb cache lokal i nodit, ai gjithashtu <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/nodelocaldns\/\">NodeLocal DNSCache<\/a><\/noindex>.<\/p>\n<p>Pse e p\u00ebrdorim k\u00ebt\u00eb? N\u00eb b\u00ebrtham\u00ebn Linux ka nj\u00eb defekt q\u00eb, me shum\u00eb k\u00ebrkesa p\u00ebrmes conntrack NAT n\u00eb UDP, shkakton nj\u00eb gjendje garash p\u00ebr t\u00eb shkruar n\u00eb tabelat conntrack, dhe nj\u00eb pjes\u00eb e trafikut p\u00ebrmes NAT humbet (\u00e7do k\u00ebrkes\u00eb p\u00ebrmes Sh\u00ebrbimit \u2014 \u00ebsht\u00eb NAT). Nodelocaldns zgjidh k\u00ebt\u00eb problem duke eliminuar NAT dhe duke p\u00ebrmir\u00ebsuar lidhjen n\u00eb TCP me DNS upstream, si dhe duke ruajtur n\u00eb cache k\u00ebrkesat DNS p\u00ebr upstream (duke p\u00ebrfshir\u00eb nj\u00eb cache negativ t\u00eb shkurt\u00ebr 5-sekond\u00ebsh).<\/p>\n<h2>5. Shkall\u00ebzoni pod-et automatikisht n\u00eb m\u00ebnyr\u00eb horizontale dhe vertikale.<\/h2>\n<p><img decoding=\"async\" alt=\"N\u00ebnt\u00eb k\u00ebshilla p\u00ebr rritjen e produktivitetit t\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/3804a14685a55160fa7d9f3226eab1fa.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>A mund t\u00eb thoni me siguri se t\u00eb gjitha mikro-sh\u00ebrbimet tuaja jan\u00eb t\u00eb gatshme p\u00ebr nj\u00eb rritje dy deri n\u00eb tri her\u00eb t\u00eb ngarkes\u00ebs? Si t\u00eb ndani burimet m\u00eb s\u00eb miri p\u00ebr aplikacionet tuaja? T\u00eb mbani disa pod-e t\u00eb aktivizuara p\u00ebrtej ngarkes\u00ebs mund t\u00eb jet\u00eb e tepruar, nd\u00ebrsa t\u00eb mbani n\u00eb kufij rrezikon ndalimin p\u00ebr shkak t\u00eb rritjes s\u00eb papritur t\u00eb trafikut n\u00eb sh\u00ebrbim. Nj\u00eb mesatare e art\u00eb ndihmohet nga formulimi i zmadhuar t\u00eb k\u00ebtyre sh\u00ebrbimeve si <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/tasks\/run-application\/horizontal-pod-autoscale\/\">Horizontal Pod Autoscaler<\/a><\/noindex> dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/autoscaler\/tree\/master\/vertical-pod-autoscaler\">Vertical Pod Autoscaler<\/a><\/noindex>. <\/p>\n<p><strong>VPA<\/strong> lejon automatikisht rritjen e requests\/limits t\u00eb kontener\u00ebve tuaj n\u00eb pod n\u00eb var\u00ebsi t\u00eb p\u00ebrdorimit t\u00eb faktik. Si mund t\u00eb jet\u00eb kjo e dobishme? N\u00ebse keni pod q\u00eb p\u00ebr arsye t\u00eb caktuara nuk mund t\u00eb skalen horizontalisht (t\u00eb cilat nuk jan\u00eb krejt\u00ebsisht t\u00eb besueshme), mund t\u00eb provoni t'i besoni VPA-s\u00eb p\u00ebr ndryshimin e burimeve t\u00eb tij. Karakteristika e tij q\u00ebndron n\u00eb sistemin e rekomandimeve bazuar n\u00eb t\u00eb dh\u00ebnat historike dhe aktuale nga metric-server, k\u00ebshtu q\u00eb, n\u00ebse nuk d\u00ebshiron t\u00eb ndryshosh automatikisht requests\/limits, mund thjesht t\u00eb ndjek\u00ebsh burimet e rekomanduara p\u00ebr konteiner\u00ebt tuaj dhe t\u00eb optimizosh cil\u00ebsimet p\u00ebr kursimin e CPU-s dhe memorjes n\u00eb klaster. <\/p>\n<p><img decoding=\"async\" alt=\"N\u00ebnt\u00eb k\u00ebshilla p\u00ebr rritjen e produktivitetit t\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/3965950aa3315faa4bb3e3ff5bd61955.png\" style=\"display:block;margin: 0 auto;\" \/>Imazhi \u00ebsht\u00eb marr\u00eb nga https:\/\/levelup.gitconnected.com\/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231<\/p>\n<p>Planifikuesi n\u00eb Kubernetes gjithmon\u00eb bazohet n\u00eb requests. \u00c7do vler\u00eb q\u00eb vendosni atje, planifikuesi do t\u00eb k\u00ebrkoj\u00eb nj\u00eb nod\u00eb t\u00eb p\u00ebrshtatshme bazuar n\u00eb at\u00eb. Vlerat e limits jan\u00eb t\u00eb nevojshme p\u00ebr kubeletin p\u00ebr t\u00eb kuptuar kur t\u00eb kufizoj\u00eb ose t\u00eb vras\u00eb nj\u00eb pod. Dhe pasi parametri i vet\u00ebm i r\u00ebnd\u00ebsish\u00ebm \u00ebsht\u00eb vlera e requests, VPA do t\u00eb punoj\u00eb me t\u00eb. Sa her\u00eb q\u00eb p\u00ebrcaktoni shkall\u00ebzimin vertikal t\u00eb aplikacionit, ju p\u00ebrcaktoni se \u00e7far\u00eb duhet t\u00eb jen\u00eb requests. Por \u00e7far\u00eb do t\u00eb ndodh\u00eb me limits? Ky parameter do t\u00eb shkall\u00ebzohet gjithashtu proporcionalisht.<\/p>\n<p>P\u00ebr shembull, ja konfigurimet e zakonshme t\u00eb nj\u00eb podi:<\/p>\n<pre><code>resources:\n   requests:\n     memory: 250Mi\n     cpu: 200m\n   limits:\n     memory: 500Mi\n     cpu: 350m<\/code><\/pre>\n<p>Mekanizmi i rekomandimeve p\u00ebrcakton se aplikacionit tuaj i nevojiten 300m CPU dhe 500Mi p\u00ebr t\u00eb funksionuar normalisht. Do t\u00eb merrni k\u00ebto konfigurime:<\/p>\n<pre><code>resources:\n   requests:\n     memory: 500Mi\n     cpu: 300m\n   limits:\n     memory: 1000Mi\n     cpu: 525m<\/code><\/pre>\n<p>Si\u00e7 u p\u00ebrmend m\u00eb sip\u00ebr, kjo \u00ebsht\u00eb shkall\u00ebzim proporcional bazuar n\u00eb raportin requests\/limits n\u00eb manifest:<\/p>\n<ul>\n<li>\n<p>CPU: 200m \u2192 300m: raporti 1:1.75;<\/p>\n<\/li>\n<li>\n<p>Memory: 250Mi \u2192 500Mi: raporti 1:2.<\/p>\n<\/li>\n<\/ul>\n<p>Sa i p\u00ebrket <strong>HPA<\/strong>, at\u00ebher\u00eb mekanizmi i funksionimit \u00ebsht\u00eb m\u00eb transparent. Vlerat kufitare t\u00eb metrikave, p\u00ebr shembull, t\u00eb procesor\u00ebve dhe memories, vendosen, dhe n\u00ebse vlera mesatare e t\u00eb gjitha replikave kalon kufirin, aplikacioni p\u00ebrmir\u00ebsohet me +1 pod derisa vlera t\u00eb bjer\u00eb n\u00ebn kufirin, ose derisa t\u00eb arrihet numri maksimal i replikave.<\/p>\n<p><img decoding=\"async\" alt=\"N\u00ebnt\u00eb k\u00ebshilla p\u00ebr rritjen e produktivitetit t\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/f7a3fa28177d66be925867e38f5bbed6.png\" style=\"display:block;margin: 0 auto;\" \/>Imazhi \u00ebsht\u00eb marr\u00eb nga https:\/\/levelup.gitconnected.com\/kubernetes-autoscaling-101-cluster-autoscaler-horizontal-pod-autoscaler-and-vertical-pod-2a441d9ad231<\/p>\n<p>P\u00ebrve\u00e7 metrikave t\u00eb zakonshme, si procesori dhe memoria, ju mund t\u00eb konfiguroni kufijt\u00eb p\u00ebr metrikat tuaja t\u00eb personalizuara nga Prometheus dhe t\u00eb punoni me to, n\u00ebse e konsideroni k\u00ebt\u00eb p\u00ebrcaktim m\u00eb t\u00eb sakt\u00eb p\u00ebr kur duhet t\u00eb p\u00ebrmir\u00ebsoni aplikacionin tuaj. Pasi aplikacioni t\u00eb stabilizohet n\u00ebn kufirin e caktuar t\u00eb metrik\u00ebs, HPA do t\u00eb filloj\u00eb t\u00eb reduktoj\u00eb pod-et deri n\u00eb numrin minimal t\u00eb replikave ose deri n\u00eb gjendjen kur ngarkesa do t\u00eb p\u00ebrmbush\u00eb kufirin e caktuar.<\/p>\n<h2>6. Mos harroni p\u00ebr Node Affinity dhe Pod Affinity<\/h2>\n<p><img decoding=\"async\" alt=\"N\u00ebnt\u00eb k\u00ebshilla p\u00ebr rritjen e produktivitetit t\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/e718191d9e8ff25fd3b2d65cba9b3b73.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Nuk t\u00eb gjitha nodet punojn\u00eb me t\u00eb nj\u00ebjtin hardware, dhe jo t\u00eb gjitha podet duhet t\u00eb ekzekutojn\u00eb aplikacione q\u00eb k\u00ebrkojn\u00eb llogaritje intensive. Kubernetes lejon p\u00ebrcaktimin e specializimit t\u00eb nodave dhe pod\u00ebve me an\u00eb t\u00eb <strong>Node Affinity<\/strong> dhe <strong>Pod Affinity<\/strong>.<\/p>\n<p>N\u00ebse keni nod\u00eb t\u00eb p\u00ebrshtatshme p\u00ebr operacione me intensitet t\u00eb lart\u00eb, p\u00ebr efikasitet maksimal \u00ebsht\u00eb m\u00eb mir\u00eb t\u00eb lidhni aplikacionet me nodat p\u00ebrkat\u00ebse. P\u00ebrdorni <code>nodeSelector<\/code> me etiket\u00ebn e nod\u00ebs.<\/p>\n<p>Le t\u00eb themi se keni dy nod\u00eb: nj\u00eb me <code>CPUType=HIGHFREQ<\/code> dhe shum\u00eb b\u00ebrthama t\u00eb shpejta, dhe nj\u00eb tjet\u00ebr me <code>MemoryType=HIGHMEMORY<\/code> nj\u00eb sasi t\u00eb madhe memorie dhe performanc\u00eb m\u00eb t\u00eb lart\u00eb. M\u00eb e leht\u00eb \u00ebsht\u00eb t\u00eb caktoni shp\u00ebrndarjen e pod-it te nodi <code>HIGHFREQ<\/code>, duke shtuar n\u00eb seksionin <code>spec<\/code> nj\u00eb selektor t\u00eb till\u00eb:<\/p>\n<pre><code>\u2026\nnodeSelector:\n\tCPUType: HIGHFREQ<\/code><\/pre>\n<p>Nj\u00eb m\u00ebnyr\u00eb m\u00eb t\u00eb kushtueshme dhe specifike p\u00ebr ta b\u00ebr\u00eb k\u00ebt\u00eb \u00ebsht\u00eb t\u00eb p\u00ebrdorni <code>n\u00eb diskun e atij nodi, t\u00eb cilit d\u00ebshirojm\u00eb t'i lidhim Prometheus: n\u00eb shembull \u00ebsht\u00eb e caktuar<\/code> n\u00eb fush\u00ebn <code>affinity<\/code> n\u00eb seksionin <code>spec<\/code>. Ka dy opsione:<\/p>\n<ul>\n<li>\n<p><code>requiredDuringSchedulingIgnoredDuringExecution<\/code>: konfigurim i ngurt\u00eb (planifikuesi do t\u00eb shp\u00ebrndaj\u00eb pod-et vet\u00ebm n\u00eb nodat specifike (dhe askund tjet\u00ebr));<\/p>\n<\/li>\n<li>\n<p><code>preferredDuringSchedulingIgnoredDuringExecution<\/code>: konfigurim i but\u00eb (planifikuesi do t\u00eb p\u00ebrpiqet t\u00eb shp\u00ebrndaj\u00eb n\u00eb nodat specifike, dhe n\u00ebse nuk arrin, do t\u00eb p\u00ebrpiqet t\u00eb shp\u00ebrndaj\u00eb n\u00eb nodin tjet\u00ebr t\u00eb disponuesh\u00ebm).<\/p>\n<\/li>\n<\/ul>\n<p>Mund t\u00eb p\u00ebrcaktoni nj\u00eb sintaks\u00eb t\u00eb caktuar p\u00ebr menaxhimin e etiketave t\u00eb nod\u00ebs, p\u00ebr shembull, <code>In<\/code>, <code>NotIn<\/code>, <code>Exists<\/code>, <code>DoesNotExist<\/code>, <code>Gt<\/code> ose <code>Lt<\/code>. Megjithat\u00eb, mbani mend se metodat e nd\u00ebrlikuara n\u00eb lista t\u00eb gjata etiketash do ta ngadal\u00ebsojn\u00eb vendimmarrjen n\u00eb situata kritike. Me fjal\u00eb t\u00eb tjera, mos e kompliko.<\/p>\n<p>Si\u00e7 u p\u00ebrmend m\u00eb sip\u00ebr, Kubernetes lejon t\u00eb caktosh ngjashm\u00ebrin\u00eb e pods aktuale. N\u00eb thelb, mund t\u00eb b\u00ebsh q\u00eb disa pods t\u00eb punojn\u00eb s\u00eb bashku me pods t\u00eb tjera n\u00eb t\u00eb nj\u00ebjt\u00ebn zon\u00eb disponibiliteti (relevante p\u00ebr cloud) ose nodes.<\/p>\n<p>N\u00eb <code>podAffinity<\/code> fushat <code>affinity<\/code> n\u00eb seksionin <code>spec<\/code> jan\u00eb t\u00eb disponueshme t\u00eb nj\u00ebjtat fusha si n\u00eb rastin e <code>n\u00eb diskun e atij nodi, t\u00eb cilit d\u00ebshirojm\u00eb t'i lidhim Prometheus: n\u00eb shembull \u00ebsht\u00eb e caktuar<\/code>: <code>requiredDuringSchedulingIgnoredDuringExecution<\/code><strong> <\/strong>dhe <code>preferredDuringSchedulingIgnoredDuringExecution<\/code>. Dallimi i vet\u00ebm \u00ebsht\u00eb se <code>matchExpressions<\/code> do t\u00eb ngjis\u00eb pods n\u00eb node-n\u00eb ku tashm\u00eb ekzekutohet nj\u00eb pod me at\u00eb etiket\u00eb.<\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, Kubernetes ofron fush\u00ebn <code>podAntiAffinity<\/code>, e cila, nga ana tjet\u00ebr, nuk e ngjis\u00eb podin n\u00eb nodet me pods t\u00eb caktuara.<\/p>\n<p>Sa i p\u00ebrket shprehjeve <code>n\u00eb diskun e atij nodi, t\u00eb cilit d\u00ebshirojm\u00eb t'i lidhim Prometheus: n\u00eb shembull \u00ebsht\u00eb e caktuar<\/code> mund t\u00eb jepet e nj\u00ebjta k\u00ebshill\u00eb: p\u00ebrpiquni t\u00eb ruani thjesht\u00ebsin\u00eb dhe logjik\u00ebn e rregullave, mos u p\u00ebrpoqni t\u00eb mbushni specifikimin e pods me nj\u00eb grup t\u00eb nd\u00ebrlikuar rregullash. \u00cbsht\u00eb shum\u00eb e leht\u00eb t\u00eb krijosh nj\u00eb rregull q\u00eb nuk do t\u00eb p\u00ebrputhet me kushtet e klasterit, duke krijuar nj\u00eb ngarkes\u00eb t\u00eb tepruar mbi planifikuesin dhe duke zvog\u00ebluar p\u00ebrgjith\u00ebsisht performanc\u00ebn.<\/p>\n<h2>7. Taints &amp; Tolerations<\/h2>\n<p>Ka nj\u00eb m\u00ebnyr\u00eb tjet\u00ebr p\u00ebr t\u00eb menaxhuar caktuesin. N\u00ebse keni nj\u00eb grumbull t\u00eb madh me qindra nyje dhe mij\u00ebra mikrosh\u00ebrbime, \u00ebsht\u00eb shum\u00eb e v\u00ebshtir\u00eb t\u00eb parandaloni q\u00eb disa pod\u00eb t\u00eb vendosen n\u00eb disa nyje t\u00eb caktuara.<\/p>\n<p>Mekanizmi taints ndihmon n\u00eb k\u00ebt\u00eb. P\u00ebr shembull, n\u00eb disa skenar\u00eb mund t\u00eb ndaloni q\u00eb disa nyje t\u00eb ekzekutojn\u00eb pod\u00eb t\u00eb caktuara. P\u00ebr t\u00eb aplikuar nj\u00eb taint n\u00eb nj\u00eb nyje specifike, duhet t\u00eb p\u00ebrdorni opsionin <code>taint<\/code> n\u00eb kubectl. Specifikoni \u00e7el\u00ebsin dhe vler\u00ebn, dhe pastaj taint si <code>NoSchedule<\/code> ose <code>NoExecute<\/code>:<\/p>\n<pre><code>$ kubectl taint nodes node10 node-role.kubernetes.io\/ingress=true:NoSchedule<\/code><\/pre>\n<p>N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, vlen t\u00eb theksohet se mekanizmi taint mb\u00ebshtet tre efekte kryesore: <code>NoSchedule<\/code>, <code>NoExecute<\/code> dhe <code>PreferNoSchedule<\/code><strong>. <\/strong><\/p>\n<ul>\n<li>\n<p><code>NoSchedule<\/code><strong> <\/strong>do t\u00eb thot\u00eb se derisa n\u00eb specifikimin e podit t\u00eb mos ket\u00eb nj\u00eb sh\u00ebnim p\u00ebrkat\u00ebs <code>tolerations<\/code>, ai nuk do t\u00eb mund t\u00eb vendoset n\u00eb nyje (n\u00eb k\u00ebt\u00eb rast <code>node10<\/code>).<\/p>\n<\/li>\n<li>\n<p><code>PreferNoSchedule <\/code>\u2014 nj\u00eb version i thjeshtuar <code>NoSchedule<\/code>. N\u00eb k\u00ebt\u00eb rast, caktuesi do t\u00eb p\u00ebrpiqet t\u00eb mos shp\u00ebrndaj\u00eb pod\u00ebt q\u00eb nuk kan\u00eb nj\u00eb sh\u00ebnim p\u00ebrkat\u00ebs <code>tolerations<\/code> n\u00eb nyje, por kjo nuk \u00ebsht\u00eb nj\u00eb kufizim i rrept\u00eb. N\u00ebse n\u00eb grumbull nuk ka burime, at\u00ebher\u00eb pod\u00ebt do t\u00eb fillojn\u00eb t\u00eb vendosen n\u00eb k\u00ebt\u00eb nyje.<\/p>\n<\/li>\n<li>\n<p><code>NoExecute<\/code><strong> <\/strong>\u2014 ky efekt aktivizon nj\u00eb evakuim t\u00eb menj\u00ebhersh\u00ebm t\u00eb pod\u00ebve q\u00eb nuk kan\u00eb nj\u00eb sh\u00ebnim p\u00ebrkat\u00ebs. <code>tolerations<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u00cbsht\u00eb interesante q\u00eb kjo sjellje mund t\u00eb anulohet me mekanizmin e tolerancave. Kjo \u00ebsht\u00eb e dobishme kur ka nj\u00eb nod\u00eb \"t\u00eb ndaluar\" dhe ju nevojitet t\u00eb vendosni aty vet\u00ebm sh\u00ebrbimet infrastrukturore. Si ta b\u00ebni k\u00ebt\u00eb? Lejoni vet\u00ebm ato pod-e p\u00ebr t\u00eb cilat ka toleranc\u00eb p\u00ebrkat\u00ebse.<\/p>\n<p>Ja si do t\u00eb duket specifikimi i podit:<\/p>\n<pre><code>spec:\n   tolerations:\n     - key: \"node-role.kubernetes.io\/ingress\"\n        operator: \"Equal\"\n        value: \"true\"\n        effect: \"NoSchedule\"<\/code><\/pre>\n<p>Kjo nuk do t\u00eb thot\u00eb se n\u00eb depolimin e ardhsh\u00ebm pod-i do t\u00eb bjer\u00eb sakt\u00ebsisht n\u00eb k\u00ebt\u00eb nod\u00eb, nuk \u00ebsht\u00eb mekanizmi i Node Affinity dhe <code>nodeSelector<\/code>. Por duke kombinuar disa karakteristika, mund t\u00eb arrini nj\u00eb konfigurim shum\u00eb fleksib\u00ebl t\u00eb planifikuesit.<\/p>\n<h2>8. Konfiguroni prioritetin e zhvillimit t\u00eb pod-eve<\/h2>\n<p>Ajo q\u00eb keni konfiguroni lidhjen e pod-eve me nodat, nuk do t\u00eb thot\u00eb se t\u00eb gjitha pod-et duhet t\u00eb p\u00ebrpunohen me t\u00eb nj\u00ebjtin prioritet. P\u00ebr shembull, mund t\u00eb d\u00ebshironi t\u00eb zhvilloni disa pod-e p\u00ebrpara t\u00eb tjer\u00ebve.<\/p>\n<p>Kubernetes ofron m\u00ebnyra t\u00eb ndryshme p\u00ebr t\u00eb konfiguruar prioritetin e pod-eve (Pod Priority and Preemption). Konfigurimi p\u00ebrb\u00ebhet nga disa pjes\u00eb: objekti <code>PriorityClass<\/code><strong> <\/strong>dhe p\u00ebrshkrimi i fush\u00ebs <code>priorityClassName<\/code><strong> <\/strong>n\u00eb specifikimin e podit. Le t\u00eb shohim nj\u00eb shembull:<\/p>\n<pre><code>apiVersion: scheduling.k8s.io\/v1\nkind: PriorityClass\nmetadata:\n  name: high-priority\nvalue: 99999\nglobalDefault: false\ndescription: \"Kjo klas\u00eb prioriteti duhet t\u00eb p\u00ebrdoret vet\u00ebm p\u00ebr pod-t\u00eb shum\u00eb t\u00eb r\u00ebnd\u00ebsish\u00ebm\"<\/code><\/pre>\n<p>Ne krijojm\u00eb <code>PriorityClass<\/code>, i japim emrin, p\u00ebrshkrimin dhe vler\u00ebn e tij.<strong> <\/strong>Sa m\u00eb e lart\u00eb <code>vlera<\/code>, aq m\u00eb i lart\u00eb \u00ebsht\u00eb prioriteti. Vlera mund t\u00eb jet\u00eb \u00e7do num\u00ebr i plot\u00eb 32-bit\u00ebsh, m\u00eb i vog\u00ebl ose i barabart\u00eb me 1 000 000 000. Vlerat m\u00eb t\u00eb larta rezervohen p\u00ebr pod-t\u00eb sistemik\u00eb kritik\u00eb, t\u00eb cil\u00ebt, si rregull, nuk mund t\u00eb z\u00ebvend\u00ebsohen.<strong> <\/strong>Z\u00ebvend\u00ebsimi do t\u00eb ndodh\u00eb vet\u00ebm n\u00ebse pod-i me prioritet t\u00eb lart\u00eb nuk ka vend p\u00ebr t'u implementuar, at\u00ebher\u00eb nj\u00eb pjes\u00eb e pod-eve nga nj\u00eb nod\u00eb specifike do t\u00eb evakuohet. N\u00ebse ky mekaniz\u00ebm \u00ebsht\u00eb shum\u00eb i ashp\u00ebr p\u00ebr ju, mund t\u00eb shtoni opsionin <code>preemptionPolicy: Never<\/code>, dhe at\u00ebher\u00eb do t\u00eb mos ket\u00eb z\u00ebvend\u00ebsim, pod-i do t\u00eb k\u00ebrkoj\u00eb p\u00ebr burime t\u00eb lira kur planifikuesi t\u00eb gjej\u00eb.<\/p>\n<p>Pas k\u00ebsaj, krijojm\u00eb nj\u00eb pod, ku specifikojm\u00eb emrin <code>priorityClassName<\/code>:<\/p>\n<pre><code>apiVersion: v1\nkind: Pod\nmetadata:\n  name: static-web\n  labels:\n    role: myrole\n spec:\n  containers:\n    - name: web\n      image: nginx\n      ports:\n        - name: web\n          containerPort: 80\n          protocol: TCP\n  priorityClassName: high-priority\n          <\/code><\/pre>\n<p>Mund t\u00eb krijoni sa m\u00eb shum\u00eb klasa prioritare t\u00eb d\u00ebshironi, megjithat\u00eb rekomandohet t\u00eb mos e teproni me k\u00ebt\u00eb (p.sh., t\u00eb kufizoheni n\u00eb prioritet t\u00eb ul\u00ebt, mesatar dhe t\u00eb lart\u00eb). <\/p>\n<p>K\u00ebshtu, n\u00eb rast nevoje, do t\u00eb keni mund\u00ebsi t\u00eb rrisni efektivitetin e shp\u00ebrndarjes s\u00eb sh\u00ebrbimeve kritike, si p.sh. nginx-ingress-controller, coredns etj.<\/p>\n<h2>9. Optimizoni klasterin ETCD<\/h2>\n<p><img decoding=\"async\" alt=\"N\u00ebnt\u00eb k\u00ebshilla p\u00ebr rritjen e produktivitetit t\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/f5917adfa943c789b6c784f43305851b.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>ETCD mund t\u00eb quhet truri i gjith\u00eb klasterit. \u00cbsht\u00eb shum\u00eb e r\u00ebnd\u00ebsishme t\u00eb mbani funksionalitetin e k\u00ebsaj baze t\u00eb dh\u00ebnash n\u00eb nj\u00eb nivel t\u00eb lart\u00eb, sepse pik\u00ebrisht nga ajo varet shpejt\u00ebsia e operacioneve n\u00eb \"Kube\". Nj\u00eb zgjidhje standarde dhe e mir\u00eb do t\u00eb ishte t\u00eb mbani klasterin ETCD n\u00eb nodat master, n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb keni vones\u00ebn minimale deri te kube-apiserver. N\u00ebse nuk \u00ebsht\u00eb e mundur, poziciononi ETCD sa m\u00eb af\u00ebr q\u00eb t\u00eb jet\u00eb e mundur, duke pasur nj\u00eb kapacitet t\u00eb mir\u00eb kalimi midis pjes\u00ebmarr\u00ebsve. Gjithashtu, kushtojini v\u00ebmendje numrit t\u00eb nodave t\u00eb ETCD q\u00eb mund t\u00eb dalin jasht\u00eb funksionit pa d\u00ebm p\u00ebr klasterin.<\/p>\n<p><img decoding=\"async\" alt=\"N\u00ebnt\u00eb k\u00ebshilla p\u00ebr rritjen e produktivitetit t\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/cdd2c32eefed253c6ff774899c367ccc.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Kini parasysh se rritja e tep\u00ebrt e numrit t\u00eb pjes\u00ebmarr\u00ebsve n\u00eb klaster mund t\u00eb rris\u00eb q\u00ebndrueshm\u00ebrin\u00eb, por me kosto p\u00ebrperformanc\u00ebn, gjith\u00e7ka duhet t\u00eb jet\u00eb n\u00eb mas\u00eb.<\/p>\n<p>Kur flasim p\u00ebr konfigurimin e sh\u00ebrbimit, rekomandimet jan\u00eb t\u00eb pakta:<\/p>\n<ol>\n<li>\n<p>T\u00eb keni pajisje t\u00eb mira, n\u00eb p\u00ebrputhje me p\u00ebrmasat e klasterit (mund t\u00eb lexoni) <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/etcd-io\/etcd\/blob\/master\/Documentation\/op-guide\/hardware.md\">k\u00ebtu<\/a><\/noindex>).<\/p>\n<\/li>\n<li>\n<p>Rregulloni disa parametra n\u00ebse keni shp\u00ebrndar\u00eb klasterin n\u00eb disa DC ose n\u00ebse rrjeti dhe disk\u00ebt tuaj nuk jan\u00eb n\u00eb nivelin e duhur (mund t\u00eb lexoni <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/etcd-io\/etcd\/blob\/master\/Documentation\/tuning.md\">k\u00ebtu<\/a><\/noindex>).<\/p>\n<\/li>\n<\/ol>\n<h2>P\u00ebrfundimi<\/h2>\n<p>Ky artikull p\u00ebrshkruan piketat q\u00eb ekipi yn\u00eb p\u00ebrpiqet t\u00eb respektoj\u00eb. Kjo nuk \u00ebsht\u00eb nj\u00eb udh\u00ebzues hap pas hapi, por mund\u00ebsi q\u00eb mund t\u00eb jen\u00eb t\u00eb dobishme p\u00ebr optimizimin e kostove t\u00eb klasterit. E kuptojm\u00eb se \u00e7do klaster \u00ebsht\u00eb unik, dhe vendimet p\u00ebr konfigurim mund t\u00eb ndryshojn\u00eb ndjesh\u00ebm, prandaj do t\u00eb ishte interesante t\u00eb merrnim nga ju nj\u00eb feedback: si e monitoroni klasterin tuaj Kubernetes, me \u00e7far\u00eb e p\u00ebrmir\u00ebsoni funksionimin e tij. Ndani p\u00ebrvoj\u00ebn tuaj n\u00eb komentet, do t\u00eb ishte interesante ta dim\u00eb. <\/p>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/domclick\/blog\/520968\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041e\u043b\u0435\u0433 \u0421\u0438\u0434\u043e\u0440\u0435\u043d\u043a\u043e\u0432, \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041c\u044b \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u043c \u00ab\u041a\u0443\u0431\u0438\u043a\u00bb \u0432 \u043f\u0440\u043e\u0434\u0435 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0451\u0445 \u043b\u0435\u0442, \u0438 \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0436\u0438\u043b\u0438 \u0441 \u043d\u0438\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u043e\u0432\u0435\u0434\u0430\u044e \u0432\u0430\u043c, \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0436\u0430\u0442\u044c \u0438\u0437 \u00ab\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e\u00bb Kubernetes \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. Ready steady [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":97983,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-97982","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041e\u043b\u0435\u0433 \u0421\u0438\u0434\u043e\u0440\u0435\u043d\u043a\u043e\u0432, \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041c\u044b \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u043c \u00ab\u041a\u0443\u0431\u0438\u043a\u00bb \u0432 \u043f\u0440\u043e\u0434\u0435 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0451\u0445 \u043b\u0435\u0442, \u0438 \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0436\u0438\u043b\u0438 \u0441 \u043d\u0438\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u043e\u0432\u0435\u0434\u0430\u044e \u0432\u0430\u043c, \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0436\u0430\u0442\u044c \u0438\u0437 \u00ab\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e\u00bb Kubernetes \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. Ready steady\" \/>\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\/sq\/blog\/administrirovanie\/devyat-sovetov-po-povysheniyu-proizvoditelnosti-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\udd47\u0414\u0435\u0432\u044f\u0442\u044c \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u043f\u043e \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041e\u043b\u0435\u0433 \u0421\u0438\u0434\u043e\u0440\u0435\u043d\u043a\u043e\u0432, \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041c\u044b \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u043c \u00ab\u041a\u0443\u0431\u0438\u043a\u00bb \u0432 \u043f\u0440\u043e\u0434\u0435 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0451\u0445 \u043b\u0435\u0442, \u0438 \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0436\u0438\u043b\u0438 \u0441 \u043d\u0438\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u043e\u0432\u0435\u0434\u0430\u044e \u0432\u0430\u043c, \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0436\u0430\u0442\u044c \u0438\u0437 \u00ab\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e\u00bb Kubernetes \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. Ready steady\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/devyat-sovetov-po-povysheniyu-proizvoditelnosti-kubernetes\" \/>\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-10-23T12:42:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-11-17T22:58:47+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\udd47N\u00ebnt\u00eb k\u00ebshilla p\u00ebr rritjen e performanc\u00ebs Kubernetes | ProHoster","description":"P\u00ebrsh\u00ebndetje t\u00eb gjith\u00ebve! M\u00eb quajn\u00eb Oleg Sidorenkov, punoj n\u00eb kompanin\u00eb DomKlik si drejtues i ekipit t\u00eb infrastruktur\u00ebs. Ne kemi p\u00ebrdorur \"Kubik\" n\u00eb prodhimin p\u00ebr m\u00eb shum\u00eb se tre vjet dhe gjat\u00eb k\u00ebsaj kohe kemi kaluar shum\u00eb momente interesante me t\u00eb. Sot do t'ju tregoj se si, me qasje t\u00eb duhur, mund t\u00eb nxjerrim m\u00eb shum\u00eb performanc\u00eb nga Kubernetes \"vanilje\" p\u00ebr klasterin tuaj. Gati, filluam!","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/devyat-sovetov-po-povysheniyu-proizvoditelnosti-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\udd47\u0414\u0435\u0432\u044f\u0442\u044c \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u043f\u043e \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 Kubernetes | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041c\u0435\u043d\u044f \u0437\u043e\u0432\u0443\u0442 \u041e\u043b\u0435\u0433 \u0421\u0438\u0434\u043e\u0440\u0435\u043d\u043a\u043e\u0432, \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 \u0414\u043e\u043c\u041a\u043b\u0438\u043a \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. \u041c\u044b \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u0435\u043c \u00ab\u041a\u0443\u0431\u0438\u043a\u00bb \u0432 \u043f\u0440\u043e\u0434\u0435 \u0443\u0436\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0440\u0451\u0445 \u043b\u0435\u0442, \u0438 \u0437\u0430 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0436\u0438\u043b\u0438 \u0441 \u043d\u0438\u043c \u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u043e\u0432\u0435\u0434\u0430\u044e \u0432\u0430\u043c, \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0436\u0430\u0442\u044c \u0438\u0437 \u00ab\u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e\u00bb Kubernetes \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. Ready steady","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/devyat-sovetov-po-povysheniyu-proizvoditelnosti-kubernetes","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-10-23T12:42:15+00:00","article:modified_time":"2020-11-17T22:58:47+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"97982","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 10:08:27","updated":"2022-09-30 17:30:03"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/97982","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=97982"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/97982\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/97983"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=97982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=97982"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=97982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}