{"id":94262,"date":"2020-09-14T19:42:34","date_gmt":"2020-09-14T17:42:34","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod"},"modified":"2020-09-14T19:42:34","modified_gmt":"2020-09-14T17:42:34","slug":"kak-poluchit-dostup-k-resursam-kubernetes-pod","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","title":{"rendered":"\ud83e\udd47Deepin 20 | ProHoster","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"\ud83e\udd47Deepin 20 | ProHoster\" src=\"\/wp-content\/uploads\/2020\/09\/3d6760d512ef456daad121f7d1ddbcf8.jpg\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" href=\"https:\/\/www.deviantart.com\/tohad\/art\/The-Reward-549720998\"><i>Shperblimi nga Tohad<\/i><\/a><\/noindex><\/p>\n<p>N\u00eb fillim t\u00eb pun\u00ebs me Kubernetes, zakonisht harrohet p\u00ebr konfigurimin e burimeve t\u00eb konteiner\u00ebve. N\u00eb k\u00ebt\u00eb stad mjafton t\u00eb sigurohemi q\u00eb imazhi Docker funksionon dhe mund t\u00eb vendoset n\u00eb grupin Kubernetes.<\/p>\n<p>Por m\u00eb von\u00eb, aplikacioni k\u00ebrkohet t\u00eb vendoset n\u00eb grupin e prodhimit s\u00eb bashku me aplikacione t\u00eb tjera. P\u00ebr k\u00ebt\u00eb, \u00ebsht\u00eb e nevojshme t\u00eb shk\u00ebputen burime p\u00ebr konteinerin dhe t\u00eb sigurohemi se ato jan\u00eb t\u00eb mjaftueshme p\u00ebr t\u00eb nisur dhe operuar aplikacionin, dhe q\u00eb aplikacionet e tjera t\u00eb p\u00ebrfshira nuk kan\u00eb t\u00eb papriturat.<\/p>\n<p>Ekipa <noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/\">Kubernetes aaS nga Mail.ru<\/a><\/noindex> p\u00ebrktheu artikullin mbi burimet e konteiner\u00ebve (CPU &amp; MEM), k\u00ebrkesat dhe kufizimet e burimeve. Do t\u00eb m\u00ebsoni se cilat jan\u00eb avantazhet e k\u00ebtyre konfigurimeve dhe \u00e7far\u00eb do ndodh\u00eb n\u00ebse nuk i vendosni.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Burimet llogarit\u00ebse<\/h2>\n<p>\nNe kemi dy lloje burimesh me nj\u00ebsit\u00eb e m\u00ebposhtme:<\/p>\n<ul>\n<li>Procesori Qendror (CPU) \u2014 b\u00ebrthamat;<\/li>\n<li>Memoria (MEM) \u2014 bajt\u00ebt.<\/li>\n<\/ul>\n<p>\nBurimet p\u00ebrcaktohen p\u00ebr secilin konteiner. N\u00eb skedarin YAML t\u00eb Podit do t\u00eb shihni seksionin e burimeve, i cili p\u00ebrmban burimet e k\u00ebrkuara dhe kufizuese:<\/p>\n<ul>\n<li>Burimet e k\u00ebrkuara t\u00eb Podit = shuma e burimeve t\u00eb k\u00ebrkuara nga t\u00eb gjith\u00eb konteiner\u00ebt;<\/li>\n<li>Burimet e kufizuara t\u00eb Podit = shuma e burimeve t\u00eb kufizuara nga t\u00eb gjith\u00eb konteiner\u00ebt.<\/li>\n<\/ul>\n<p><\/p>\n<pre><code class=\"plaintext\">apiVersion: v1\nkind: Pod\nmetadata:\n  name: backend-pod-name\n  labels:\n    application: backend\nspec:\n  containers:\n    \u2014 name: main-container\n      image: my-backend\n      tag: v1\n      ports:\n      \u2014 containerPort: 8080\n      resources:\n        requests:\n          cpu: 0.2 # REQUESTED CPU: 200m cores\n          memory: &quot;1Gi&quot; # REQUESTED MEM: 1Gi\n        limits:\n          cpu: 1 # MAX CPU USAGE: 1 core\n          memory: &quot;1Gi&quot; # MAX MEM USAGE:  1Gi\n    \u2014 name: other-container\n      image: other-app\n      tag: v1\n      ports:\n      \u2014 containerPort: 8000\n      resources:\n        requests:\n          cpu: &quot;200m&quot; # REQUESTED CPU: 200m cores\n          memory: &quot;0.5Gi&quot; # REQUESTED MEM: 0.5Gi\n        limits:\n          cpu: 1 # MAX CPU USAGE: 1 core\n          memory: &quot;1Gi&quot; # MAX MEM USAGE:  1Gi<\/code><\/pre>\n<p>Shembulli i burimeve t\u00eb k\u00ebrkuara dhe t\u00eb kufizuara<\/p>\n<p>Fusha <code>resources.requested<\/code> nga specifikimi i Pod \u2014 nj\u00eb nga element\u00ebt, q\u00eb p\u00ebrdoren p\u00ebr t\u00eb gjetur nodin e duhur. Aty mund t\u00eb planifikohet vendosja e Podit. Si gjejn\u00eb nodin e p\u00ebrshtatsh\u00ebm?<\/p>\n<p>Kubernetes p\u00ebrb\u00ebhet nga disa komponente, duke p\u00ebrfshir\u00eb nj\u00eb nod kryesor ose master-nod (Kubernetes Control Plane). N\u00eb master-nod ka disa procese: kube-apiserver, kube-controller-manager dhe kube-scheduler. <\/p>\n<p>Procesi kube-scheduler \u00ebsht\u00eb p\u00ebrgjegj\u00ebs p\u00ebr shqyrtimin e moduleve t\u00eb sapo krijuara dhe gjetjen e mundshmeve t\u00eb nod\u00ebve t\u00eb pun\u00ebs q\u00eb i p\u00ebrmbushin t\u00eb gjitha k\u00ebrkesat e moduleve, p\u00ebrfshir\u00eb numrin e burimeve t\u00eb k\u00ebrkuara. Lista e nod\u00ebve, e gjetur nga kube-scheduler, renditet. Pod planifikohet n\u00eb nodin me pik\u00ebt m\u00eb t\u00eb larta.<\/p>\n<p><img decoding=\"async\" alt=\"\ud83e\udd47Deepin 20 | ProHoster\" src=\"\/wp-content\/uploads\/2020\/09\/b489991a3cbbd5359c99701886d488e5.jpg\" style=\"display:block;margin: 0 auto;\" \/>Ku do t\u00eb vendoset Pod-i purpurt?<\/p>\n<p>N\u00eb imazh, duket se kube-scheduler duhet t\u00eb planifikoj\u00eb nj\u00eb Pod t\u00eb ri purpurt. Klusteri Kubernetes p\u00ebrmban dy nyje: A dhe B. Si\u00e7 mund t\u00eb vini re, kube-scheduler nuk mund ta planifikoj\u00eb Pod-in n\u00eb nyjen A \u2014 burimet e disponueshme (t\u00eb paplota) nuk p\u00ebrputhen me k\u00ebrkesat e Pod-it purpurt. K\u00ebshtu, 1 GB memorie e k\u00ebrkuar nga Pod-i purpurt nuk do t\u00eb p\u00ebrshtatet n\u00eb nyjen A, pasi v\u00ebllimi i disponuesh\u00ebm i memories \u00ebsht\u00eb 0,5 GB. Por nyja B ka burime t\u00eb mjaftueshme. N\u00eb fund, kube-scheduler vendos se vendi i destinacionit t\u00eb Pod-it purpurt \u00ebsht\u00eb nyja B.<\/p>\n<p>Tani e dim\u00eb se si k\u00ebrkesat p\u00ebr burime ndikojn\u00eb n\u00eb zgjedhjen e nyjes p\u00ebr ekzekutimin e Pod-it. Por si ndikon kufiri i burimeve?<\/p>\n<p>Kufijt\u00eb e burimeve jan\u00eb kufiri q\u00eb CPU\/MEM nuk mund t\u00eb kaloj\u00eb. Megjithat\u00eb, burimi CPU \u00ebsht\u00eb fleksib\u00ebl, prandaj kontejner\u00ebt q\u00eb arrijn\u00eb kufijt\u00eb e CPU-s\u00eb nuk do t\u00eb \u00e7ojn\u00eb n\u00eb ndalimin e Pod-it. N\u00eb vend t\u00eb k\u00ebsaj, do t\u00eb nis\u00eb ngadal\u00ebsimi i CPU-s\u00eb. N\u00ebse arrihet kufiri i p\u00ebrdorimit t\u00eb MEM, at\u00ebher\u00eb kontejneri do t\u00eb ndalet p\u00ebr shkak t\u00eb OOM-Killer dhe do t\u00eb rinishet, n\u00ebse kjo lejohet nga konfigurimi i RestartPolicy.<\/p>\n<h2>K\u00ebrkesat dhe kufijt\u00eb p\u00ebr burime n\u00eb detaje<\/h2>\n<p>\n<img decoding=\"async\" alt=\"\ud83e\udd47Deepin 20 | ProHoster\" src=\"\/wp-content\/uploads\/2020\/09\/22e672100940e8895ae42a56a681111f.jpg\" style=\"display:block;margin: 0 auto;\" \/>Lidhja e burimeve midis Docker dhe Kubernetes<\/p>\n<p>M\u00ebnyra m\u00eb e mir\u00eb p\u00ebr t\u00eb shpjeguar se si funksionojn\u00eb k\u00ebrkesat dhe kufijt\u00eb p\u00ebr burime \u00ebsht\u00eb t\u00eb paraqes\u00ebsh lidhjen midis Kubernetes dhe Docker. N\u00eb figur\u00ebn e m\u00ebsip\u00ebrme mund t\u00eb shihni se si jan\u00eb t\u00eb lidhura fushat e Kubernetesit dhe flagat e nisjes s\u00eb Docker.<\/p>\n<h2>Memoria: k\u00ebrkes\u00eb dhe kufizim<\/h2>\n<p><\/p>\n<pre><code class=\"plaintext\">containers:\n...\n resources:\n   requests:\n     memory: &quot;0.5Gi&quot;\n   limits:\n     memory: &quot;1Gi&quot;\n<\/code><\/pre>\n<p>\nSi\u00e7 u p\u00ebrmend m\u00eb lart, memoria matet n\u00eb byte. Duke u bazuar n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/manage-resources-containers\/#meaning-of-memory\">dokumentacionin e Kubernetes<\/a><\/noindex>, ne mund ta shprehim memory-n si nj\u00eb num\u00ebr. Zakonisht \u00ebsht\u00eb e plot\u00eb, p\u00ebr shembull 2678 \u2014 do t\u00eb thot\u00eb 2678 byte. Mund t\u00eb p\u00ebrdorim gjithashtu sufiksat <code>G<\/code> dhe <code>Gi<\/code>, e r\u00ebnd\u00ebsishme \u00ebsht\u00eb t\u00eb kujtojm\u00eb se ato nuk jan\u00eb ekuivalente. E para \u00ebsht\u00eb dekadale, nd\u00ebrsa e dyta \u00ebsht\u00eb binare. Si shembull, i p\u00ebrmendur n\u00eb dokumentacionin e k8s: <code>128974848<\/code>, <code>129e6<\/code>, <code>129M<\/code>, <code>123Mi<\/code> \u2014 ato jan\u00eb praktikisht ekuivalente.<\/p>\n<p>Parametri i Kubernetes <code>limits.memory<\/code> p\u00ebrputhet me flamurin <code>--memory<\/code> nga Docker. N\u00eb rastin e <code>request.memory<\/code> nuk ka nj\u00eb arrow p\u00ebr Docker, pasi Docker nuk e p\u00ebrdor k\u00ebt\u00eb fush\u00eb. Mund t\u00eb pyesni, a \u00ebsht\u00eb e nevojshme kjo? Po, \u00ebsht\u00eb e nevojshme. Si\u00e7 e thash\u00eb, fusha ka r\u00ebnd\u00ebsi p\u00ebr Kubernetes. Bazuar n\u00eb informacionin nga ajo, kube-scheduler vendos se n\u00eb cil\u00ebn nyj\u00eb t\u00eb planifikoj\u00eb Pod-in.<\/p>\n<p><strong>\u00c7far\u00eb do ndodh\u00eb n\u00ebse vendosni nj\u00eb k\u00ebrkes\u00eb p\u00ebr memorie t\u00eb pamjaftueshme?<\/strong><\/p>\n<p>N\u00ebse kontejneri arrin kufijt\u00eb e memories s\u00eb k\u00ebrkuar, at\u00ebher\u00eb Pod-i vendoset n\u00eb grupin e Pod-eve q\u00eb ndalen kur nuk ka mjaftuesh\u00ebm memorie n\u00eb nod.<\/p>\n<p><strong>\u00c7far\u00eb ndodh n\u00ebse vendosni nj\u00eb kufi shum\u00eb t\u00eb vog\u00ebl p\u00ebr memorien?<\/strong><\/p>\n<p>N\u00ebse kontejneri e kalon kufirin e memorien, ai do t\u00eb mbyllet p\u00ebr shkak t\u00eb OOM-Killed. Dhe do t\u00eb rinstalohet n\u00ebse \u00ebsht\u00eb e mundur sipas RestartPolicy, ku vlera e paracaktuar \u00ebsht\u00eb <code>Gjithmon\u00eb<\/code>.<\/p>\n<p><strong>\u00c7far\u00eb do t\u00eb ndodh\u00eb n\u00ebse nuk specifikoni memorien e k\u00ebrkuar?<\/strong><\/p>\n<p>Kubernetes do t\u00eb marr\u00eb kufirin e memorien dhe do ta vendos\u00eb at\u00eb si vler\u00ebn e paracaktuar.<\/p>\n<p><strong>\u00c7far\u00eb mund t\u00eb ndodhi n\u00ebse nuk specifikoni kufirin e memoris\u00eb?<\/strong><\/p>\n<p>Kontejneri nuk ka kufij, mund t\u00eb p\u00ebrdor\u00eb sa m\u00eb shum\u00eb memorie q\u00eb d\u00ebshiron. N\u00ebse fillon t\u00eb p\u00ebrdor\u00eb gjith\u00eb memorien e disponueshme t\u00eb nodit, do t\u00eb vritet nga OOM. Pas k\u00ebsaj, kontejneri do t\u00eb rinstalohet, n\u00ebse \u00ebsht\u00eb e mundur sipas RestartPolicy.<\/p>\n<p><strong>\u00c7far\u00eb do t\u00eb ndodh\u00eb n\u00ebse nuk specifikoni kufijt\u00eb e memoris\u00eb?<\/strong><\/p>\n<p>Kjo \u00ebsht\u00eb skenari m\u00eb i keq: planifikuesi nuk e di sa burime i duhen kontejnerit, dhe kjo mund t\u00eb shkaktoj\u00eb probleme t\u00eb m\u00ebdha n\u00eb nod. N\u00eb k\u00ebt\u00eb rast, do t\u00eb ishte mir\u00eb t\u00eb keni kufij t\u00eb paracaktuar n\u00eb hap\u00ebsir\u00ebn em\u00ebrore (t\u00eb vendosura nga LimitRange). Nuk ka kufij t\u00eb paracaktuar \u2014 Pod-i nuk ka kufij, ai mund t\u00eb p\u00ebrdor\u00eb sa m\u00eb shum\u00eb memorie q\u00eb d\u00ebshiron.<\/p>\n<p>N\u00ebse memoria e k\u00ebrkuar \u00ebsht\u00eb m\u00eb e madhe se sa mund t\u00eb ofroj\u00eb nodi \u2014 Pod-i nuk do t\u00eb planifikohet. \u00cbsht\u00eb e r\u00ebnd\u00ebsishme t\u00eb mbani mend se <code>Requests.memory<\/code> nuk \u00ebsht\u00eb vlera minimale. Ky \u00ebsht\u00eb p\u00ebrshkrimi i sasis\u00eb s\u00eb memoris\u00eb e cila \u00ebsht\u00eb e mjaftueshme p\u00ebr funksionimin e vazhduesh\u00ebm t\u00eb kontejnerit. <\/p>\n<p>N\u00eb p\u00ebrgjith\u00ebsi, rekomandohet t\u00eb vendosni t\u00eb nj\u00ebjt\u00ebn vler\u00eb p\u00ebr <code>request.memory<\/code> dhe <code>limit.memory<\/code>. Me k\u00ebt\u00eb, Kubernetes nuk do t\u00eb planifikoj\u00eb Pod-in n\u00eb nj\u00eb nod q\u00eb ka mjaftuesh\u00ebm memorie p\u00ebr t\u00eb ekzekutuar Pod-in, por jo mjaft p\u00ebr ta mbajtur at\u00eb n\u00eb pun\u00eb. Mbani mend: gjat\u00eb planifikimit t\u00eb Pod-it, Kubernetes merr parasysh vet\u00ebm <code>requests.memory<\/code>, nd\u00ebrsa <code>limits.memory<\/code> nuk p\u00ebrfshin.<\/p>\n<h2>CPU: k\u00ebrkes\u00eb dhe kufizim<\/h2>\n<p><\/p>\n<pre><code class=\"plaintext\">containers:\n...\n resources:\n   requests:\n     cpu: 1\n   limits:\n     cpu: &quot;1200m&quot;\n<\/code><\/pre>\n<p>\nP\u00ebr CPU-n\u00eb \u00ebsht\u00eb pak m\u00eb e komplikuar. Duke u rikthyer tek figura q\u00eb tregon nd\u00ebrveprimin midis Kubernetes dhe Docker, mund t\u00eb vini re se <code>request.cpu<\/code> p\u00ebrputhet me <code>--cpu-shares<\/code>, nd\u00ebrsa <code>limit.cpu<\/code> p\u00ebrputhet me flamurin <code>cpus<\/code> n\u00eb Docker.<\/p>\n<p>CPU q\u00eb k\u00ebrkon Kubernetes, shum\u00ebzohet me 1024 - proporcioni i cikleve t\u00eb CPU. N\u00ebse d\u00ebshironi t\u00eb k\u00ebrkoni 1 b\u00ebrtham\u00eb t\u00eb plot\u00eb, duhet t\u00eb shtoni <code>cpu: 1<\/code>, si\u00e7 \u00ebsht\u00eb treguar m\u00eb lart. <\/p>\n<p>K\u00ebrkesa p\u00ebr nj\u00eb b\u00ebrtham\u00eb t\u00eb plot\u00eb (proporcioni = 1024) nuk do t\u00eb thot\u00eb se konteineri juaj do ta marr\u00eb at\u00eb. N\u00ebse sistemi juaj prit\u00ebs ka vet\u00ebm nj\u00eb b\u00ebrtham\u00eb dhe po p\u00ebrdorni m\u00eb shum\u00eb se nj\u00eb konteiner, at\u00ebher\u00eb t\u00eb gjitha kontenier\u00ebt duhet t\u00eb ndajn\u00eb CPU-n\u00eb e disponueshme midis tyre. Si ndodh kjo? Le t\u00eb shohim pamjen.<\/p>\n<p><img decoding=\"async\" alt=\"\ud83e\udd47Deepin 20 | ProHoster\" src=\"\/wp-content\/uploads\/2020\/09\/7f4b20642708ef3a7e773d7900161267.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nK\u00ebrkesa e CPU-s\u00eb \u2014 sistem i nj\u00eb b\u00ebrthame<\/p>\n<p>Imagjinoni se keni nj\u00eb sistem prit\u00ebs me nj\u00eb b\u00ebrtham\u00eb, n\u00eb t\u00eb cilin jan\u00eb aktivizuar kontenier\u00ebt. N\u00ebna (Kubernetes) b\u00ebri nj\u00eb tort\u00eb (CPU) dhe d\u00ebshiron ta ndaj\u00eb at\u00eb midis f\u00ebmij\u00ebve (kontenier\u00ebve). Tre f\u00ebmij\u00eb duan nj\u00eb tort\u00eb t\u00eb plot\u00eb (proporcioni = 1024), nj\u00eb f\u00ebmij\u00eb tjet\u00ebr do gjysm\u00ebn e tort\u00ebs (512). N\u00ebna d\u00ebshiron t\u00eb jet\u00eb e drejt\u00eb dhe b\u00ebn nj\u00eb llogaritje t\u00eb thjesht\u00eb.<\/p>\n<pre><code class=\"plaintext\"># \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0440\u043e\u0433\u043e\u0432 \u0445\u043e\u0442\u044f\u0442 \u0434\u0435\u0442\u0438?\n# 3 \u0440\u0435\u0431\u0435\u043d\u043a\u0430 \u0445\u043e\u0442\u044f\u0442 \u043f\u043e \u0446\u0435\u043b\u043e\u043c\u0443 \u043f\u0438\u0440\u043e\u0433\u0443 \u0438 \u0435\u0449\u0435 \u043e\u0434\u0438\u043d \u0445\u043e\u0447\u0435\u0442 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u043f\u0438\u0440\u043e\u0433\u0430\ncakesNumberKidsWant = (3 * 1) + (1 * 0.5) = 3.5\n# \u0412\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0430\u043a:\n3 (\u0440\u0435\u0431\u0435\u043d\u043a\u0430\/\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430) * 1 (\u0446\u0435\u043b\u044b\u0439 \u043f\u0438\u0440\u043e\u0433\/\u043f\u043e\u043b\u043d\u043e\u0435 \u044f\u0434\u0440\u043e) + 1 (\u0440\u0435\u0431\u0435\u043d\u043e\u043a\/\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440) * 0.5 (\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043f\u0438\u0440\u043e\u0433\u0430\/\u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u044f\u0434\u0440\u0430)\n# \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0440\u043e\u0433\u043e\u0432 \u0438\u0441\u043f\u0435\u0447\u0435\u043d\u043e?\navailableCakesNumber = 1\n# \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u0438\u0440\u043e\u0433\u0430 (\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e) \u0434\u0435\u0442\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c?\nnewMaxRequest = 1 \/ 3.5 =~ 28%<\/code><\/pre>\n<p>\nSipas llogaritjes, tre f\u00ebmij\u00eb do t\u00eb marrin nga 28% e b\u00ebrtham\u00ebs, e jo nga nj\u00eb b\u00ebrtham\u00eb e plot\u00eb. F\u00ebmija i kat\u00ebrt do t\u00eb marr\u00eb 14% nga b\u00ebrthama e plot\u00eb, e jo gjysm\u00ebn. Por gjith\u00e7ka do t\u00eb jet\u00eb ndryshe n\u00ebse keni nj\u00eb sistem me shum\u00eb b\u00ebrthama.<\/p>\n<p><img decoding=\"async\" alt=\"\ud83e\udd47Deepin 20 | ProHoster\" src=\"\/wp-content\/uploads\/2020\/09\/7bf71d97add9adcf7cf0260941526590.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nK\u00ebrkesa e CPU-s\u00eb \u2014 sistem me shum\u00eb b\u00ebrthama (4)<\/p>\n<p>N\u00eb figur\u00ebn lart, shihet se tre f\u00ebmij\u00eb duan nj\u00eb tort\u00eb t\u00eb plot\u00eb, nd\u00ebrsa nj\u00eb f\u00ebmij\u00eb tjet\u00ebr d\u00ebshiron gjysm\u00ebn. P\u00ebr shkak se n\u00ebna b\u00ebri kat\u00ebr torta, \u00e7do f\u00ebmij\u00eb do t\u00eb marr\u00eb aq sa d\u00ebshiron. N\u00eb nj\u00eb sistem me shum\u00eb b\u00ebrthama, burimet e procesorit ndahen n\u00eb t\u00eb gjitha b\u00ebrthamat e disponueshme. N\u00ebse nj\u00eb konteiner \u00ebsht\u00eb i kufizuar me m\u00eb pak se nj\u00eb b\u00ebrtham\u00eb t\u00eb plot\u00eb t\u00eb CPU-s\u00eb, ai mund ta p\u00ebrdor\u00eb at\u00eb gjithsesi n\u00eb 100%. <\/p>\n<p>Llogaritjet e m\u00ebsip\u00ebrme jan\u00eb thjeshtuar p\u00ebr t\u00eb kuptuar se si shp\u00ebrndahen CPU-n\u00eb midis konteiner\u00ebve. Sigurisht, p\u00ebrve\u00e7 kontenier\u00ebve vet\u00eb, ka edhe procese t\u00eb tjera q\u00eb gjithashtu p\u00ebrdorin burimet e CPU-s\u00eb. Kur proceset n\u00eb nj\u00eb konteiner jan\u00eb n\u00eb pritje, t\u00eb tjer\u00ebt mund t'i p\u00ebrdorin burimet e tij. <code>CPU: &quot;200m&quot;<\/code> p\u00ebrputhet me <code>CPU: 0,2<\/code>, q\u00eb do t\u00eb thot\u00eb rreth 20% e nj\u00eb b\u00ebrthame.<\/p>\n<p>Tani le t\u00eb flasim p\u00ebr <code>limit.cpu<\/code>. CPU, q\u00eb kufizohet nga Kubernetes, shum\u00ebzohet me 100. Rezultati \u00ebsht\u00eb sasia e koh\u00ebs q\u00eb konteineri mund t\u00eb p\u00ebrdor\u00eb \u00e7do 100 mikros dhe (<code>cpu-period<\/code>). <\/p>\n<p><code>limit.cpu<\/code> p\u00ebrputhet me flamurin e Docker-it <code>--cpus<\/code>. Kjo \u00ebsht\u00eb nj\u00eb kombinim i ri i t\u00eb vjetrave <code>--cpu-period<\/code> dhe <code>--cpu-quota<\/code>. Duke e vendosur, ne tregojm\u00eb se sa burime t\u00eb disponueshme t\u00eb CPU-s\u00eb nj\u00eb konteiner mund t\u00eb p\u00ebrdor\u00eb maksimalisht deri sa t\u00eb filloj\u00eb kufizimi:<\/p>\n<ul>\n<li><strong>cpus<\/strong> \u2014 kombinimi <code>cpu-period<\/code> dhe <code>cpu-quota. cpus = 1.5<\/code> \u00ebsht\u00eb ekvivalente me vendosjen <code>cpu-period = 100000<\/code> dhe <code>cpu-quota = 150000<\/code>;<\/li>\n<li><strong>cpu-period<\/strong> \u2014 periudha <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Completely_Fair_Scheduler\">e planifikuesit t\u00eb CPU CFS<\/a><\/noindex>, sipas parazgjedhjes 100 mikrosekonda;<\/li>\n<li><strong>cpu-quota<\/strong> \u2014 numri i mikrosekondave brenda <code>cpu-period<\/code>, t\u00eb cilit i \u00ebsht\u00eb kufizuar konteineri.<\/li>\n<\/ul>\n<p>\n<strong>\u00c7far\u00eb do t\u00eb ndodhte n\u00ebse vendosni nj\u00eb CPU t\u00eb pamjaftuesh\u00ebm?<\/strong><\/p>\n<p>N\u00ebse konteineri ka nevoj\u00eb p\u00ebr m\u00eb shum\u00eb se sa \u00ebsht\u00eb vendosur, ai do t\u00eb vjedh\u00eb CPU nga procese t\u00eb tjera.<\/p>\n<p><strong>\u00c7far\u00eb do t\u00eb ndodhte n\u00ebse vendosni nj\u00eb kufi t\u00eb pamjaftuesh\u00ebm p\u00ebr CPU?<\/strong><\/p>\n<p>Duke qen\u00eb se burimi i CPU \u00ebsht\u00eb i rregulluesh\u00ebm, do t\u00eb aktivizohet throttling.<\/p>\n<p><strong>\u00c7far\u00eb do t\u00eb ndodhte n\u00ebse nuk specifikoni k\u00ebrkes\u00ebn p\u00ebr CPU?<\/strong><\/p>\n<p>Si\u00e7 ndodh me kujtes\u00ebn, vlera e k\u00ebrkes\u00ebs \u00ebsht\u00eb e barabart\u00eb me kufirin.<\/p>\n<p><strong>\u00c7far\u00eb do t\u00eb ndodhte n\u00ebse nuk specifikoni kufirin p\u00ebr CPU?<\/strong><\/p>\n<p>Konteineri do t\u00eb p\u00ebrdor\u00eb aq CPU sa i nevojitet. N\u00ebse n\u00eb hap\u00ebsir\u00ebn e emrave \u00ebsht\u00eb p\u00ebrcaktuar nj\u00eb politik\u00eb e parazgjedhur p\u00ebr CPU (LimitRange), at\u00ebher\u00eb ky kufi p\u00ebrdoret gjithashtu p\u00ebr konteinerin.<\/p>\n<p><strong>\u00c7far\u00eb do t\u00eb ndodhte n\u00ebse nuk specifikoni as k\u00ebrkes\u00ebn dhe as kufirin p\u00ebr CPU?<\/strong><\/p>\n<p>Si\u00e7 ndodh me kujtes\u00ebn, ky \u00ebsht\u00eb skenari m\u00eb i keq. Planifikuesi nuk e di se sa burime i duhen konteinerit tuaj dhe kjo mund t\u00eb shkaktoj\u00eb probleme serioze n\u00eb nod\u00eb. P\u00ebr ta shmangur k\u00ebt\u00eb, duhet t\u00eb vendosni kufij t\u00eb parazgjedhur p\u00ebr hap\u00ebsirat e emrave (LimitRange).<\/p>\n<p>Mbani mend: n\u00ebse k\u00ebrkoni m\u00eb shum\u00eb CPU se sa nodet mund t\u00eb ofrojn\u00eb, at\u00ebher\u00eb Pod-i nuk do t\u00eb planifikohet. <code>Requests.cpu<\/code> \u2014 nuk \u00ebsht\u00eb nj\u00eb vler\u00eb minimale, por nj\u00eb vler\u00eb e mjaftueshme p\u00ebr t\u00eb funksionuar Pod-i pa nd\u00ebrprerje. N\u00ebse aplikacioni nuk b\u00ebn llogaritje t\u00eb komplikuara, opsioni m\u00eb i mir\u00eb \u00ebsht\u00eb t\u00eb vendosni <code>request.cpu &lt;= 1<\/code> dhe t\u00eb lancioni sa m\u00eb shum\u00eb replika sa \u00ebsht\u00eb e nevojshme.<\/p>\n<h2>Sasia ideale e burimeve t\u00eb k\u00ebrkuara ose kufirit t\u00eb burimeve<\/h2>\n<p>\nNe m\u00ebsuam rreth kufizimeve t\u00eb burimeve kompjuterike. Tani \u00ebsht\u00eb koha p\u00ebr t\u00eb p\u00ebrgjigjur n\u00eb pyetjen: \"Sa burime i nevojiten Pod-it tim p\u00ebr t\u00eb funksionuar aplikacioni pa probleme? Sa \u00ebsht\u00eb sasia ideale?\". <\/p>\n<p>Fatkeq\u00ebsisht, nuk ka p\u00ebrgjigje t\u00eb qarta p\u00ebr k\u00ebto pyetje. N\u00ebse nuk e dini se si funksionon aplikacioni juaj, sa CPU ose kujtes\u00eb i nevojitet, opsioni m\u00eb i mir\u00eb \u00ebsht\u00eb t'i jepni aplikacionit shum\u00eb kujtes\u00eb dhe CPU dhe pastaj t\u00eb b\u00ebni testime t\u00eb performanc\u00ebs.<\/p>\n<p>P\u00ebrve\u00e7 testeve t\u00eb performanc\u00ebs, gjat\u00eb nj\u00eb jave monitoroni sjelljen e aplikacionit n\u00eb monitorim. N\u00ebse grafiket tregojn\u00eb se aplikacioni juaj konsumon m\u00eb pak burime se sa keni k\u00ebrkuar, at\u00ebher\u00eb mund t\u00eb reduktoni numrin e CPU ose kujtes\u00ebs t\u00eb k\u00ebrkuar.<\/p>\n<p>Si nj\u00eb shembull, shihni k\u00ebt\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/grafana.com\/grafana\/dashboards\/7187\">dashboard Grafana<\/a><\/noindex>. Ai tregon diferenc\u00ebn midis burimeve t\u00eb k\u00ebrkuara ose kufirit t\u00eb burimeve dhe p\u00ebrdorimit aktual t\u00eb burimeve.<\/p>\n<h2>P\u00ebrfundim<\/h2>\n<p>\nK\u00ebrkesa dhe kufizimi i burimeve ndihmojn\u00eb n\u00eb mbajtjen e funksionimit t\u00eb Kubernetes klaster. Konfigurimi i sakt\u00eb i limiteve minimizon shpenzimet dhe mban vazhdimisht aplikacionet n\u00eb pun\u00eb.<\/p>\n<p>N\u00eb p\u00ebrmbledhje, duhet t\u00eb mbani mend disa pika:<\/p>\n<ol>\n<li>Burimet e k\u00ebrkuara jan\u00eb konfigurimi q\u00eb merret parasysh gjat\u00eb nisjes (kur Kubernetes planifikon vendosjen e aplikacionit). N\u00eb an\u00ebn tjet\u00ebr, kufizimi i burimeve \u00ebsht\u00eb i r\u00ebnd\u00ebsish\u00ebm gjat\u00eb funksionimit \u2014 kur aplikacioni tashm\u00eb \u00ebsht\u00eb nisur n\u00eb nyj\u00eb.<\/li>\n<li>N\u00eb krahasim me memorjen, CPU \u00ebsht\u00eb nj\u00eb burim i rregulluesh\u00ebm. N\u00eb rast se ka munges\u00eb CPU, Pod-i juaj nuk do t\u00eb ndaloj\u00eb pun\u00ebn, do t\u00eb aktivizohet mekanizmi i kontrollit t\u00eb kapacitetit.<\/li>\n<li>Burimet e k\u00ebrkuara dhe kufizimi i burimeve nuk jan\u00eb vlera minimale dhe maksimale! Duke caktuar burimet e k\u00ebrkuara, ju garantoni q\u00eb aplikacioni do t\u00eb funksionoj\u00eb pa probleme.<\/li>\n<li>Nj\u00eb praktik\u00eb e mir\u00eb \u00ebsht\u00eb t\u00eb vendosni k\u00ebrkes\u00ebn p\u00ebr memorje t\u00eb barabart\u00eb me kufizimin e memorjes.<\/li>\n<li>\u00cbsht\u00eb mir\u00eb t\u00eb vendosni k\u00ebrkes\u00ebn <code>CPU &lt;=1<\/code>, n\u00ebse aplikacioni nuk kryen llogaritje komplekse.<\/li>\n<li>N\u00ebse k\u00ebrkoni m\u00eb shum\u00eb burime se sa ka n\u00eb nyj\u00eb, Pod-i nuk do t\u00eb planifikohet kurr\u00eb n\u00eb k\u00ebt\u00eb nyj\u00eb.<\/li>\n<li>P\u00ebr t\u00eb p\u00ebrcaktuar sasin\u00eb e sakt\u00eb t\u00eb burimeve t\u00eb k\u00ebrkuara\/kufizimeve t\u00eb burimeve, p\u00ebrdorni testimin e ngarkes\u00ebs dhe monitorimin.<\/li>\n<\/ol>\n<p>\nShpresoj se ky artikull do t'ju ndihmoj\u00eb t\u00eb kuptoni konceptin e p\u00ebrgjithsh\u00ebm t\u00eb kufizimit t\u00eb burimeve. Dhe ju do t\u00eb jeni n\u00eb gjendje t\u00eb aplikoni k\u00ebto njohuri n\u00eb pun\u00ebn tuaj.<\/p>\n<p>Suksese!<\/p>\n<p><strong>\u00c7far\u00eb tjet\u00ebr mund t\u00eb lexoni:<\/strong><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/500504\/\">V\u00ebzhgueshm\u00ebria SRE: hap\u00ebsirat e emrave dhe struktura e metrikave<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/blog\/poleznye-instrumenty-dlya-kubernetes\">90+ mjete t\u00eb dobishme p\u00ebr Kubernetes: shp\u00ebrndarje, menaxhim, monitorim, siguri dhe m\u00eb shum\u00eb<\/a><\/noindex>.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/tele.click\/k8s_mail\">Kanalin ton\u00eb Rreth Kubernetes n\u00eb Telegram<\/a><\/noindex>.<\/li>\n<\/ol>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/516014\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>The Reward by Tohad \u0412 \u043d\u0430\u0447\u0430\u043b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 Kubernetes \u043e\u0431\u044b\u0447\u043d\u043e \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. \u041d\u0430 \u044d\u0442\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0437 Docker \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 Kubernetes. \u041d\u043e \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432 \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u0435\u043d \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0438 \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f, \u0447\u0442\u043e \u0438\u0445 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":94263,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-94262","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=\"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\/kak-poluchit-dostup-k-resursam-kubernetes-pod\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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\u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c Kubernetes Pod | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod\" \/>\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-09-14T17:42:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-14T17:42:34+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\udd47Si t\u00eb qaseni n\u00eb burimet e Kubernetes Pod | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","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\u041a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c Kubernetes Pod | ProHoster","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/kak-poluchit-dostup-k-resursam-kubernetes-pod","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-09-14T17:42:34+00:00","article:modified_time":"2020-09-14T17:42:34+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"94262","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 11:30:27","updated":"2022-10-02 18:20:09","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/94262","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=94262"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/94262\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/94263"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=94262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=94262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=94262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}