{"id":97736,"date":"2020-10-21T14:42:17","date_gmt":"2020-10-21T12:42:17","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/obzor-k9s-prodvinutogo-terminalnogo-interfejsa-dlya-kubernetes"},"modified":"2020-10-21T14:42:17","modified_gmt":"2020-10-21T12:42:17","slug":"obzor-k9s-prodvinutogo-terminalnogo-interfejsa-dlya-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/obzor-k9s-prodvinutogo-terminalnogo-interfejsa-dlya-kubernetes","title":{"rendered":"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/11274841ee84b0e2c3ac74c9c738faba.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/k9scli.io\/\">K9s<\/a><\/noindex> poskytuje u\u017eivatelsk\u00e9 rozhran\u00ed termin\u00e1lu pro interakci s Kubernetes clustery. C\u00edlem tohoto Open Source projektu je usnadnit pohodlnou navigaci v aplikac\u00edch v K8s, jejich sledov\u00e1n\u00ed a spr\u00e1vu. K9s neust\u00e1le sleduje zm\u011bny v Kubernetes a nab\u00edz\u00ed rychl\u00e9 p\u0159\u00edkazy pro pr\u00e1ci se sledovan\u00fdmi zdroji.<\/p>\n<p>Projekt je naps\u00e1n v Go, existuje ji\u017e v\u00edce ne\u017e rok a p\u016fl: prvn\u00ed commit byl proveden 1. \u00fanora 2019. K datu naps\u00e1n\u00ed \u010dl\u00e1nku se po\u010det hv\u011bzdi\u010dek vy\u0161plhal na v\u00edce ne\u017e 9000 na <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\">GitHub<\/a><\/noindex> a p\u0159ibli\u017en\u011b 80 p\u0159isp\u011bvatel\u016f. Pod\u00edvejme se, co k9s um\u00ed?<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Instalace a spu\u0161t\u011bn\u00ed<\/h2>\n<p>\nJedn\u00e1 se o klientskou aplikaci (ve vztahu k Kubernetes clustru), kterou je nejjednodu\u0161\u0161\u00ed spustit jako Docker obraz:<\/p>\n<pre><code class=\"bash\">docker run --rm -it -v $KUBECONFIG: \/root\/.kube\/config quay.io\/derailed\/k9s<\/code><\/pre>\n<p>\nPro n\u011bkter\u00e9 linuxov\u00e9 distribuce a dal\u0161\u00ed opera\u010dn\u00ed syst\u00e9my jsou tak\u00e9 k dispozici hotov\u00e9 instala\u010dn\u00ed bal\u00ed\u010dky. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s#installation\">bal\u00ed\u010dkom<\/a><\/noindex>Obecn\u011b plat\u00ed, \u017ee pro Linuxov\u00e9 syst\u00e9my lze nainstalovat bin\u00e1rn\u00ed soubor:<\/p>\n<pre><code class=\"bash\">sudo wget -qO- https:\/\/github.com\/derailed\/k9s\/releases\/download\/v0.22.0\/k9s_Linux_x86_64.tar.gz | tar zxvf - -C \/tmp\/ sudo mv \/tmp\/k9s \/usr\/local\/bin<\/code><\/pre>\n<p>\nNeexistuj\u00ed \u017e\u00e1dn\u00e9 specifick\u00e9 po\u017eadavky na samotn\u00fd K8s cluster. Podle recenz\u00ed aplikace funguje i se star\u0161\u00edmi verzemi Kubernetes, jako je 1.12.<\/p>\n<p>Aplikace se spou\u0161t\u00ed pomoc\u00ed standardn\u00edho configu <code>.kube\/config<\/code> \u2014 obdobn\u011b, jak to d\u011bl\u00e1 <code>kubectl<\/code>.<\/p>\n<h2>Navig\u00e1cia<\/h2>\n<p>\nVe v\u00fdchoz\u00edm nastaven\u00ed se otev\u0159e okno se standardn\u00edm n\u00e1zvov\u00fdm prostorem, kter\u00fd je uveden pro kontext. To znamen\u00e1, \u017ee pokud jste zadali <code>kubectl config set-context --current --namespace=test<\/code>, tak se otev\u0159e n\u00e1zev prostoru <code>test<\/code>. <i>(O zm\u011bn\u011b kontext\u016f\/n\u00e1zvov\u00fdch prostor\u016f viz n\u00ed\u017ee.) <\/i><\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/820fcbdd376abc95d67bf202f34c880c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u0159echod do <b>p\u0159\u00edkazov\u00e9ho modu<\/b> se prov\u00e1d\u00ed stisknut\u00edm na ':'. Pot\u00e9 m\u016f\u017eete spravovat fungov\u00e1n\u00ed k9s pomoc\u00ed p\u0159\u00edkaz\u016f \u2014 nap\u0159\u00edklad pro zobrazen\u00ed seznamu StatefulSets (v aktu\u00e1ln\u00edm n\u00e1zvov\u00e9m prostoru) m\u016f\u017eete zadat <code>:sts<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/840724fc656b22e67519c53983065862.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPro n\u011bkter\u00e9 dal\u0161\u00ed zdroje Kubernetes:<\/p>\n<ul>\n<li> <code>:ns<\/code> \u2014 N\u00e1zvov\u00e9 prostory;<\/li>\n<li> <code>:deploy<\/code> \u2014 Nasazen\u00ed;<\/li>\n<li> <code>:ing<\/code> \u2014 Ingressy;<\/li>\n<li> <code>:svc<\/code> \u2014 Slu\u017eby.<\/li>\n<\/ul>\n<p>\nChcete-li zobrazit \u00fapln\u00fd seznam typ\u016f zdroj\u016f dostupn\u00fdch pro zobrazen\u00ed, existuje p\u0159\u00edkaz <code>:aliases<\/code>.<\/p>\n<p>Je pohodln\u00e9 prohl\u00ed\u017eet tak\u00e9 seznam p\u0159\u00edkaz\u016f dostupn\u00fdch pomoc\u00ed kl\u00e1vesov\u00fdch zkratek v aktu\u00e1ln\u00edm okn\u011b: sta\u010d\u00ed stisknout '?' mnohdy.<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/54d329f9eeda2424f457aef6b977ae63.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTak\u00e9 v k9s je <b>re\u017eim vyhled\u00e1v\u00e1n\u00ed<\/b>, do kter\u00e9ho se dostanete jednodu\u0161e zad\u00e1n\u00edm '\/'. S n\u00edm se prov\u00e1d\u00ed vyhled\u00e1v\u00e1n\u00ed v obsahu aktu\u00e1ln\u00edho 'okna'. P\u0159edstavte si, \u017ee jste p\u0159edt\u00edm zadali <code>:ns<\/code>, m\u00e1te otev\u0159en\u00fd seznam n\u00e1zvov\u00fdch prostor\u016f. Pokud jich je p\u0159\u00edli\u0161 mnoho, nen\u00ed t\u0159eba dlouze rolovat dol\u016f, sta\u010d\u00ed v okn\u011b s n\u00e1zvov\u00fdmi prostory zadat <code>\/mynamespace<\/code>.<\/p>\n<p>Na vyh\u013ead\u00e1vanie pod\u013ea \u0161t\u00edtkov je mo\u017en\u00e9 zvoli\u0165 v\u0161etky pod&#8217;y v potrebnom priestore n\u00e1zvov, po \u010dom je potrebn\u00e9 zada\u0165, napr\u00edklad, <code>\/ -l app=whoami<\/code>. Z\u00edskame zoznam pod&#8217;ov s t\u00fdmto \u0161t\u00edtkom:<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/88b8e09a5b7819bcf49334bf351b040b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVyh\u013ead\u00e1vanie funguje vo v\u0161etk\u00fdch typoch okien, vr\u00e1tane logov, prehliadania YAML manifestov a <code>describe<\/code> pre zdroje \u2014 podrobnej\u0161ie inform\u00e1cie o t\u00fdchto mo\u017enostiach n\u00e1jdete ni\u017e\u0161ie.<\/p>\n<p>Ak\u00fd je celkov\u00fd postup na navig\u00e1ciu?<\/p>\n<p>Pomocou pr\u00edkazu <code>:ctx<\/code> m\u00f4\u017eete vybra\u0165 kontext:<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/a5e780a3fc98961913c966222e167d51.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa v\u00fdber namespace sa u\u017e spom\u00ednala pr\u00edkaz <code>:ns<\/code>, a potom m\u00f4\u017eete vyu\u017ei\u0165 vyh\u013ead\u00e1vanie v potrebnom priestore: <code>\/test<\/code>.<\/p>\n<p>Ak si teraz vyberieme zauj\u00edmav\u00fd zdroj (napr\u00edklad ten ist\u00fd StatefulSet), zobraz\u00ed sa n\u00e1m pr\u00edslu\u0161n\u00e1 inform\u00e1cia: ko\u013eko pod\u2019ov be\u017e\u00ed s kr\u00e1tkymi inform\u00e1ciami o nich.<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/8e0d8c41b8673b7c29f2605d3ae59503.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00f4\u017eu n\u00e1s zauj\u00edma\u0165 len pod\u2019y \u2014 sta\u010d\u00ed zada\u0165 <code>:pod<\/code>. V pr\u00edpade ConfigMap&#8217;ov (<code>:cm<\/code> \u2014 pre zoznam t\u00fdchto zdrojov) m\u00f4\u017eete vybra\u0165 zauj\u00edmav\u00fd objekt a stla\u010di\u0165 \"u\", po \u010dom K9s nazna\u010d\u00ed, kto konkr\u00e9tne ho (tento CM) pou\u017e\u00edva.<\/p>\n<p>E\u0161te jedna u\u017eito\u010dn\u00e1 funkcia pre prehliadanie zdrojov \u2014 ich <b>\"rentgen\" (XRay view)<\/b>. Tento re\u017eim sa aktivuje pr\u00edkazom <code>:xray RESOURCE<\/code> a... jednoduch\u0161ie je uk\u00e1za\u0165, ako to funguje, ne\u017e to vysvet\u013eova\u0165. Tu je ilustr\u00e1cia pre StatefulSets:<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/de40ebfe06ca935d2bc36323b3f16f3e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>(Ka\u017ed\u00fd z t\u00fdchto zdrojov je mo\u017en\u00e9 upravova\u0165, meni\u0165, robi\u0165 <code>describe<\/code>.)<\/i><\/p>\n<p>A tu je Deployment s Ingressom:<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/598c1b25b787dcb1cf9660fa730d74c5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Pr\u00e1ca so zdrojmi<\/h2>\n<p>\nO ka\u017edom zdroji m\u00f4\u017eete z\u00edska\u0165 inform\u00e1cie v YAML alebo jeho <code>describe<\/code> stla\u010den\u00edm pr\u00edslu\u0161n\u00fdch kl\u00e1vesov\u00fdch kombin\u00e1ci\u00ed (\"y\" a \"d\" pr\u00edslu\u0161ne). Z\u00e1kladn\u00fdch oper\u00e1ci\u00ed, samozrejme, existuje e\u0161te viac: ich zoznam a kl\u00e1vesov\u00e9 kombin\u00e1cie s\u00fa v\u017edy na dosah v\u010faka pohodln\u00e9mu \"headeru\" v rozhran\u00ed (skryje sa stla\u010den\u00edm Ctrl + e).<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/6bbe4ca07442e1e14a462586d14ef98d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPri \u00faprave ktor\u00e9hoko\u013evek zdroja (\"e\" po jeho v\u00fdbere) sa otvor\u00ed textov\u00fd editor, ktor\u00fd je ur\u010den\u00fd v premenn\u00fdch prostredia (<code>export EDITOR=vim<\/code>).<\/p>\n<p>A takto vyzer\u00e1 podrobn\u00fd popis zdroja (<code>describe<\/code>):<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/05fdb57e3b85d1b81c9bfc6414aca117.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTak\u00fdto v\u00fdstup (alebo v\u00fdstup prehliadania YAML manifestu zdroja) m\u00f4\u017eete ulo\u017ei\u0165 pomocou zn\u00e1mej kl\u00e1vesovej kombin\u00e1cie Ctrl + s. Kde sa ulo\u017e\u00ed, bude jasn\u00e9 z spr\u00e1vy K9s:<\/p>\n<pre><code class=\"plaintext\">Log \/tmp\/k9s-screens-root\/kubernetes\/Describe-1601244920104133900.yml bol \u00faspe\u0161ne ulo\u017een\u00fd!<\/code><\/pre>\n<p>\nZ vytvoren\u00fdch z\u00e1lo\u017en\u00fdch s\u00faborov je mo\u017en\u00e9 aj obnovi\u0165 zdroje, predt\u00fdm je potrebn\u00e9 odstr\u00e1ni\u0165 syst\u00e9mov\u00e9 \u0161t\u00edtky a anot\u00e1cie. Na to bude potrebn\u00e9 prejs\u0165 do adres\u00e1ra s nimi (<code>:dir \/tmp<\/code>), po \u010dom si vyberiete po\u017eadovan\u00fd s\u00fabor a aplikujete ho <code>apply<\/code>.<\/p>\n<p>Mimochodom, v\u017edy je mo\u017en\u00e9 vr\u00e1ti\u0165 sa k predch\u00e1dzaj\u00facemu ReplicaSetu, ak s\u00fa s aktu\u00e1lnym nejak\u00e9 probl\u00e9my. Na to je potrebn\u00e9 vybra\u0165 po\u017eadovan\u00fd RS (<code>:rs<\/code> pre ich zoznam):<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/de0ea37d970c51514559288661bdc6f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 a vykona\u0165 rollback pomocou Ctrl + l. Mali by sme dosta\u0165 ozn\u00e1menie, \u017ee v\u0161etko prebehlo \u00faspe\u0161ne:<\/p>\n<pre><code class=\"plaintext\">k9s\/whoami-5cfbdbb469 bol \u00faspe\u0161ne vr\u00e1ten\u00fd<\/code><\/pre>\n<p>\nAby sme mohli \u0161k\u00e1lova\u0165 repliky, sta\u010d\u00ed stla\u010di\u0165 \u201es\u201c (scale) a vybra\u0165 po\u017eadovan\u00fd po\u010det in\u0161tanci\u00ed:<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/145093030db754c9ef85810cbba3ed5c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDo ktor\u00e9hoko\u013evek z kontajnerov sa d\u00e1 vst\u00fapi\u0165 pomocou shell: na to prejdite k po\u017eadovan\u00e9mu podu, stla\u010dte \u201es\u201c (shell) a vyberte kontajner.<\/p>\n<h2>\u010eal\u0161ie mo\u017enosti<\/h2>\n<p>\nSamozrejme, podporuje sa aj preh\u013ead logov (\u201el\u201c pre vybran\u00fd zdroj). A ak chcete sledova\u0165 nov\u00e9 logy, nie je potrebn\u00e9 neust\u00e1le stl\u00e1\u010da\u0165 Enter: sta\u010d\u00ed ozna\u010di\u0165 (\u201em\u201c), po \u010dom sa sleduj\u00fa len nov\u00e9 spr\u00e1vy.<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/05aa9657f744b9e3d09034862e1befe7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTaktie\u017e v tomto okne m\u00f4\u017eete vybra\u0165 \u010dasov\u00fd rozsah pre v\u00fdstup logov:<\/p>\n<ul>\n<li> kl\u00e1vesa \u201e1\u201c \u2014 za 1 min\u00fatu;<\/li>\n<li> \u201e2\u201c \u2014 5 min\u00fat;<\/li>\n<li> \u201e3\u201c \u2014 15 min\u00fat;<\/li>\n<li> \u201e4\u201c \u2014 30 min\u00fat;<\/li>\n<li> \u201e5\u201c \u2014 1 hodina;<\/li>\n<li> \u201e0\u201c \u2014 za cel\u00fa dobu \u017eivota pod&#8217;a.<\/li>\n<\/ul>\n<p>\n\u0160peci\u00e1lny re\u017eim pr\u00e1ce Pulse (pr\u00edkaz <code>:pulse<\/code>) zobrazuje celkov\u00e9 inform\u00e1cie o Kubernetes klastri:<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/413d241ad7518f49c523fa59f51702a6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV \u0148om je mo\u017en\u00e9 vidie\u0165 mno\u017estvo zdrojov a ich stav (zelenou farbou s\u00fa ozna\u010den\u00e9 tie, ktor\u00e9 maj\u00fa stav <code>Running<\/code>).<\/p>\n<p>\u010eal\u0161ia zauj\u00edmav\u00e1 funkcia K9s sa naz\u00fdva <b>Popeye<\/b>. Kontroluje v\u0161etky zdroje pod\u013ea ur\u010dit\u00fdch krit\u00e9ri\u00ed spr\u00e1vnosti a zobrazuje z\u00edskan\u00fd \u201erating\u201c s vysvetleniami. Napr\u00edklad, m\u00f4\u017eete vidie\u0165, \u017ee ch\u00fdbaj\u00fa podmienky alebo limity, a nejak\u00fd kontajner m\u00f4\u017ee be\u017ea\u0165 pod rootom...<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/a6bc5ea45b5749fb4e1038b82374b3c4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPodporuje sa z\u00e1kladn\u00e1 podpora Helm. Napr\u00edklad, takto m\u00f4\u017eete vidie\u0165 vydania, nasaden\u00e9 do kl astru:<\/p>\n<pre><code class=\"bash\">:helm all # v\u0161etko\n:helm $namespace # v konkr\u00e9tnom meniacej sa\n<\/code><\/pre>\n<p><\/p>\n<h2>Benchmark<\/h2>\n<p>\nV K9s bol dokonca zabudovan\u00fd <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/rakyll\/hey\">hey<\/a><\/noindex> \u2014 to je jednoduch\u00fd gener\u00e1tor za\u0165a\u017eenia na HTTP server, alternat\u00edva k zn\u00e1mej\u0161iemu ab (ApacheBench).<\/p>\n<p>Na jeho zapnutie je potrebn\u00e9 aktivova\u0165 port-forward v pode. Na to vyberieme pod a stla\u010d\u00edme Shift + f, prejdeme do podmenu port-forward pomocou aliasu \u201epf\u201c.<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/651f25269c0998c716ab9c0c4b5e0455.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPo vybrat\u00ed portu a stla\u010den\u00ed Ctrl + b sa spust\u00ed s\u00e1m benchmark. V\u00fdsledky jeho pr\u00e1ce sa ukladaj\u00fa do <code>\/tmp<\/code> a s\u00fa dostupn\u00e9 pre n\u00e1sledn\u00e9 prezeranie v K9s. <\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/57b2fe1d078e9aca1c6afccd318094da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/3b2bf031e8442e47eb3482187ac5b64d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa zmenu konfigur\u00e1cie benchmarku je potrebn\u00e9 vytvori\u0165 s\u00fabor <code>$HOME\/.k9s\/bench-.yml<\/code> (ur\u010duje sa pre ka\u017ed\u00fd klaster).<\/p>\n<p><i>NB: D\u00f4le\u017eit\u00e9 je, aby pr\u00edpona v\u0161etk\u00fdch YAML s\u00faborov v adres\u00e1ri <code>.k9s<\/code> bola pr\u00e1ve <code>.yml<\/code> (<code>.yaml<\/code> nefunguje spr\u00e1vne).<\/i><\/p>\n<p>Pr\u00edklad konfigur\u00e1cie:<\/p>\n<pre><code class=\"bash\">benchmarks:\n  defaults:\n    # Po\u010det vl\u00e1kien\n    concurrency: 2\n    # Po\u010det po\u017eiadaviek\n    requests: 1000\n  containers:\n    # Nastavenia pre kontajner s benchmarkom\n    # Kontajner je definovan\u00fd ako namespace\/pod-name:container-name\n    default\/nginx:nginx:\n      concurrency: 2\n      requests: 10000\n      http:\n        path: \/ \n        method: POST\n        body:\n          {\"foo\":\"bar\"}\n        header:\n          Accept:\n            - text\/html\n          Content-Type:\n            - application\/json\n services:\n    # M\u00f4\u017eete vykon\u00e1va\u0165 benchmark na slu\u017eb\u00e1ch typu NodePort a LoadBalancer\n    # Syntax: namespace\/service-name\n    default\/nginx:\n      concurrency: 5\n      requests: 500\n      http:\n        method: GET\n        path: \/auth\n      auth:\n        user: flant\n        password: s3cr3tp455w0rd\n<\/code><\/pre>\n<p><\/p>\n<h2>Rozhranie<\/h2>\n<p>\nZobrazenie st\u013apcov pre zoznamy zdrojov sa d\u00e1 upravi\u0165 vytvoren\u00edm s\u00faboru <code>$HOME\/.k9s\/views.yml<\/code>. Pr\u00edklad jeho obsahu:<\/p>\n<pre><code class=\"plaintext\">k9s:\n views:\n   v1\/pods:\n     columns:\n       - AGE\n       - NAMESPACE\n       - NAME\n       - IP\n       - NODE\n       - STATUS\n       - READY\n   v1\/services:\n     columns:\n       - AGE\n       - NAMESPACE\n       - NAME\n       - TYPE\n       - CLUSTER-IP\n<\/code><\/pre>\n<p>\n<i>Pravda, ch\u00fdba tu st\u013apec pre \u0161t\u00edtky, na \u010do je tu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\/issues\/605\">probl\u00e9m v projekte<\/a><\/noindex>.<\/i><\/p>\n<p>Zoradenie pod\u013ea st\u013apcov sa vykon\u00e1va kl\u00e1vesov\u00fdmi skratkami:<\/p>\n<ul>\n<li> Shift + n \u2014 pod\u013ea mena;<\/li>\n<li> Shift + o \u2014 pod\u013ea uzlov;<\/li>\n<li> Shift + i \u2014 pod\u013ea IP;<\/li>\n<li> Shift + a \u2014 pod\u013ea \u010dasu \u017eivota kontajnera;<\/li>\n<li> Shift + t \u2014 pod\u013ea po\u010dtu re\u0161tartov;<\/li>\n<li> Shift + r \u2014 pod\u013ea stavu pripravenosti;<\/li>\n<li> Shift + c \u2014 pod\u013ea spotreby CPU;<\/li>\n<li> Shift + m \u2014 pod\u013ea spotreby pam\u00e4te.<\/li>\n<\/ul>\n<p>\nAk niekto nem\u00e1 r\u00e1d predvolen\u00e9 farebn\u00e9 nastavenia, v K9s s\u00fa dokonca podporovan\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/k9scli.io\/topics\/skins\/\">t\u00e9my<\/a><\/noindex>. Hotov\u00e9 pr\u00edklady (7 kusov) s\u00fa k dispoz\u00edcii <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\/tree\/master\/skins\">tu<\/a><\/noindex>. Tu je pr\u00edklad jednej z tak\u00fdch t\u00e9m <i>(in the navy)<\/i>:<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/4a4378f2c2d36eb3985e2b71d733c444.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Doplnky<\/h2>\n<p>\nNakoniec, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\/tree\/master\/plugins\">pluginy<\/a><\/noindex> umo\u017e\u0148uj\u00fa roz\u0161\u00edri\u0165 mo\u017enosti K9s. Osobne som v pr\u00e1ci pou\u017eil iba jednu z nich \u2014 <code>kubectl get all -n $namespace<\/code>.<\/p>\n<p>Vyzer\u00e1 to nasledovne. Vytvor\u00edme s\u00fabor <code>$HOME\/.k9s\/plugin.yml<\/code> s tak\u00fdm obsahom:<\/p>\n<pre><code class=\"bash\">plugin:\n get-all:\n   shortCut: g    \n   confirm: false    \n   description: get all\n   scopes:\n   - all\n   command: sh\n   background: false\n   args:\n   - -c\n   - \"kubectl -n $NAMESPACE get all -o wide | less\"<\/code><\/pre>\n<p>\nTeraz m\u00f4\u017eete prejs\u0165 do namespace a stla\u010di\u0165 \u201eg\u201c na vykonanie s pr\u00edslu\u0161n\u00fdm pr\u00edkazom:<\/p>\n<p><img decoding=\"async\" alt=\"Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/c79bbf26b6c321a97cedabf22f1699b9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMedzi pluginmi s\u00fa napr\u00edklad integr\u00e1cie s kubectl-jq a utilitami na prezeranie logov <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wercker\/stern\">stern<\/a><\/noindex>.<\/p>\n<h2>Z\u00e1ver<\/h2>\n<p>\nPod\u013ea m\u00f4jho n\u00e1zoru je K9s ve\u013emi pohodln\u00e1 na pou\u017e\u00edvanie: celkom r\u00fdchlo si zvyknete h\u013eada\u0165 v\u0161etko potrebn\u00e9 bez pou\u017eitia <code>kubectl<\/code>. Te\u0161ili ma prezeranie logov a ich ukladanie, r\u00fdchle upravovanie zdrojov, r\u00fdchlos\u0165 pr\u00e1ce celkovo*, bol u\u017eito\u010dn\u00fd re\u017eim Popeye. Zvl\u00e1\u0161\u0165 treba spomen\u00fa\u0165 mo\u017enosti vytv\u00e1ra\u0165 pluginy a prisp\u00f4sobi\u0165 aplik\u00e1ciu svojim potreb\u00e1m.<\/p>\n<p><i>* Aj pri ve\u013ek\u00fdch objemoch logov som si v\u0161imol aj pomal\u00fa pr\u00e1cu K9s. V tak\u00fdchto okamihoch n\u00e1stroj \u201ezo\u017eral\u201c 2 jadr\u00e1 z Intel Xeon E312xx a dokonca mohol zablokova\u0165.<\/i><\/p>\n<p>\u010co v s\u00fa\u010dasnosti ch\u00fdba? R\u00fdchly n\u00e1vrat na predch\u00e1dzaj\u00facu verziu (nepovedzme o RS) bez prechodu do adres\u00e1ra. Okrem toho, obnovenie prebieha len pre <i>v\u0161etko<\/i> zdroja: ak ste vymazali anot\u00e1ciu alebo \u0161t\u00edtok, bude potrebn\u00e9 vymaza\u0165 a obnovi\u0165 cel\u00fd zdroj (tu bude potrebn\u00e9 prejs\u0165 do adres\u00e1ra). \u010eal\u0161ia drobnos\u0165 - ch\u00fdba d\u00e1tum tak\u00fdchto ulo\u017een\u00fdch \u201ez\u00e1loh\u201c.<\/p>\n<h2>P.S.<\/h2>\n<p>\nPre\u010d\u00edtajte si tie\u017e na na\u0161om blogu:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/506948\/\">Preh\u013ead grafick\u00fdch rozhran\u00ed pre Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468041\/\">Ozn\u00e1menie webov\u00e9ho rozhrania Kubernetes Web View (a stru\u010dn\u00fd preh\u013ead ostatn\u00fdch webov\u00fdch UI pre Kubernetes)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/426985\/\">kubebox a \u010fal\u0161ie konzolov\u00e9 rozhrania pre Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/524196\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>K9s \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430\u043c\u0438 Kubernetes. \u0426\u0435\u043b\u044c \u044d\u0442\u043e\u0433\u043e Open Source-\u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 \u043e\u0431\u043b\u0435\u0433\u0447\u0438\u0442\u044c \u0443\u0434\u043e\u0431\u043d\u0443\u044e \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044e \u043f\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c \u0432 K8s, \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u0437\u0430 \u043d\u0438\u043c\u0438 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u043c\u0438. K9s \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 Kubernetes \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u043c\u044b\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438. \u041f\u0440\u043e\u0435\u043a\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 Go, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0443\u0436\u0435 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u0443\u0442\u043e\u0440\u0430 \u043b\u0435\u0442: \u043f\u0435\u0440\u0432\u044b\u0439 \u043a\u043e\u043c\u043c\u0438\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":97737,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-97736","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/obzor-k9s-prodvinutogo-terminalnogo-interfejsa-dlya-kubernetes\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\u0437\u043e\u0440 k9s \u2014 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0434\u043b\u044f Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/obzor-k9s-prodvinutogo-terminalnogo-interfejsa-dlya-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-21T12:42:17+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-21T12:42:17+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\udd47Preh\u013ead k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhrania pre Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/obzor-k9s-prodvinutogo-terminalnogo-interfejsa-dlya-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\u0437\u043e\u0440 k9s \u2014 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430 \u0434\u043b\u044f Kubernetes | ProHoster","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/obzor-k9s-prodvinutogo-terminalnogo-interfejsa-dlya-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-21T12:42:17+00:00","article:modified_time":"2020-10-21T12:42:17+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"97736","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:14:39","updated":"2022-10-03 07:12:05","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/97736","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=97736"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/97736\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/97737"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=97736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=97736"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=97736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}