{"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\/cs\/blog\/administrirovanie\/obzor-k9s-prodvinutogo-terminalnogo-interfejsa-dlya-kubernetes","title":{"rendered":"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro 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 termin\u00e1lov\u00e9 rozhran\u00ed pro interakci s Kubernetes klastry. C\u00edlem tohoto open-source projektu je usnadnit u\u017eivatelskou navigaci aplikacemi v K8s, jejich sledov\u00e1n\u00ed a spr\u00e1vu. K9s neust\u00e1le monitoruje 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 a existuje ji\u017e v\u00edce ne\u017e p\u016fl druh\u00e9ho roku: prvn\u00ed commit byl proveden 1. \u00fanora 2019. K datu psan\u00ed \u010dl\u00e1nku m\u00e1 v\u00edce ne\u017e 9000 hv\u011bzdi\u010dek 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 klastru), 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 distribuce Linuxu a dal\u0161\u00ed opera\u010dn\u00ed syst\u00e9my jsou tak\u00e9 k dispozici p\u0159ipraven\u00e9 instala\u010dn\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s#installation\">bal\u00ed\u010dky<\/a><\/noindex>. Obecn\u011b lze pro linuxov\u00e9 syst\u00e9my 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\/\nsudo mv \/tmp\/k9s \/usr\/local\/bin<\/code><\/pre>\n<p>\nPro samotn\u00fd klastr K8s nejsou \u017e\u00e1dn\u00e9 specifick\u00e9 po\u017eadavky. 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 konfigura\u010dn\u00edho <code>.kube\/config<\/code> \u2014 analogick\u00e9ho tomu, jak to d\u011bl\u00e1 <code>kubectl<\/code>.<\/p>\n<h2>Navigace<\/h2>\n<p>\nVe v\u00fdchoz\u00edm nastaven\u00ed se otev\u0159e okno se standardn\u00edm namespace, kter\u00fd je uveden pro kontext. To znamen\u00e1, \u017ee pokud jste zapsali <code>kubectl config set-context --current --namespace=test<\/code>, pak se otev\u0159e namespace <code>test<\/code>. <i>(O p\u0159ep\u00edn\u00e1n\u00ed kontext\u016f\/jmenn\u00fdch prostor\u016f viz n\u00ed\u017ee.) <\/i><\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/820fcbdd376abc95d67bf202f34c880c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u0159epnut\u00ed do <b>re\u017eimu p\u0159\u00edkaz\u016f<\/b> se prov\u00e1d\u00ed stisknut\u00edm \u201e:\u201c. Pot\u00e9 lze spravovat pr\u00e1ci s k9s pomoc\u00ed p\u0159\u00edkaz\u016f \u2014 nap\u0159\u00edklad pro zobrazen\u00ed seznamu StatefulSets (ve vybran\u00e9m jmenn\u00e9m prostoru) m\u016f\u017eete zadat <code>:sts<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro 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 Namespaces;<\/li>\n<li> <code>:deploy<\/code> \u2014 Deployments;<\/li>\n<li> <code>:ing<\/code> \u2014 Ingresses;<\/li>\n<li> <code>:svc<\/code> \u2014 Services.<\/li>\n<\/ul>\n<p>\nPro zobrazen\u00ed \u00fapln\u00e9ho seznamu typ\u016f zdroj\u016f, kter\u00e9 jsou k dispozici k zobrazen\u00ed, existuje p\u0159\u00edkaz <code>:aliases<\/code>.<\/p>\n<p>Je tak\u00e9 u\u017eite\u010dn\u00e9 prohl\u00e9dnout si seznam p\u0159\u00edkaz\u016f dostupn\u00fdch pomoc\u00ed kl\u00e1vesov\u00fdch zkratek v r\u00e1mci aktu\u00e1ln\u00edho okna: sta\u010d\u00ed stisknout \u201e?\u201c.<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/54d329f9eeda2424f457aef6b977ae63.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV k9s je tak\u00e9 <b>re\u017eim vyhled\u00e1v\u00e1n\u00ed<\/b>, pro p\u0159echod do kter\u00e9ho sta\u010d\u00ed zadat \u201e\/\u201c. S jeho pomoc\u00ed se prov\u00e1d\u00ed vyhled\u00e1v\u00e1n\u00ed v aktu\u00e1ln\u00edm \u201eokn\u011b\u201c. P\u0159edpokl\u00e1dejme, \u017ee jste d\u0159\u00edve zadali <code>:ns<\/code>, m\u00e1te otev\u0159en\u00fd seznam jmenn\u00fdch prostor\u016f. Pokud jich je moc, abyste nemuseli dlouze scrollovat dol\u016f, sta\u010d\u00ed v okn\u011b s namespaces zadat <code>\/mynamespace<\/code>.<\/p>\n<p>Pro vyhled\u00e1v\u00e1n\u00ed podle \u0161t\u00edtk\u016f m\u016f\u017eete vybrat v\u0161echny pod&#8217;y ve pot\u0159ebn\u00e9m jmenn\u00e9m prostoru, a pot\u00e9 zadat nap\u0159\u00edklad <code>\/ -l app=whoami<\/code>. Z\u00edsk\u00e1me seznam pod&#8217;\u016f s t\u00edmto \u0161t\u00edtkem:<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/88b8e09a5b7819bcf49334bf351b040b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHled\u00e1n\u00ed funguje ve v\u0161ech typech oken, v\u010detn\u011b protokol\u016f, zobrazen\u00ed YAML manifest\u016f a <code>popis<\/code> pro zdroje \u2014 v\u00edce o t\u011bchto funkc\u00edch viz n\u00ed\u017ee.<\/p>\n<p>Jak celkov\u011b vypad\u00e1 postup navigace?<\/p>\n<p>Pomoc\u00ed p\u0159\u00edkazu <code>:ctx<\/code> m\u016f\u017eete vybrat kontext:<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/a5e780a3fc98961913c966222e167d51.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPro v\u00fdb\u011br jmenn\u00e9ho prostoru je zde ji\u017e zmi\u0148ovan\u00fd p\u0159\u00edkaz <code>:ns<\/code>, a pot\u00e9 m\u016f\u017eete pou\u017e\u00edt hled\u00e1n\u00ed pro po\u017eadovan\u00fd prostor: <code>\/test<\/code>.<\/p>\n<p>Pokud nyn\u00ed vyberete n\u00e1s zaj\u00edmaj\u00edc\u00ed zdroj (nap\u0159\u00edklad stejn\u00fd StatefulSet), zobraz\u00ed se odpov\u00eddaj\u00edc\u00ed informace: kolik je spu\u0161t\u011bno pod\u011bl\u016f s kr\u00e1tk\u00fdmi informacemi o nich.<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/8e0d8c41b8673b7c29f2605d3ae59503.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMohou b\u00fdt zaj\u00edmav\u00e9 pouze pod\u011bly \u2014 pak sta\u010d\u00ed zadat <code>:pod<\/code>. V p\u0159\u00edpad\u011b ConfigMap&#8217;\u016f (<code>:cm<\/code> \u2014 pro seznam t\u011bchto zdroj\u016f) m\u016f\u017eete vybrat zaj\u00edmav\u00fd objekt a stisknout \u201eu\u201c, po \u010dem\u017e K9s nazna\u010d\u00ed, kdo konkr\u00e9tn\u011b jej (tento CM) pou\u017e\u00edv\u00e1.<\/p>\n<p>Dal\u0161\u00ed u\u017eite\u010dn\u00e1 funkce pro prohl\u00ed\u017een\u00ed zdroj\u016f \u2014 jejich <b>\u201erentgen\u201c (XRay view)<\/b>. Tento re\u017eim se spou\u0161t\u00ed p\u0159\u00edkazem <code>:xray RESOURCE<\/code> a\u2026 je jednodu\u0161\u0161\u00ed uk\u00e1zat, jak funguje, ne\u017e to vysv\u011btlovat. Zde je ilustrace pro StatefulSets:<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/de40ebfe06ca935d2bc36323b3f16f3e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>(Ka\u017ed\u00fd z t\u011bchto zdroj\u016f lze upravovat, m\u011bnit, prov\u00e1d\u011bt <code>popis<\/code>.)<\/i><\/p>\n<p>A tady je Deployment s Ingress:<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/598c1b25b787dcb1cf9660fa730d74c5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Pr\u00e1ce se zdroji<\/h2>\n<p>\nO ka\u017ed\u00e9m zdroji lze z\u00edskat informace v YAML nebo jeho <code>popis<\/code> stiskem p\u0159\u00edslu\u0161n\u00fdch kl\u00e1vesov\u00fdch zkratek (\u201ey\u201c a \u201ed\u201c resp.). Z\u00e1kladn\u00edch operac\u00ed je samoz\u0159ejm\u011b je\u0161t\u011b v\u00edc: jejich seznam a kl\u00e1vesov\u00e9 zkratky jsou v\u017edy na o\u010d\u00edch d\u00edky praktick\u00e9 \u201ehlavi\u010dce\u201c v rozhran\u00ed (skryje se stiskem Ctrl + e).<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/6bbe4ca07442e1e14a462586d14ef98d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u0159i \u00faprav\u00e1ch jak\u00e9hokoliv zdroje (\u201ee\u201c po jeho vybr\u00e1n\u00ed) se otev\u0159e textov\u00fd editor definovan\u00fd v prom\u011bnn\u00fdch prost\u0159ed\u00ed (<code>export EDITOR=vim<\/code>).<\/p>\n<p>A takto vypad\u00e1 podrobn\u00fd popis zdroje (<code>popis<\/code>):<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/05fdb57e3b85d1b81c9bfc6414aca117.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTakov\u00fd v\u00fdstup (nebo v\u00fdstup z prohl\u00ed\u017een\u00ed YAML manifestu zdroje) lze ulo\u017eit pomoc\u00ed obvykl\u00e9 kl\u00e1vesov\u00e9 zkratky Ctrl + s. Kde bude ulo\u017een, bude zn\u00e1mo z zpr\u00e1vy K9s:<\/p>\n<pre><code class=\"plaintext\">Log \/tmp\/k9s-screens-root\/kubernetes\/Describe-1601244920104133900.yml was saved successfully!<\/code><\/pre>\n<p>\nZ vytvo\u0159en\u00fdch z\u00e1lohovac\u00edch soubor\u016f lze tak\u00e9 obnovovat zdroje, p\u0159i\u010dem\u017e p\u0159edt\u00edm je t\u0159eba odstranit syst\u00e9mov\u00e9 \u0161t\u00edtky a anotace. K tomu je nutn\u00e9 p\u0159ej\u00edt do adres\u00e1\u0159e s nimi (<code>:dir \/tmp<\/code>), pot\u00e9 vybrat po\u017eadovan\u00fd soubor a pou\u017e\u00edt <code>apply<\/code>.<\/p>\n<p>Mimochodem, kdykoli se m\u016f\u017eete vr\u00e1tit k p\u0159edchoz\u00edmu ReplicaSetu, pokud m\u00e1te s aktu\u00e1ln\u00edm probl\u00e9m. K tomu je pot\u0159eba vybrat po\u017eadovan\u00fd RS (<code>:rs<\/code> pro jejich seznam):<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/de0ea37d970c51514559288661bdc6f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 a prov\u00e9st rollback pomoc\u00ed Ctrl + l. M\u011bli bychom dostat ozn\u00e1men\u00ed, \u017ee v\u0161echno prob\u011bhlo \u00fasp\u011b\u0161n\u011b:<\/p>\n<pre><code class=\"plaintext\">k9s\/whoami-5cfbdbb469 \u00fasp\u011b\u0161n\u011b vr\u00e1cen zp\u011bt<\/code><\/pre>\n<p>\nA pro \u0161k\u00e1lov\u00e1n\u00ed replik sta\u010d\u00ed stisknout \u201es\u201c (scale) a vybrat po\u017eadovan\u00fd po\u010det instanc\u00ed:<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/145093030db754c9ef85810cbba3ed5c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDo jak\u00e9hokoli z kontejner\u016f se m\u016f\u017eete dostat pomoc\u00ed shellu: k tomu p\u0159ejd\u011bte k po\u017eadovan\u00e9mu podu, stiskn\u011bte \u201es\u201c (shell) a vyberte kontejner.<\/p>\n<h2>Dal\u0161\u00ed mo\u017enosti<\/h2>\n<p>\nSamoz\u0159ejm\u011b, \u017ee je podporov\u00e1no i prohl\u00ed\u017een\u00ed log\u016f (\u201el\u201c pro vybran\u00fd zdroj). A abyste vid\u011bli nov\u00e9 logy, nen\u00ed pot\u0159eba neust\u00e1le ma\u010dkat Enter: sta\u010d\u00ed ud\u011blat zna\u010dkov\u00e1n\u00ed (\u201em\u201c), po kter\u00e9m se budou sledovat pouze nov\u00e9 zpr\u00e1vy.<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/05aa9657f744b9e3d09034862e1befe7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTak\u00e9 v tomto okn\u011b m\u016f\u017eete vybrat \u010dasov\u00e9 obdob\u00ed pro v\u00fdstup log\u016f:<\/p>\n<ul>\n<li> kl\u00e1vesa \u201e1\u201c \u2014 za 1 minutu;<\/li>\n<li> \u201e2\u201c \u2014 5 minut;<\/li>\n<li> \u201e3\u201c \u2014 15 minut;<\/li>\n<li> \u201e4\u201c \u2014 30 minut;<\/li>\n<li> \u201e5\u201c \u2014 1 hodina;<\/li>\n<li> \u201e0\u201c \u2014 po celou dobu \u017eivota pod&#8217;u.<\/li>\n<\/ul>\n<p>\nSpeci\u00e1ln\u00ed pracovn\u00ed re\u017eim Pulse (p\u0159\u00edkaz <code>:pulse<\/code>) zobrazuje obecn\u00e9 informace o Kubernetes klastru:<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/413d241ad7518f49c523fa59f51702a6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV n\u011bm m\u016f\u017eete vid\u011bt mno\u017estv\u00ed zdroj\u016f a jejich stav (zelen\u011b jsou zobrazeny ty, kter\u00e9 maj\u00ed status <code>Dokon\u010deno<\/code>).<\/p>\n<p>Dal\u0161\u00ed zaj\u00edmavou funkc\u00ed K9s se naz\u00fdv\u00e1 <b>Popeye<\/b>. Kontroluje v\u0161echny zdroje podle ur\u010dit\u00fdch krit\u00e9ri\u00ed spr\u00e1vnosti a vyhodnocuje v\u00fdsledn\u00fd \u201erating\u201c s vysv\u011btlen\u00edm. Nap\u0159\u00edklad lze vid\u011bt, \u017ee chyb\u00ed limity nebo \u017ee n\u011bjak\u00fd kontejner m\u016f\u017ee b\u011b\u017eet pod rootem\u2026<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/a6bc5ea45b5749fb4e1038b82374b3c4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nExistuje z\u00e1kladn\u00ed podpora pro Helm. Nap\u0159\u00edklad takto m\u016f\u017eete zobrazit vyd\u00e1n\u00ed nasazen\u00e1 v klastru:<\/p>\n<pre><code class=\"bash\">:helm all # v\u0161echna\n:helm $namespace # ve konkr\u00e9tn\u00edm jmenn\u00e9m prostoru\n<\/code><\/pre>\n<p><\/p>\n<h2>Benchmark<\/h2>\n<p>\nV K9s je dokonce zabudovan\u00fd <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/rakyll\/hey\">hey<\/a><\/noindex> \u2014 to je jednoduch\u00fd gener\u00e1tor z\u00e1t\u011b\u017ee pro HTTP server, alternativa zn\u00e1m\u011bj\u0161\u00edmu ab (ApacheBench).<\/p>\n<p>Pro jeho aktivaci je pot\u0159eba povolit port-forward v podu. K tomu vyberte pod a stiskn\u011bte Shift + f, p\u0159ejd\u011bte do podmenu port-forward pomoc\u00ed aliasu \u201epf\u201c.<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/651f25269c0998c716ab9c0c4b5e0455.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPo v\u00fdb\u011bru portu a stisknut\u00ed Ctrl + b se benchmark spust\u00ed. V\u00fdsledky jeho pr\u00e1ce jsou ulo\u017eeny v <code>\/tmp<\/code> a jsou k dispozici pro n\u00e1sledn\u00e9 prohl\u00ed\u017een\u00ed v K9s. <\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/57b2fe1d078e9aca1c6afccd318094da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/3b2bf031e8442e47eb3482187ac5b64d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPro zm\u011bnu konfigurace benchmarku je pot\u0159eba vytvo\u0159it soubor <code>$HOME\/.k9s\/bench-.yml<\/code> (definovan\u00fd pro ka\u017ed\u00fd klastr).<\/p>\n<p><i>NB: D\u016fle\u017eit\u00e9 je, aby p\u0159\u00edpona v\u0161ech YAML soubor\u016f v adres\u00e1\u0159i <code>.k9s<\/code> byla p\u0159esn\u011b <code>.yml<\/code> (<code>.yaml<\/code> nefunguje spr\u00e1vn\u011b).<\/i><\/p>\n<p>P\u0159\u00edklad konfigurace:<\/p>\n<pre><code class=\"bash\">benchmarks:\n  defaults:\n    # Po\u010det vl\u00e1ken\n    concurrency: 2\n    # Po\u010det po\u017eadavk\u016f\n    requests: 1000\n  containers:\n    # Nastaven\u00ed pro kontejner s benchmarkem\n    # Kontejner je definov\u00e1n jako 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    # Lze prov\u00e1d\u011bt benchmarky na slu\u017eb\u00e1ch typu NodePort a LoadBalancer\n    # Syntaxe: 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>Rozhran\u00ed<\/h2>\n<p>\nZobrazen\u00ed sloupc\u016f pro seznamy zdroj\u016f se m\u011bn\u00ed vytvo\u0159en\u00edm souboru <code>$HOME\/.k9s\/views.yml<\/code>. P\u0159\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>Opravdu, chyb\u00ed sloupec pro labely, na co\u017e je <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\/issues\/605\">issue v projektu<\/a><\/noindex>.<\/i><\/p>\n<p>\u0158azen\u00ed podle sloupc\u016f se prov\u00e1d\u00ed kl\u00e1vesov\u00fdmi zkratkami:<\/p>\n<ul>\n<li> Shift + n \u2014 podle jm\u00e9na;<\/li>\n<li> Shift + o \u2014 podle uzl\u016f;<\/li>\n<li> Shift + i \u2014 podle IP;<\/li>\n<li> Shift + a \u2014 podle doby \u017eivotnosti kontejneru;<\/li>\n<li> Shift + t \u2014 podle po\u010dtu restart\u016f;<\/li>\n<li> Shift + r \u2014 podle stavu p\u0159ipravenosti;<\/li>\n<li> Shift + c \u2014 podle spot\u0159eby CPU;<\/li>\n<li> Shift + m \u2014 podle spot\u0159eby pam\u011bti.<\/li>\n<\/ul>\n<p>\nPokud se n\u011bkomu nel\u00edb\u00ed v\u00fdchoz\u00ed barevn\u00e9 sch\u00e9ma, v K9s je dokonce podporov\u00e1no <noindex><a rel=\"nofollow\" href=\"https:\/\/k9scli.io\/topics\/skins\/\">skin\u016f<\/a><\/noindex>. Hotov\u00e9 p\u0159\u00edklady (7 kus\u016f) jsou k dispozici <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\/tree\/master\/skins\">zde<\/a><\/noindex>. Zde je p\u0159\u00edklad jednoho z t\u011bchto skin\u016f <i>(in the navy)<\/i>:<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/4a4378f2c2d36eb3985e2b71d733c444.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Pluginy<\/h2>\n<p>\nNakonec <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\/tree\/master\/plugins\">plugins<\/a><\/noindex> umo\u017e\u0148uj\u00ed roz\u0161\u00ed\u0159it funk\u010dnost K9s. S\u00e1m jsem v pr\u00e1ci pou\u017e\u00edval pouze jeden z nich \u2014 <code>kubectl get all -n $namespace<\/code>.<\/p>\n<p>Vypad\u00e1 to takto. Vytvo\u0159te soubor <code>$HOME\/.k9s\/plugin.yml<\/code> s t\u00edmto obsahem:<\/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>\nNyn\u00ed se m\u016f\u017eete p\u0159epnout do prostoru jmen a stisknout \u201eg\u201c pro proveden\u00ed p\u0159\u00edslu\u0161n\u00e9ho p\u0159\u00edkazu:<\/p>\n<p><img decoding=\"async\" alt=\"P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/c79bbf26b6c321a97cedabf22f1699b9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMezi pluginy jsou nap\u0159\u00edklad integrace s kubectl-jq a n\u00e1strojem pro prohl\u00ed\u017een\u00ed log\u016f <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wercker\/stern\">stern<\/a><\/noindex>.<\/p>\n<h2>Z\u00e1v\u011br<\/h2>\n<p>\nPodle m\u00e9ho n\u00e1zoru je K9s velmi pohodln\u00e9 pro pr\u00e1ci: rychle si zvyknete na hled\u00e1n\u00ed v\u0161ech pot\u0159ebn\u00fdch informac\u00ed bez pou\u017eit\u00ed <code>kubectl<\/code>. Pot\u011b\u0161ilo m\u011b prohl\u00ed\u017een\u00ed log\u016f a jejich ukl\u00e1d\u00e1n\u00ed, rychl\u00e9 upravov\u00e1n\u00ed zdroj\u016f, celkov\u00e1 rychlost pr\u00e1ce, re\u017eim Popeye se uk\u00e1zal jako u\u017eite\u010dn\u00fd. Stoj\u00ed za zm\u00ednku mo\u017enosti vytv\u00e1\u0159en\u00ed plugin\u016f a p\u0159izp\u016fsoben\u00ed aplikace vlastn\u00edm pot\u0159eb\u00e1m.<\/p>\n<p><i>* I kdy\u017e jsem si p\u0159i velk\u00e9m objemu log\u016f tak\u00e9 v\u0161iml pomal\u00e9ho fungov\u00e1n\u00ed K9s. V takov\u00fdch chv\u00edl\u00edch n\u00e1stroj \u201ezab\u00edral\u201c 2 j\u00e1dra na Intel Xeon E312xx a n\u011bkdy dokonce zamrzal.<\/i><\/p>\n<p>Co v tuto chv\u00edli chyb\u00ed? Rychl\u00e9 vr\u00e1cen\u00ed se na p\u0159edchoz\u00ed verzi (nejde o RS) bez p\u0159echodu do adres\u00e1\u0159e. Krom\u011b toho se obnova prov\u00e1d\u00ed pouze pro <i>cel\u00e9<\/i> zdroje: pokud odstran\u00edte anotaci nebo \u0161t\u00edtek, budete muset odstranit a obnovit cel\u00fd zdroj (zde bude nutn\u00e9 p\u0159ej\u00edt do adres\u00e1\u0159e). Dal\u0161\u00ed drobnost \u2014 chyb\u00ed datum takov\u00fdch ulo\u017een\u00fdch \u201ez\u00e1loh\u201c.<\/p>\n<h2>P.S.<\/h2>\n<p>\nP\u0159e\u010dt\u011bte si tak\u00e9 n\u00e1\u0161 blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/506948\/\">P\u0159ehled grafick\u00fdch rozhran\u00ed pro Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468041\/\">Ozn\u00e1men\u00ed o webov\u00e9m rozhran\u00ed Kubernetes Web View (a stru\u010dn\u00fd p\u0159ehled dal\u0161\u00edch webov\u00fdch UI pro Kubernetes)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/426985\/\">kubebox a dal\u0161\u00ed konzolov\u00e9 shellov\u00e9 aplikace pro 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.3 - 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\/cs\/blog\/administrirovanie\/obzor-k9s-prodvinutogo-terminalnogo-interfejsa-dlya-kubernetes\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47 P\u0159ehled k9s \u2014 pokro\u010dil\u00e9ho termin\u00e1lov\u00e9ho rozhran\u00ed pro Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/obzor-k9s-prodvinutogo-terminalnogo-interfejsa-dlya-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/97736","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=97736"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/97736\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/97737"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=97736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=97736"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=97736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}