{"id":22729,"date":"2022-06-14T12:46:21","date_gmt":"2022-06-14T10:46:21","guid":{"rendered":"https:\/\/www.websupport.sk\/podpora\/?post_type=ht_kb&#038;p=22729"},"modified":"2022-06-14T14:28:53","modified_gmt":"2022-06-14T12:28:53","slug":"kubernetes-7-rolling-updates-a-rollbacks","status":"publish","type":"ht_kb","link":"https:\/\/www.websupport.sk\/podpora\/kb\/kubernetes-7-rolling-updates-a-rollbacks\/","title":{"rendered":"Kubernetes &#8211; 7. Rolling updates a Rollbacks"},"content":{"rendered":"\n<p><a href=\"https:\/\/www.websupport.sk\/podpora\/kb\/kubernetes-6-storage-pomocou-emptydir-a-hostpath\/\">V predo\u0161lom diele<\/a> sme uk\u00e1zali, ako k podu pripoji\u0165 intern\u00e9 \u00falo\u017eisko (storage) pomocou mechanizmu emptyDir, ktor\u00e9ho obsah zost\u00e1va zachovan\u00fd, pokia\u013e pod nevyma\u017eeme. Extern\u00e9 \u00falo\u017eisko zo syst\u00e9mu s\u00faborov nodu sme\u00a0 ku kontajneru pripojili pomocou mechanizmu hostPath, pri\u010dom sme si overili, \u017ee aj po vymazan\u00ed nasaden\u00e9ho podu obsah pripojen\u00e9ho prie\u010dinka zostal zachovan\u00fd.<\/p>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-success\">Chcete si vytvori\u0165 vlastn\u00fd Kubernetes (K8s) klaster? Vysk\u00fa\u0161ajte si ho vo <a href=\"https:\/\/www.websupport.sk\/servery\/vdc\/\">Virtu\u00e1lnom d\u00e1tovom centre<\/a> od Websupportu.<\/p>\n\n\n\n<p>V tomto diele predstav\u00edme d\u00f4le\u017eit\u00e9 funkcie syst\u00e9mu Kubernetes, ktor\u00e9 sa staraj\u00fa o aktualiz\u00e1ciu nasadenia bez potreby re\u0161tartovania alebo vypnutia serverov (rolling updates) a v pr\u00edpade probl\u00e9mu aj o n\u00e1vrat do posledn\u00e9ho funk\u010dn\u00e9ho stavu (Rollbacks).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ma\u017eeme nepotrebn\u00e9 slu\u017eby a nasadenia<\/h2>\n\n\n\n<p>Pred t\u00fdm, ako budeme pokra\u010dova\u0165, vyma\u017eeme nepotrebn\u00e9 slu\u017eby (services) a nasadenia (deployments), aby sme Kubernetes Cluster zbyto\u010dne neza\u0165azovali. Najsk\u00f4r vyp\u00ed\u0161eme zoznam spusten\u00fdch slu\u017eieb (prv\u00fd riadok) a akt\u00edvnych nasaden\u00ed (druh\u00fd riadok) na VPS&nbsp;<code>master<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get services<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get deployments<\/code><\/pre>\n\n\n\n<p>Potom nepotrebn\u00e9 slu\u017eby (prv\u00fd riadok) a nasadenia (druh\u00fd riadok) na VPS&nbsp;<code>master<\/code>&nbsp;zma\u017eeme (tu je nepotrebn\u00e1 slu\u017eba nazvan\u00e1&nbsp;<code>nginx-service<\/code>&nbsp;a nepotrebn\u00e9 nasadenie&nbsp;<code>nginx-deployment<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl delete service nginx-service<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl delete deployment nginx-deployment<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Rolling updates<\/h2>\n\n\n\n<p>Vytvor\u00edme s\u00fabor s n\u00e1zvom <code>deployment-nginx-update-test.yaml<\/code> (prv\u00fd riadok), do ktor\u00e9ho zap\u00ed\u0161eme defin\u00edciu nasadenia (ostatn\u00e9 riadky):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano ~\/deployment-nginx-update-test.yaml<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>apiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: deployment-nginx-update_test\n  labels:\n    app: nginx\nspec:\n  replicas: 4\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.20.1\n        ports:\n        - containerPort: 80\n<\/code><\/pre>\n\n\n\n<p>Vlo\u017e\u00edme skop\u00edrovan\u00fd obsah, ulo\u017e\u00edme pomocou kl\u00e1vesovej skratky&nbsp;<code>Ctrl + X<\/code>&nbsp;a n\u00e1sledne stla\u010den\u00edm kl\u00e1vesu&nbsp;<code>y<\/code>&nbsp;a potvrden\u00edm kl\u00e1vesom&nbsp;<code>Enter<\/code>.<\/p>\n\n\n\n<p>Deployment nasad\u00edme z vy\u0161\u0161ie vytvoren\u00e9ho konfigura\u010dn\u00e9ho s\u00faboru:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl create -f ~\/deployment-nginx-update-test.yaml<\/code><\/pre>\n\n\n\n<p>Skontrolujeme, \u010di sa vytvorilo nasadenie (prv\u00fd riadok), \u010di existuj\u00fa pody (druh\u00fd riadok) a replicasety (tret\u00ed riadok):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get deployments<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get pods<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get replicasets<\/code><\/pre>\n\n\n\n<p>Vid\u00edme, \u017ee je vytvoren\u00e9 jedno nasadenie a jeden replicaset, ktor\u00fd spravuje 4 pody.<\/p>\n\n\n\n<p>V s\u00fabore <code>deployment-nginx-update-test.yaml<\/code> teraz na riadku \u010d\u00edslo <code>19<\/code> zmen\u00edme verziu obrazu Nginx na 1.19.6 takto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano +19 ~\/deployment-nginx-update-test.yaml<\/code><\/pre>\n\n\n\n<p>V riadku \u010d\u00edslo 19 na konci prep\u00ed\u0161eme verziu <code>1.20.1<\/code> na <code>1.19.6<\/code>, ulo\u017e\u00edme pomocou kl\u00e1vesovej skratky&nbsp;<code>Ctrl + X<\/code>&nbsp;a n\u00e1sledne stla\u010den\u00edm kl\u00e1vesu&nbsp;<code>y<\/code>&nbsp;a potvrden\u00edm kl\u00e1vesom&nbsp;<code>Enter<\/code>.<\/p>\n\n\n\n<p>Takto zmenu aplikujeme:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl apply -f ~\/deployment-nginx-update-test.yaml<\/code><\/pre>\n\n\n\n<p>Po kontrole replicasetov zist\u00edme, \u017ee predo\u0161l\u00fd replicaset s verziou servera Nginx 1.20.1 obsahuje nula podov a nov\u00fd (aktualizovan\u00fd) obsahuje 4 pody u\u017e s verziou servera Nginx 1.19.6:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get replicasets<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Rollback<\/h2>\n\n\n\n<p>Prep\u00ed\u0161me teraz verziu obrazu servera Nginx z 1.19.6 na 1.1.1 (prv\u00fd riadok), aplikujem zmeny (druh\u00fd riadok) a skontrolujem replicasety (tret\u00ed riadok):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano ~\/deployment-nginx-update-test.yaml<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl apply -f ~\/deployment-nginx-update-test.yaml<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get replicasets<\/code><\/pre>\n\n\n\n<p>Zist\u00edme, \u017ee posledn\u00fd replicaset obsahuje nula podov, preto\u017ee server Nginx vo verzii 1.1.1 neexistuje, teda sa pody nepodarilo nasadi\u0165.<\/p>\n\n\n\n<p>V tak\u00fdchto pr\u00edpadoch m\u00f4\u017eeme v\u010faka funkcii Rollback vr\u00e1ti\u0165 syst\u00e9m Kubernets do stavu naposledy funk\u010dn\u00e9ho bez potreby re\u0161tartovania alebo vypnutia servera.<\/p>\n\n\n\n<p>Pomocou pr\u00edkazu vyp\u00edsan\u00e9ho ni\u017e\u0161ie najsk\u00f4r nech\u00e1me vyp\u00edsa\u0165 zoznam rev\u00edzi\u00ed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl rollout history deployments deployment-nginx-update-test<\/code><\/pre>\n\n\n\n<p>Takto nech\u00e1me vyp\u00edsa\u0165 detaily rev\u00edzie \u010d\u00edslo 2 (<code>--revision=2<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl rollout history deployments deployment-nginx-update-test --revision=2<\/code><\/pre>\n\n\n\n<p>V na\u0161om pr\u00edpade obnovujeme stav do bodu rev\u00edzie \u010d\u00edslo 2 (<code>--revision=2<\/code>), ke\u010f\u017ee vtedy ur\u010dite v\u0161etko fungovalo spr\u00e1vne. Urob\u00edme to takto:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl rollout undo deployment deployment-nginx-update-test<\/code><\/pre>\n\n\n\n<p>Skontrolujeme, \u010di nasadenia (prv\u00fd riadok), pody (druh\u00fd riadok) a replicasety (tret\u00ed riadok) naozaj funguj\u00fa spr\u00e1vne:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get deployments<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get pods<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl get replicasets<\/code><\/pre>\n\n\n\n<p>Nakoniec e\u0161te vyma\u017eeme nasadenie (a s n\u00edm aj s\u00favisiace pody), ktor\u00e9 u\u017e teraz nie je potrebn\u00e9:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl delete -f ~\/deployment-nginx-update-test.yaml<\/code><\/pre>\n\n\n\n<p class=\"wp-block-ht-blocks-messages wp-block-hb-message wp-block-hb-message--withicon is-style-info\">H\u013ead\u00e1te mana\u017eovan\u00fd Kubernetes? Vyu\u017eite slu\u017eby na\u0161ich sk\u00fasen\u00fdch profesion\u00e1lov na cloud native &#8211; radi v\u00e1m <a href=\"https:\/\/www.websupport.sk\/kontakt\/\" target=\"_blank\" rel=\"noreferrer noopener\">priprav\u00edme rie\u0161nie na mieru<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zhrnutie<\/h2>\n\n\n\n<p>V siedmom diele sme uk\u00e1zali, ako nasaden\u00fd deployment aktualizova\u0165 bez ak\u00e9hoko\u013evek v\u00fdpadku. Tie\u017e sme demon\u0161trovali, ako sa v pr\u00edpade chyby vr\u00e1ti\u0165 do bodu, kedy v\u0161etko fungovalo spr\u00e1vne &#8211; a to bez potreby re\u0161tartovania \u010di vypnutia servera.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>V predo\u0161lom diele sme uk\u00e1zali, ako k podu pripoji\u0165 intern\u00e9 \u00falo\u017eisko (storage) pomocou mechanizmu emptyDir, ktor\u00e9ho obsah zost\u00e1va zachovan\u00fd, pokia\u013e pod nevyma\u017eeme. Extern\u00e9 \u00falo\u017eisko zo syst\u00e9mu s\u00faborov nodu sme\u00a0 ku kontajneru pripojili pomocou mechanizmu hostPath, pri\u010dom sme si overili, \u017ee aj po vymazan\u00ed nasaden\u00e9ho podu obsah pripojen\u00e9ho prie\u010dinka zostal zachovan\u00fd&#8230;.<\/p>\n","protected":false},"author":28,"template":"","format":"standard","meta":{"footnotes":""},"ht-kb-category":[468],"ht-kb-tag":[336,474,396,471,330,339,381,198,192],"class_list":["post-22729","ht_kb","type-ht_kb","status-publish","format-standard","hentry","ht_kb_category-kubernetes","ht_kb_tag-cli","ht_kb_tag-cloud-native","ht_kb_tag-kontajnery","ht_kb_tag-kubernetes","ht_kb_tag-linux","ht_kb_tag-open-source","ht_kb_tag-server","ht_kb_tag-ubuntu","ht_kb_tag-vdc"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kubernetes - 7. Rolling updates a Rollbacks - Websupport centrum podpory<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.websupport.sk\/podpora\/kb\/kubernetes-7-rolling-updates-a-rollbacks\/\" \/>\n<meta property=\"og:locale\" content=\"sk_SK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes - 7. Rolling updates a Rollbacks - Websupport centrum podpory\" \/>\n<meta property=\"og:description\" content=\"V predo\u0161lom diele sme uk\u00e1zali, ako k podu pripoji\u0165 intern\u00e9 \u00falo\u017eisko (storage) pomocou mechanizmu emptyDir, ktor\u00e9ho obsah zost\u00e1va zachovan\u00fd, pokia\u013e pod nevyma\u017eeme. Extern\u00e9 \u00falo\u017eisko zo syst\u00e9mu s\u00faborov nodu sme\u00a0 ku kontajneru pripojili pomocou mechanizmu hostPath, pri\u010dom sme si overili, \u017ee aj po vymazan\u00ed nasaden\u00e9ho podu obsah pripojen\u00e9ho prie\u010dinka zostal zachovan\u00fd....\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.websupport.sk\/podpora\/kb\/kubernetes-7-rolling-updates-a-rollbacks\/\" \/>\n<meta property=\"og:site_name\" content=\"Websupport centrum podpory\" \/>\n<meta property=\"article:modified_time\" content=\"2022-06-14T12:28:53+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Predpokladan\u00fd \u010das \u010d\u00edtania\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 min\u00faty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/kb\\\/kubernetes-7-rolling-updates-a-rollbacks\\\/\",\"url\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/kb\\\/kubernetes-7-rolling-updates-a-rollbacks\\\/\",\"name\":\"Kubernetes - 7. Rolling updates a Rollbacks - Websupport centrum podpory\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/#website\"},\"datePublished\":\"2022-06-14T10:46:21+00:00\",\"dateModified\":\"2022-06-14T12:28:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/kb\\\/kubernetes-7-rolling-updates-a-rollbacks\\\/#breadcrumb\"},\"inLanguage\":\"sk-SK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/kb\\\/kubernetes-7-rolling-updates-a-rollbacks\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/kb\\\/kubernetes-7-rolling-updates-a-rollbacks\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes &#8211; 7. Rolling updates a Rollbacks\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/#website\",\"url\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/\",\"name\":\"Websupport centrum podpory\",\"description\":\"Radi v\u00e1m pom\u00f4\u017eeme s va\u0161im probl\u00e9mom\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.websupport.sk\\\/podpora\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sk-SK\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kubernetes - 7. Rolling updates a Rollbacks - Websupport centrum podpory","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.websupport.sk\/podpora\/kb\/kubernetes-7-rolling-updates-a-rollbacks\/","og_locale":"sk_SK","og_type":"article","og_title":"Kubernetes - 7. Rolling updates a Rollbacks - Websupport centrum podpory","og_description":"V predo\u0161lom diele sme uk\u00e1zali, ako k podu pripoji\u0165 intern\u00e9 \u00falo\u017eisko (storage) pomocou mechanizmu emptyDir, ktor\u00e9ho obsah zost\u00e1va zachovan\u00fd, pokia\u013e pod nevyma\u017eeme. Extern\u00e9 \u00falo\u017eisko zo syst\u00e9mu s\u00faborov nodu sme\u00a0 ku kontajneru pripojili pomocou mechanizmu hostPath, pri\u010dom sme si overili, \u017ee aj po vymazan\u00ed nasaden\u00e9ho podu obsah pripojen\u00e9ho prie\u010dinka zostal zachovan\u00fd....","og_url":"https:\/\/www.websupport.sk\/podpora\/kb\/kubernetes-7-rolling-updates-a-rollbacks\/","og_site_name":"Websupport centrum podpory","article_modified_time":"2022-06-14T12:28:53+00:00","twitter_card":"summary_large_image","twitter_misc":{"Predpokladan\u00fd \u010das \u010d\u00edtania":"4 min\u00faty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.websupport.sk\/podpora\/kb\/kubernetes-7-rolling-updates-a-rollbacks\/","url":"https:\/\/www.websupport.sk\/podpora\/kb\/kubernetes-7-rolling-updates-a-rollbacks\/","name":"Kubernetes - 7. Rolling updates a Rollbacks - Websupport centrum podpory","isPartOf":{"@id":"https:\/\/www.websupport.sk\/podpora\/#website"},"datePublished":"2022-06-14T10:46:21+00:00","dateModified":"2022-06-14T12:28:53+00:00","breadcrumb":{"@id":"https:\/\/www.websupport.sk\/podpora\/kb\/kubernetes-7-rolling-updates-a-rollbacks\/#breadcrumb"},"inLanguage":"sk-SK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.websupport.sk\/podpora\/kb\/kubernetes-7-rolling-updates-a-rollbacks\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.websupport.sk\/podpora\/kb\/kubernetes-7-rolling-updates-a-rollbacks\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.websupport.sk\/podpora\/"},{"@type":"ListItem","position":2,"name":"Kubernetes &#8211; 7. Rolling updates a Rollbacks"}]},{"@type":"WebSite","@id":"https:\/\/www.websupport.sk\/podpora\/#website","url":"https:\/\/www.websupport.sk\/podpora\/","name":"Websupport centrum podpory","description":"Radi v\u00e1m pom\u00f4\u017eeme s va\u0161im probl\u00e9mom","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.websupport.sk\/podpora\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sk-SK"}]}},"_links":{"self":[{"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb\/22729","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb"}],"about":[{"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/types\/ht_kb"}],"author":[{"embeddable":true,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/users\/28"}],"version-history":[{"count":2,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb\/22729\/revisions"}],"predecessor-version":[{"id":22960,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb\/22729\/revisions\/22960"}],"wp:attachment":[{"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/media?parent=22729"}],"wp:term":[{"taxonomy":"ht_kb_category","embeddable":true,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb-category?post=22729"},{"taxonomy":"ht_kb_tag","embeddable":true,"href":"https:\/\/www.websupport.sk\/podpora\/wp-json\/wp\/v2\/ht-kb-tag?post=22729"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}