{"id":70831,"date":"2020-02-21T14:42:15","date_gmt":"2020-02-21T11:42:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/obnovlenie-kubernetes-klastera-bez-prostoya"},"modified":"2020-03-03T16:14:45","modified_gmt":"2020-03-03T13:14:45","slug":"obnovlenie-kubernetes-klastera-bez-prostoya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/obnovlenie-kubernetes-klastera-bez-prostoya","title":{"rendered":"\u0420\u0435\u0441hoejimi Kubernetes klasterit pa paq\u00eb Duhsh","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"\u0420\u0435\u0441hoejimi Kubernetes klasterit pa paq\u00eb Duhsh\" src=\"\/wp-content\/uploads\/2020\/02\/53cdba726a58c16679c6443191f28321.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><em>Procesi i p\u00ebrdit\u00ebsimit p\u00ebr klasterin tuaj Kubernetes<\/em><\/p>\n<p><\/p>\n<p>N\u00eb nj\u00eb moment gjat\u00eb p\u00ebrdorimit t\u00eb klasterit Kubernetes, lind nevoja p\u00ebr t\u00eb p\u00ebrdit\u00ebsuar nodet q\u00eb punojn\u00eb. Kjo mund t\u00eb p\u00ebrfshij\u00eb p\u00ebrdit\u00ebsime t\u00eb paketave, p\u00ebrdit\u00ebsimin e b\u00ebrtham\u00ebs ose shp\u00ebrndarjen e imazheve t\u00eb reja t\u00eb makinave virtuale. N\u00eb terminologjin\u00eb e Kubernetes, kjo quhet <noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/disruptions\/#voluntary-and-involuntary-disruptions\">\"Prishm\u00ebria Vullnetare\"<\/a><\/noindex>.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Ky post \u00ebsht\u00eb pjes\u00eb e nj\u00eb cikli me 4 poste:<\/p>\n<p><\/p>\n<ol>\n<li>Ky post.<\/li>\n<li>Mbyllja e duhur e pod\u2019eve n\u00eb klasterin Kubernetes<\/li>\n<li>Mbyllja e vonuar e pod-it gjat\u00eb fshirjes s\u00eb tij<\/li>\n<li>Si t\u00eb evitoni ndonj\u00eb shk\u00ebputje gjat\u00eb funksionimit t\u00eb klasterit Kubernetes me ndihm\u00ebn e PodDisruptionBudgets<\/li>\n<\/ol>\n<p><\/p>\n<p><em>(sh\u00ebnim: p\u00ebrkthimet e artikujve t\u00eb tjer\u00eb t\u00eb ciklit priteshin s\u00eb shpejti)<\/em><\/p>\n<p><\/p>\n<p>N\u00eb k\u00ebt\u00eb artikull do t\u00eb p\u00ebrshkruajm\u00eb t\u00eb gjitha mjetet q\u00eb ofron Kubernetes p\u00ebr t\u00eb arritur koh\u00eb zero shk\u00ebputje p\u00ebr nodet q\u00eb punojn\u00eb n\u00eb klasterin tuaj.<\/p>\n<p><\/p>\n<h2 id=\"opredelenie-problemy\">P\u00ebrcaktimi i problemit<\/h2>\n<p><\/p>\n<p>N\u00eb fillim do t\u00eb p\u00ebrdorim nj\u00eb qasje naive, duke p\u00ebrcaktuar problemet dhe duke vler\u00ebsuar rreziqet potenciale t\u00eb k\u00ebsaj qasjeje dhe duke grumbulluar njohuri p\u00ebr t\u00eb zgjidhur \u00e7do problem q\u00eb do t\u00eb hasim gjat\u00eb gjith\u00eb ciklit. Si rezultat, do t\u00eb marrim nj\u00eb konfigurim q\u00eb p\u00ebrdor lifecycle hooks, readiness probes dhe Pod disruption budgets p\u00ebr t\u00eb arritur koh\u00ebn ton\u00eb zero t\u00eb shk\u00ebputjes. <\/p>\n<p><\/p>\n<p>P\u00ebr t\u00eb filluar udh\u00ebtimin ton\u00eb, le t\u00eb marrim nj\u00eb shembull konkret. Supozoni se kemi nj\u00eb grumbull Kubernetes me dy n\u00f3d, ku \u00ebsht\u00eb e instaluar nj\u00eb aplikacion me dy pod-e, q\u00eb ndodhen pas <code>Sh\u00ebrbimi<\/code>:<\/p>\n<p>\n<img decoding=\"async\" alt=\"\u0420\u0435\u0441hoejimi Kubernetes klasterit pa paq\u00eb Duhsh\" src=\"\/wp-content\/uploads\/2020\/02\/f1eb999a0a088d7ed5b54c71e9b9ed1e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><em>T\u00eb fillojm\u00eb me dy pod\u2019e me Nginx dhe Sh\u00ebrbimi t\u00eb instaluar n\u00eb dy node t\u00eb klasterit ton\u00eb Kubernetes.<\/em><\/p>\n<p><\/p>\n<p>D\u00ebshirojm\u00eb t\u00eb p\u00ebrdit\u00ebsojm\u00eb versionin e b\u00ebrtham\u00ebs t\u00eb dy nod\u00ebve punues n\u00eb klasterin ton\u00eb. Si do ta b\u00ebjm\u00eb k\u00ebt\u00eb? Nj\u00eb zgjidhje e thjesht\u00eb do t\u00eb ishte t\u00eb ngarkonim node t\u00eb reja me konfigurim t\u00eb p\u00ebrdit\u00ebsuar dhe pastaj t\u00eb fiknim nodet e vjetra, duke e shoq\u00ebruar k\u00ebt\u00eb me aktivizimin e t\u00eb rinjve. Edhe pse kjo do t\u00eb funksiononte, do t\u00eb kishte disa probleme me k\u00ebt\u00eb qasje:<\/p>\n<p><\/p>\n<ul>\n<li>Kur t\u00eb fikni nodet e vjetra, pod\u2019et e instaluara mbi to do t\u00eb fik\u00ebn gjithashtu. \u00c7far\u00eb n\u00ebse pod\u2019\u00ebt duhet t\u00eb pastrohen p\u00ebr nj\u00eb shk\u00ebputje t\u00eb sakt\u00eb? Sistemi i virtualizimit q\u00eb po p\u00ebrdorni mund t\u00eb mos pres\u00eb n\u00eb p\u00ebrfundimin e procesit t\u00eb pastrimit.<\/li>\n<li>\u00c7far\u00eb n\u00ebse fikni t\u00eb gjitha nodet n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb? Do t\u00eb merrni nj\u00eb shk\u00ebputje t\u00eb konsiderueshme nd\u00ebrsa pod\u2019\u00ebt kalojn\u00eb n\u00eb nodet e reja.<\/li>\n<\/ul>\n<p><\/p>\n<p>Na necesitamos nj\u00eb m\u00ebnyr\u00eb t\u00eb sakt\u00eb p\u00ebr migrimin e pod-ve nga nodet e vjetra dhe duhet t\u00eb jemi t\u00eb sigurt se asnj\u00eb nga proceset tona t\u00eb pun\u00ebs nuk \u00ebsht\u00eb i aktivizuar nd\u00ebrsa b\u00ebm\u00eb ndryshime p\u00ebr nodin. Ose kur b\u00ebjm\u00eb nj\u00eb z\u00ebvend\u00ebsim t\u00eb plot\u00eb t\u00eb klasterit, si n\u00eb shembull (dmth z\u00ebvend\u00ebsojm\u00eb imazhet e VM), ne duam t\u00eb transferojm\u00eb aplikacionet aktive nga nodet e vjetra n\u00eb t\u00eb rinjt\u00eb. N\u00eb t\u00eb dyja rastet, ne duam t\u00eb parandalojm\u00eb planifikimin e pod-ve t\u00eb rinj n\u00eb nodet e vjetra dhe pastaj t\u00eb zhveshim t\u00eb gjith\u00eb pod-et e aktivizuara nga ato. P\u00ebr t\u00eb arritur k\u00ebto q\u00ebllime, ne mund t\u00eb p\u00ebrdorim komand\u00ebn <code>kubectl drain<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"pereraspredelenie-vseh-podov-s-nody\">Redistribuimi i t\u00eb gjitha pod-ve nga nodi<\/h2>\n<p><\/p>\n<p>Operacioni drain lejon redistribuimin e t\u00eb gjitha pod-ve nga nodi. Gjat\u00eb ekzekutimit t\u00eb drain, nodi etiket \u00ebsht\u00eb si unschedulable (flamuri <code>NoSchedule<\/code>). Kjo parandalon shfaqjen e pod-ve t\u00eb rinj. Pastaj drain fillon t\u00eb zhvesh\u00eb pod-et nga nodi, ndalon pun\u00ebn e kontejner\u00ebve q\u00eb aktualisht jan\u00eb t\u00eb aktivizuar n\u00eb nod dhe d\u00ebrgon sinjalin <code>TERM<\/code> kontejner\u00ebve n\u00eb pod.<\/p>\n<p><\/p>\n<p>Megjith\u00ebse <code>kubectl drain<\/code> p\u00ebrballohet mir\u00eb me zhveshjen e pod-ve, ka edhe dy faktor\u00eb t\u00eb tjer\u00eb q\u00eb mund t\u00eb shkaktojn\u00eb d\u00ebshtim gjat\u00eb ekzekutimit t\u00eb operacionit drain:<\/p>\n<p><\/p>\n<ul>\n<li>Aplikacioni juaj duhet t\u00eb jet\u00eb n\u00eb gjendje t\u00eb mbyllet sakt\u00eb kur merr sinjalin <code>TERM<\/code> kur zhveshen pod-et, Kubernetes d\u00ebrgon sinjalin <code>TERM<\/code> kontejner\u00ebve dhe pret ndalimin e tyre p\u00ebr nj\u00eb periudh\u00eb t\u00eb caktuar kohe, pas s\u00eb cil\u00ebs, n\u00ebse ata nuk jan\u00eb ndalur, i mbyll me forc\u00eb. N\u00eb \u00e7do rast, n\u00ebse kontejneri juaj nuk e percepton sinjalin sakt\u00eb, ju ende mund t\u00eb mbyllni pod-et n\u00eb m\u00ebnyr\u00eb t\u00eb pasakt\u00eb, n\u00ebse ata jan\u00eb aktiv\u00eb n\u00eb at\u00eb moment t\u00eb caktuar (p.sh., \u00ebsht\u00eb n\u00eb proces nj\u00eb transaksion n\u00eb DB).<\/li>\n<li>Ju humbni t\u00eb gjitha pod-et q\u00eb p\u00ebrmbajn\u00eb aplikacionin tuaj. Ajo mund t\u00eb jet\u00eb e pap\u00ebrshtatshme n\u00eb momentin kur aktivizohen kontejner\u00ebt e rinj n\u00eb nodet e reja ose, n\u00ebse pod-et tuaja jan\u00eb dislokuar pa kontroler\u00eb, ato mund t\u00eb mos rifillojn\u00eb n\u00eb t\u00ebr\u00ebsi. <\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"izbegaem-prostoya\">Parandalimi i koh\u00ebs s\u00eb ndalimit<\/h2>\n<p><\/p>\n<p>P\u00ebr t\u00eb minimizuar koh\u00ebn e ndalimit nga nd\u00ebrprerjet vullnetar\u00eb, si\u00e7 \u00ebsht\u00eb operacioni drain p\u00ebr nodin, Kubernetes ofron k\u00ebto mund\u00ebsi p\u00ebr trajtimin e defekteve:<\/p>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/pod\/#termination-of-pods\">Mbyllje e but\u00eb<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/containers\/container-lifecycle-hooks\/\">Hokot e ciklit t\u00eb jet\u00ebs<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/disruptions\/#how-disruption-budgets-work\">PodDisruptionBudgets<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>N\u00eb pjes\u00ebt e tjera t\u00eb ciklit do t\u00eb p\u00ebrdorim k\u00ebto funksione t\u00eb Kubernetes p\u00ebr t\u00eb leht\u00ebsuar pasojat e transferimit t\u00eb pod-ve. P\u00ebr ta b\u00ebr\u00eb m\u00eb t\u00eb leht\u00eb ndjekjen e mendimit kryesor, ne do t\u00eb p\u00ebrdorim shembullin ton\u00eb t\u00eb m\u00ebsip\u00ebrm me k\u00ebt\u00eb konfigurim burimor:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">---\napiVersion: apps\/v1\nkind: Deployment\nmetadata:\n name: nginx-deployment\n labels:\n   app: nginx\nspec:\n replicas: 2\n selector:\n   matchLabels:\n     app: nginx\n template:\n   metadata:\n     labels:\n       app: nginx\n   spec:\n     containers:\n     - name: nginx\n       image: nginx:1.15\n       ports:\n       - containerPort: 80\n---\nkind: Service\napiVersion: v1\nmetadata:\n name: nginx-service\nspec:\n selector:\n   app: nginx\n ports:\n - protocol: TCP\n   targetPort: 80\n   port: 80<\/code><\/pre>\n<p><\/p>\n<p>Kjo konfiguracion \u00ebsht\u00eb nj\u00eb shembull minimal <code>Zhvillimi<\/code>, i cili menaxhon pod\u2019t\u00eb nginx n\u00eb klaster. P\u00ebr m\u00eb tep\u00ebr, konfiguracioni p\u00ebrshkruan burimin <code>Sh\u00ebrbimi<\/code>, i cili mund t\u00eb p\u00ebrdoret p\u00ebr t\u00eb aksesuar pod\u2019t\u00eb nginx n\u00eb klaster.<\/p>\n<p><\/p>\n<p>Gjat\u00eb gjith\u00eb ciklit ne do t\u00eb zgjerim iterativ k\u00ebt\u00eb konfiguracion, q\u00eb n\u00eb fund t\u00eb p\u00ebrfshij\u00eb t\u00eb gjitha mund\u00ebsit\u00eb q\u00eb Kubernetes ofron p\u00ebr t\u00eb reduktuar koh\u00ebn e pap\u00ebrshkueshm\u00ebris\u00eb.<\/p>\n<p><\/p>\n<p><em>P\u00ebr t\u00eb marr\u00eb nj\u00eb version t\u00eb plot\u00eb t\u00eb implementuar dhe t\u00eb testuar t\u00eb p\u00ebrdit\u00ebsimeve t\u00eb klasterit Kubernetes p\u00ebr pap\u00ebrshkueshm\u00ebri zero n\u00eb AWS dhe burime t\u00eb tjera, vizitoni <noindex><a rel=\"nofollow\" href=\"https:\/\/gruntwork.io\/\">Gruntwork.io<\/a><\/noindex>.<\/em><\/p>\n<p><\/p>\n<h2 id=\"takzhe-chitayte-drugie-stati-v-nashem-bloge\">Lexoni gjithashtu artikuj t\u00eb tjer\u00eb n\u00eb blogun ton\u00eb:<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/481932\/\">Zero Downtime Deployment dhe bazat e t\u00eb dh\u00ebnave<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/480072\/\">Kubernetes: pse \u00ebsht\u00eb kaq e r\u00ebnd\u00ebsishme t\u00eb konfiguroni menaxhimin e burimeve t\u00eb sistemit?<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/481992\/\">Tekton Pipeline \u2014 pipelines native p\u00ebr Kubernetes<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/473578\/\">Nd\u00ebrtimi i moduleve dinamike p\u00ebr Nginx<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/473014\/\">Hyrja n\u00eb autorizimin e Kubernetes t\u00eb Hashicorp Consul<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/468779\/\">\u00c7far\u00eb solli migrimi nga ClickHouse pa autorizim n\u00eb ClickHouse me autorizim<\/a><\/noindex><\/li>\n<\/ul>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/nixys\/blog\/489164\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u044c \u0432 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0445 \u043d\u043e\u0434. \u041e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u044f\u0434\u0440\u0430 \u0438\u043b\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u044b\u0445 \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d. \u0412 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438 Kubernetes \u044d\u0442\u043e \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f &quot;Voluntary Disruption&quot;. \u042d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0430\u0441\u0442\u044c\u044e \u0446\u0438\u043a\u043b\u0430 \u0438\u0437 4 \u043f\u043e\u0441\u0442\u043e\u0432: \u042d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442. \u041a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b pod\u2019\u043e\u0432 \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":70832,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-70831","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.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e.\" \/>\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\/obnovlenie-kubernetes-klastera-bez-prostoya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\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\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0431\u0435\u0437 \u043f\u0440\u043e\u0441\u0442\u043e\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/obnovlenie-kubernetes-klastera-bez-prostoya\" \/>\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-02-21T11:42:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:45+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\udd47P\u00ebrdit\u00ebsimi i klasterit Kubernetes pa pap\u00ebrshkueshm\u00ebri | ProHoster","description":"Procesi i p\u00ebrdit\u00ebsimit p\u00ebr ju.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/obnovlenie-kubernetes-klastera-bez-prostoya","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\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0431\u0435\u0437 \u043f\u0440\u043e\u0441\u0442\u043e\u044f | ProHoster","og:description":"\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/obnovlenie-kubernetes-klastera-bez-prostoya","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-02-21T11:42:15+00:00","article:modified_time":"2020-03-03T13:14:45+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"70831","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 19:13:22","updated":"2022-09-29 13:06:50","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\/70831","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=70831"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/70831\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/70832"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=70831"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=70831"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=70831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}