{"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\/sv\/blog\/administrirovanie\/obzor-k9s-prodvinutogo-terminalnogo-interfejsa-dlya-kubernetes","title":{"rendered":"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r 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> tillhandah\u00e5ller ett terminalgr\u00e4nssnitt f\u00f6r att interagera med Kubernetes-kluster. M\u00e5let med detta Open Source-projekt \u00e4r att underl\u00e4tta enkel navigering av applikationer i K8s, \u00f6vervakning av dem samt hantering av dem. K9s \u00f6vervakar kontinuerligt f\u00f6r\u00e4ndringar i Kubernetes och erbjuder snabba kommandon f\u00f6r arbete med de \u00f6vervakade resurserna.<\/p>\n<p>Projektet \u00e4r skrivet i Go och har funnits i mer \u00e4n ett och ett halvt \u00e5r: den f\u00f6rsta committen gjordes den 1 februari 2019. Vid tidpunkten f\u00f6r skrivandet finns det \u00f6ver 9000 stj\u00e4rnor p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\">GitHub<\/a><\/noindex> och cirka 80 bidragsgivare. Vad kan k9s g\u00f6ra?<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Installera och k\u00f6ra<\/h2>\n<p>\nDetta \u00e4r en klientapplikation (i f\u00f6rh\u00e5llande till Kubernetes-klustret) som enklast kan k\u00f6ras som en Docker-bild:<\/p>\n<pre><code class=\"bash\">docker run --rm -it -v $KUBECONFIG:\/root\/.kube\/config quay.io\/derailed\/k9s<\/code><\/pre>\n<p>\nF\u00f6r vissa Linux-distributioner och andra operativsystem finns det \u00e4ven paket som kan installeras. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s#installation\">paket<\/a><\/noindex>I allm\u00e4nhet kan du f\u00f6r Linux-system installera en bin\u00e4rfil:<\/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>\nDet finns inga specifika krav p\u00e5 sj\u00e4lva K8s-klustret. Enligt recensionerna fungerar applikationen \u00e4ven med \u00e4ldre versioner av Kubernetes, som 1.12.<\/p>\n<p>Applikationen startas med hj\u00e4lp av standardkonfigurationsfilen <code>.kube\/config<\/code> \u2014 p\u00e5 ett s\u00e4tt som liknar hur det g\u00f6rs av <code>kubectl<\/code>.<\/p>\n<h2>Navigation<\/h2>\n<p>\nSom standard \u00f6ppnas ett f\u00f6nster med det standardnamnrymd som anges f\u00f6r kontexten. Det vill s\u00e4ga, om du angav <code>kubectl config set-context --current --namespace=test<\/code>, kommer namnomr\u00e5det att \u00f6ppnas <code>test<\/code>. <i>(Om att byta mellan kontexter\/namnrymder, se nedan.) <\/i><\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/820fcbdd376abc95d67bf202f34c880c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00d6verg\u00e5ng till <b>kommandol\u00e4ge<\/b> sker genom att trycka p\u00e5 \u2018:\u2019. Efter det kan du styra k9s med hj\u00e4lp av kommandon \u2014 till exempel f\u00f6r att visa listan \u00f6ver StatefulSets (i det aktuella namnomr\u00e5det) kan du skriva <code>:sts<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/840724fc656b22e67519c53983065862.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6r n\u00e5gra andra Kubernetes-resurser:<\/p>\n<ul>\n<li> <code>:ns<\/code> \u2014 Namnrymder;<\/li>\n<li> <code>:deploy<\/code> \u2014 Distributioner;<\/li>\n<li> <code>:ing<\/code> \u2014 Ingress;<\/li>\n<li> <code>:svc<\/code> \u2014 Tj\u00e4nster.<\/li>\n<\/ul>\n<p>\nF\u00f6r att f\u00e5r en komplett lista \u00f6ver resurstypen som \u00e4r tillg\u00e4ngliga f\u00f6r visning finns det ett kommando <code>:aliases<\/code>.<\/p>\n<p>Det \u00e4r bekv\u00e4mt att se en lista \u00f6ver kommandon som \u00e4r tillg\u00e4ngliga med genv\u00e4gar i det aktuella f\u00f6nstret: f\u00f6r detta r\u00e4cker det att trycka p\u00e5 \u2018?\u2019.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/54d329f9eeda2424f457aef6b977ae63.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI k9s finns det ocks\u00e5 <b>s\u00f6kl\u00e4ge<\/b>, f\u00f6r att \u00f6verg\u00e5 till detta r\u00e4cker det att skriva \u2018\/\u2019. Med det g\u00f6rs s\u00f6kningar i inneh\u00e5llet i det aktuella \u2018f\u00f6nstret\u2019. Anta att om du tidigare har angett <code>:ns<\/code>, har du en lista \u00f6ver namnrymder. Om det finns f\u00f6r m\u00e5nga, s\u00e5 f\u00f6r att slippa scrolla f\u00f6r l\u00e4nge ner, r\u00e4cker det att skriva i f\u00f6nstret med namnrymder. <code>\/mynamespace<\/code>.<\/p>\n<p>F\u00f6r att s\u00f6ka efter labels kan du v\u00e4lja alla pods i det \u00f6nskade namnomr\u00e5det, och sedan skriva till exempel <code>\/ -l app=whoami<\/code>. Vi f\u00e5r en lista \u00f6ver pods med denna label:<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/88b8e09a5b7819bcf49334bf351b040b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00f6kningen fungerar i alla typer av f\u00f6nster, inklusive loggar, visning av YAML-manifest och <code>objektet PVC:<\/code> f\u00f6r resurser \u2014 mer information om dessa m\u00f6jligheter finns nedan.<\/p>\n<p>Hur ser sekvensen f\u00f6r navigation ut generellt?<\/p>\n<p>Med kommandot <code>:ctx<\/code> kan du v\u00e4lja kontext:<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/a5e780a3fc98961913c966222e167d51.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6r att v\u00e4lja namnomr\u00e5de finns det redan n\u00e4mnda kommandot <code>:ns<\/code>, och sedan kan man anv\u00e4nda s\u00f6kfunktionen f\u00f6r det \u00f6nskade namnomr\u00e5det: <code>\/test<\/code>.<\/p>\n<p>Om vi nu v\u00e4ljer den resurs som intresserar oss (till exempel StatefulSet) kommer motsvarande information att visas: hur m\u00e5nga poddar som k\u00f6rs med kort information om dem.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/8e0d8c41b8673b7c29f2605d3ae59503.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKanske vill vi bara se poddar \u2014 d\u00e5 r\u00e4cker det att skriva in <code>:pod<\/code>. N\u00e4r det g\u00e4ller ConfigMaps (<code>:cm<\/code> \u2014 f\u00f6r listan \u00f6ver dessa resurser) kan man v\u00e4lja det intressanta objektet och trycka p\u00e5 \"u\", d\u00e5 kommer K9s att f\u00f6resl\u00e5 vem som specifikt anv\u00e4nder detta CM.<\/p>\n<p>En annan praktisk funktion f\u00f6r att se resurser \u00e4r deras <b>\"r\u00f6ntgen\" (XRay view)<\/b>. Denna l\u00e4ge \u00e5kallas med kommandot <code>:xray RESOURCE<\/code> och... det \u00e4r enklare att visa hur det fungerar \u00e4n att f\u00f6rklara. H\u00e4r \u00e4r en illustration f\u00f6r StatefulSets:<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/de40ebfe06ca935d2bc36323b3f16f3e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>(Varje av dessa resurser kan redigeras, \u00e4ndras, g\u00f6ras <code>objektet PVC:<\/code>.)<\/i><\/p>\n<p>H\u00e4r \u00e4r en Deployment med Ingress:<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/598c1b25b787dcb1cf9660fa730d74c5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Arbeta med resurser<\/h2>\n<p>\nOm varje resurs kan man f\u00e5 information i YAML eller dess <code>objektet PVC:<\/code> genom att trycka p\u00e5 motsvarande tangentkombinationer (\"y\" och \"d\" respektive). Basoperationerna \u00e4r naturligtvis \u00e4nnu fler: deras lista och tangentkombinationer \u00e4r alltid synliga tack vare en bekv\u00e4m \"huvud\" i gr\u00e4nssnittet (den d\u00f6ljs med Ctrl + e).<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/6bbe4ca07442e1e14a462586d14ef98d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVid redigering av vilken resurs som helst (\"e\" efter att ha valt den) \u00f6ppnas en textredigerare som definieras i milj\u00f6variabler (<code>export EDITOR=vim<\/code>).<\/p>\n<p>H\u00e4r \u00e4r hur en detaljerad beskrivning av resursen ser ut (<code>objektet PVC:<\/code>):<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/05fdb57e3b85d1b81c9bfc6414aca117.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDenna utdata (eller utdata fr\u00e5n att visa YAML-manifestet f\u00f6r resursen) kan sparas med den vanliga tangentkombinationen Ctrl + s. Var den sparas blir k\u00e4nt fr\u00e5n meddelandet fr\u00e5n K9s:<\/p>\n<pre><code class=\"plaintext\">Log \/tmp\/k9s-screens-root\/kubernetes\/Describe-1601244920104133900.yml sparad framg\u00e5ngsrikt!<\/code><\/pre>\n<p>\nFr\u00e5n de skapade backupfilerna kan resurser \u00e5terst\u00e4llas, efter att ha tagit bort systemetiketter och anteckningar. F\u00f6r detta kr\u00e4vs det att g\u00e5 till katalogen med dem (<code>:dir \/tmp<\/code>), och sedan v\u00e4lja den n\u00f6dv\u00e4ndiga filen och till\u00e4mpa <code>apply<\/code>.<\/p>\n<p>F\u00f6r att n\u00e4mna det, kan man n\u00e4r som helst \u00e5terg\u00e5 till f\u00f6reg\u00e5ende ReplicaSet om det nuvarande har problem. F\u00f6r att g\u00f6ra detta m\u00e5ste du v\u00e4lja den relevanta RS (<code>:rs<\/code> f\u00f6r deras lista):<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/de0ea37d970c51514559288661bdc6f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 och utf\u00f6ra rollback med hj\u00e4lp av Ctrl + l. Vi b\u00f6r f\u00e5 en avisering om att allt har g\u00e5tt bra:<\/p>\n<pre><code class=\"plaintext\">k9s\/whoami-5cfbdbb469 har \u00e5terst\u00e4llts framg\u00e5ngsrikt<\/code><\/pre>\n<p>\nF\u00f6r att skala upp repliker r\u00e4cker det med att trycka p\u00e5 \u00abs\u00bb (scale) och v\u00e4lja det antal instanser som beh\u00f6vs:<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/145093030db754c9ef85810cbba3ed5c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI vilken container som helst kan du g\u00e5 in med hj\u00e4lp av shell: g\u00e5 till den \u00f6nskade podden, tryck p\u00e5 \u00abs\u00bb (shell) och v\u00e4lj containern.<\/p>\n<h2>Andra m\u00f6jligheter<\/h2>\n<p>\nSj\u00e4lvklart st\u00f6ds \u00e4ven visning av loggar (\u00abl\u00bb f\u00f6r den valda resursen). F\u00f6r att se nya loggar beh\u00f6ver du inte kontinuerligt trycka p\u00e5 Enter: det r\u00e4cker att markera (\u00abm\u00bb), varefter du bara f\u00f6ljder de nya meddelandena.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/05aa9657f744b9e3d09034862e1befe7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI detta f\u00f6nster kan du ocks\u00e5 v\u00e4lja en tidsperiod f\u00f6r loggarna:<\/p>\n<ul>\n<li> tangenten \u00ab1\u00bb \u2014 f\u00f6r 1 minut;<\/li>\n<li> \u00ab2\u00bb \u2014 5 minuter;<\/li>\n<li> \u00ab3\u00bb \u2014 15 minuter;<\/li>\n<li> \u00ab4\u00bb \u2014 30 minuter;<\/li>\n<li> \u00ab5\u00bb \u2014 1 timme;<\/li>\n<li> \u201e0\u201c \u2014 f\u00f6r hela livsl\u00e4ngden av podden.<\/li>\n<\/ul>\n<p>\nEtt speciellt l\u00e4ge i Pulse (kommandot <code>:pulse<\/code>) visar allm\u00e4n information om Kubernetes-klustret:<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/413d241ad7518f49c523fa59f51702a6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nH\u00e4r kan du se antalet resurser och deras status (de med status visas i gr\u00f6nt <code>Running<\/code>).<\/p>\n<p>En annan intressant funktion i K9s kallas <b>Popeye<\/b>. Den kontrollerar alla resurser efter vissa korrekthetskriterier och ger en \u00abbetyg\u00bb med f\u00f6rklaringar. Till exempel kan du se att det saknas begr\u00e4nsningar eller gr\u00e4nser, och att en viss container kan k\u00f6ras som root\u2026<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/a6bc5ea45b5749fb4e1038b82374b3c4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDet finns grundl\u00e4ggande st\u00f6d f\u00f6r Helm. Till exempel kan du p\u00e5 detta s\u00e4tt se vilka releaser som har distribuerats till klustret:<\/p>\n<pre><code class=\"bash\">:helm all # alla\n:helm $namespace # i ett specifikt namnrymd\n<\/code><\/pre>\n<p><\/p>\n<h2>Benchmark<\/h2>\n<p>\nI K9s har de till och med byggt in <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/rakyll\/hey\">hey<\/a><\/noindex> \u2014 det \u00e4r en enkel belastningstestare f\u00f6r HTTP-servrar, ett alternativ till den mer k\u00e4nda ab (ApacheBench).<\/p>\n<p>F\u00f6r att aktivera det beh\u00f6ver du aktivera port-forward i podden. V\u00e4lj podden och tryck p\u00e5 Shift + f, g\u00e5 till undermenyn port-forward med aliaset \u00abpf\u00bb.<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/651f25269c0998c716ab9c0c4b5e0455.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEfter val av port och tryck p\u00e5 Ctrl + b startas sj\u00e4lva benchmarket. Resultaten av dess arbete sparas i <code>\/tmp<\/code> och \u00e4r tillg\u00e4ngliga f\u00f6r efterf\u00f6ljande visning i K9s. <\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/57b2fe1d078e9aca1c6afccd318094da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/3b2bf031e8442e47eb3482187ac5b64d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nF\u00f6r att \u00e4ndra benchmark-konfigurationen m\u00e5ste du skapa en fil <code>$HOME\/.k9s\/bench-.yml<\/code> (det best\u00e4ms f\u00f6r varje kluster).<\/p>\n<p><i>NB: Viktigt att alla YAML-filer i katalogen <code>.k9s<\/code> har just <code>.yml<\/code> (<code>.yaml<\/code> fungerar inte korrekt).<\/i><\/p>\n<p>Exempelkonfiguration:<\/p>\n<pre><code class=\"bash\">benchmarks:\n  defaults:\n    # Antal tr\u00e5dar\n    concurrency: 2\n    # Antal f\u00f6rfr\u00e5gningar\n    requests: 1000\n  containers:\n    # Inst\u00e4llningar f\u00f6r containern med benchmark\n    # Containern definieras som namespace\/pod-namn:container-namn\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    # Du kan k\u00f6ra benchmarker p\u00e5 tj\u00e4nster av typen NodePort och LoadBalancer\n    # Syntax: namespace\/tj\u00e4nst-namn\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>Gr\u00e4nssnitt<\/h2>\n<p>\nVisning av kolumner f\u00f6r resurslistor modifieras genom att skapa en fil <code>$HOME\/.k9s\/views.yml<\/code>. Exempel p\u00e5 inneh\u00e5llet \u00e4r:<\/p>\n<pre><code class=\"plaintext\">k9s:\n views:\n   v1\/pods:\n     columns:\n       - \u00c5LDER\n       - NAMESPACE\n       - NAMN\n       - IP\n       - NOD\n       - STATUS\n       - KLAR\n   v1\/services:\n     columns:\n       - \u00c5LDER\n       - NAMESPACE\n       - NAMN\n       - TYP\n       - KLUSTER-IP\n<\/code><\/pre>\n<p>\n<i>Det saknas dock en kolumn f\u00f6r etiketter, vilket finns som <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\/issues\/605\">ett \u00e4rende i projektet<\/a><\/noindex>.<\/i><\/p>\n<p>Sortering av kolumner g\u00f6rs med tangentkombinationer:<\/p>\n<ul>\n<li> Shift + n \u2014 efter namn;<\/li>\n<li> Shift + o \u2014 efter noder;<\/li>\n<li> Shift + i \u2014 efter IP;<\/li>\n<li> Shift + a \u2014 efter beh\u00e5llarens livstid;<\/li>\n<li> Shift + t \u2014 efter antalet omstarter;<\/li>\n<li> Shift + r \u2014 efter status f\u00f6r beredskap;<\/li>\n<li> Shift + c \u2014 efter CPU-anv\u00e4ndning;<\/li>\n<li> Shift + m \u2014 efter minnesanv\u00e4ndning.<\/li>\n<\/ul>\n<p>\nOm n\u00e5gon inte gillar den f\u00f6rvalda f\u00e4rgs\u00e4ttningen, st\u00f6der K9s till och med <noindex><a rel=\"nofollow\" href=\"https:\/\/k9scli.io\/topics\/skins\/\">teman<\/a><\/noindex>. F\u00e4rdiga exempel (7 stycken) finns tillg\u00e4ngliga <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\/tree\/master\/skins\">h\u00e4r<\/a><\/noindex>. H\u00e4r \u00e4r ett exempel p\u00e5 ett av dessa teman <i>(in the navy)<\/i>:<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/4a4378f2c2d36eb3985e2b71d733c444.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Plugins<\/h2>\n<p>\nSlutligen, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\/tree\/master\/plugins\">plugins<\/a><\/noindex> \u00f6kar K9s m\u00f6jligheter. Jag har sj\u00e4lv anv\u00e4nt bara ett av dem \u2014 <code>kubectl get all -n $namespace<\/code>.<\/p>\n<p>Det ser ut p\u00e5 f\u00f6ljande s\u00e4tt. Vi skapar en fil <code>$HOME\/.k9s\/plugin.yml<\/code> med f\u00f6ljande inneh\u00e5ll:<\/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>\nNu kan vi g\u00e5 till namnomr\u00e5det och trycka p\u00e5 \"g\" f\u00f6r att utf\u00f6ra kommandot:<\/p>\n<p><img decoding=\"async\" alt=\"\u00d6versikt \u00f6ver k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/c79bbf26b6c321a97cedabf22f1699b9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBland plugins finns till exempel integrationer med kubectl-jq och loggvisningsverktyget <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wercker\/stern\">stern<\/a><\/noindex>.<\/p>\n<h2>Slutsats<\/h2>\n<p>\nEfter min mening har K9s visat sig vara mycket anv\u00e4ndbar: man v\u00e4njer sig snabbt vid att hitta allt utan att anv\u00e4nda <code>kubectl<\/code>. Jag blev glad \u00f6ver loggvisningen och deras sparande, snabb redigering av resurser, och hastigheten i allm\u00e4nhet*, fungerade l\u00e4get Popeye bra. M\u00f6jligheten att skapa plugins och anpassa applikationen efter egna behov f\u00f6rtj\u00e4nar s\u00e4rskild uppm\u00e4rksamhet.<\/p>\n<p><i>* \u00c4ven om jag har m\u00e4rkt att K9s arbetar l\u00e5ngsamt vid stora loggningsvolymer. Under s\u00e5dana tider \"\u00e5t\" verktyget 2 k\u00e4rnor av Intel Xeon E312xx och kunde till och med frysa.<\/i><\/p>\n<p>Vad saknas just nu? En snabb \u00e5terg\u00e5ng till en tidigare version (inte RS) utan att g\u00e5 in i katalogen. Dessutom sker \u00e5terst\u00e4llningen endast f\u00f6r <i>alla<\/i> resursen: om du har tagit bort en annotation eller etikett m\u00e5ste du ta bort och \u00e5terst\u00e4lla hela resursen (och h\u00e4r m\u00e5ste du g\u00e5 in i katalogen). En annan sm\u00e5sak \u2014 det saknas datum f\u00f6r s\u00e5dana sparade \"backup-filer\".<\/p>\n<h2>P.S.<\/h2>\n<p>\nL\u00e4s \u00e4ven i v\u00e5r blogg:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/506948\/\">\u00d6versikt \u00f6ver grafiska gr\u00e4nssnitt f\u00f6r Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468041\/\">Tillk\u00e4nnagivande av Kubernetes Web View-webbgr\u00e4nssnittet (och en kort \u00f6versikt \u00f6ver andra web UI f\u00f6r Kubernetes)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/426985\/\">kubebox och andra konsolskal f\u00f6r Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>K\u00e4lla: <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\/sv\/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=\"sv_SE\" \/>\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\/sv\/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\u00d6versikt av k9s \u2014 en avancerad terminalgr\u00e4nssnitt f\u00f6r Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/obzor-k9s-prodvinutogo-terminalnogo-interfejsa-dlya-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/97736","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=97736"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/97736\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/97737"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=97736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=97736"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=97736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}