{"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\/da\/blog\/administrirovanie\/obzor-k9s-prodvinutogo-terminalnogo-interfejsa-dlya-kubernetes","title":{"rendered":"Oversigt over k9s - et avanceret terminalinterface til Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til 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> giver et terminalinterface til interaktion med Kubernetes-klynger. M\u00e5let med dette Open Source-projekt er at lette navigationen i applikationer i K8s, overv\u00e5gning af dem og h\u00e5ndtering af dem. K9s f\u00f8lger konstant med i \u00e6ndringer i Kubernetes og tilbyder hurtige kommandoer til arbejde med de overv\u00e5gede ressourcer.<\/p>\n<p>Projektet er skrevet i Go og har eksisteret i mere end halvandet \u00e5r: den f\u00f8rste commit blev lavet den 1. februar 2019. P\u00e5 tidspunktet for artiklens skrivning er der mere end 9000 stjerner p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\">GitHub<\/a><\/noindex> og omkring 80 bidragydere. Lad os se, hvad k9s kan?<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Installation og opstart<\/h2>\n<p>\nDet er en klientapplikation (i forhold til Kubernetes-klyngen), som nemmest kan startes som et Docker-billede:<\/p>\n<pre><code class=\"bash\">docker run --rm -it -v $KUBECONFIG:\/.kube\/config quay.io\/derailed\/k9s<\/code><\/pre>\n<p>\nDer er ogs\u00e5 f\u00e6rdige installationspakker til nogle Linux-distributioner og andre operativsystemer. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s#installation\">pakker<\/a><\/noindex>Generelt kan man installere den bin\u00e6re fil til Linux-systemer:<\/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>\nDer er ingen specifikke krav til selve K8s-klyngen. If\u00f8lge anmeldelser fungerer applikationen ogs\u00e5 med \u00e6ldre versioner af Kubernetes, som 1.12.<\/p>\n<p>Applikationen startes ved hj\u00e6lp af standardkonfigurationen <code>.kube\/config<\/code> \u2014 svarende til det, som <code>kubectl<\/code>.<\/p>\n<h2>Navigation<\/h2>\n<p>\nSom standard \u00e5bnes et vindue med det standard namespace, der er angivet for konteksten. Det vil sige, hvis du har skrevet <code>kubectl config set-context --current --namespace=test<\/code>, s\u00e5 vil namespace <code>test<\/code>. <i>(Om \u00e6ndring af kontekster\/namespaces se nedenfor.) <\/i><\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/820fcbdd376abc95d67bf202f34c880c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOvergangen til <b>kommandotilstand<\/b> finder sted ved at trykke p\u00e5 \":\". Derefter kan man styre k9s med kommandoer - for eksempel for at se listen over StatefulSets (i det aktuelle namespace) kan man indtaste <code>:sts<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/840724fc656b22e67519c53983065862.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor nogle andre Kubernetes-reserver:<\/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>\nFor at vise den fulde liste af ressource typer, der er tilg\u00e6ngelige for visning, er der kommandoen <code>:aliases<\/code>.<\/p>\n<p>Det er praktisk at se listen over kommandoer, der er tilg\u00e6ngelige via genvejstaster i det nuv\u00e6rende vindue: for dette er det tilstr\u00e6kkeligt at trykke p\u00e5 \"?\".<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/54d329f9eeda2424f457aef6b977ae63.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK9s har ogs\u00e5 en <b>s\u00f8gemode<\/b>, for at skifte til den skal man blot indtaste \"\/\". Med den kan man s\u00f8ge i indholdet af det nuv\u00e6rende \"vindue\". Antag, at du tidligere har indtastet <code>:ns<\/code>, du har \u00e5bnet listen over navnerum. Hvis der er for mange, s\u00e5 for at undg\u00e5 langscrolling nedad, er det nok at indtaste <code>\/mynamespace<\/code>.<\/p>\n<p>For searching by labels, you can select all pods in the desired namespace, after which you can enter, for example, <code>\/ -l app=whoami<\/code>. We will receive a list of pods with this label:<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/88b8e09a5b7819bcf49334bf351b040b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00f8gningen virker i alle typer vinduer, inklusiv logs, visning af YAML-manifester og <code>describe<\/code> for ressourcer \u2014 mere om disse funktioner nedenfor.<\/p>\n<p>Hvordan ser sekvensen af handlinger ud for navigation?<\/p>\n<p>Med kommandoen <code>:ctx<\/code> kan man v\u00e6lge konteksten:<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/a5e780a3fc98961913c966222e167d51.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor at v\u00e6lge navnerummet er der allerede n\u00e6vnt kommandoen <code>:ns<\/code>, og derefter kan man bruge s\u00f8gningen til det \u00f8nskede rum: <code>\/test<\/code>.<\/p>\n<p>Hvis vi nu v\u00e6lger den ressource, der interesserer os (for eksempel den samme StatefulSet), vil der komme information frem om den: hvor mange pods der k\u00f8rer med korte oplysninger om dem.<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/8e0d8c41b8673b7c29f2605d3ae59503.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00e5ske er kun pods interessante \u2014 i s\u00e5 fald er det nok at indtaste <code>:pod<\/code>. In the case of ConfigMaps (<code>:cm<\/code> \u2014 for listen over disse ressourcer) kan man v\u00e6lge den interessante genstand og trykke p\u00e5 \u00abu\u00bb, hvorefter K9s vil informere om, hvem der specifikt bruger den (denne CM).<\/p>\n<p>Endnu en praktisk funktion til visning af ressourcer \u2014 deres <b>\u00abr\u00f8ntgen\u00bb (XRay view)<\/b>. Denne tilstand aktiveres med kommandoen <code>:xray RESOURCE<\/code> og\u2026 det er lettere at vise, hvordan det fungerer, end at forklare. Her er en illustration for StatefulSets:<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/de40ebfe06ca935d2bc36323b3f16f3e.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>(Hver af disse ressourcer kan redigeres, \u00e6ndres, g\u00f8res <code>describe<\/code>.)<\/i><\/p>\n<p>Og her er Deployment med Ingress:<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/598c1b25b787dcb1cf9660fa730d74c5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Arbejdet med ressourcer<\/h2>\n<p>\nOm hver ressource kan man f\u00e5 information i YAML eller dens <code>describe<\/code> ved at trykke p\u00e5 de tilsvarende tastaturkombinationer (\u00aby\u00bb og \u00abd\u00bb henholdsvis). Der er selvf\u00f8lgelig flere grundl\u00e6ggende operationer: deres liste og tastaturkombinationer er altid synlige takket v\u00e6re den praktiske \u00abheader\u00bb i gr\u00e6nsefladen (den skjules ved at trykke p\u00e5 Ctrl + e).<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/6bbe4ca07442e1e14a462586d14ef98d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVed redigering af enhver ressource (\u00abe\u00bb efter valg) \u00e5bnes den teksteditor, der er defineret i milj\u00f8variablerne (<code>export EDITOR=vim<\/code>).<\/p>\n<p>Og s\u00e5dan ser den detaljerede beskrivelse af ressourcen ud (<code>describe<\/code>):<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/05fdb57e3b85d1b81c9bfc6414aca117.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nS\u00e5dan en output (eller output af visning af YAML-manifestet for ressourcen) kan gemmes med den velkendte tastaturkombination Ctrl + s. Hvor det gemmes, vil v\u00e6re kendt fra meddelelsen fra K9s:<\/p>\n<pre><code class=\"plaintext\">Log \/tmp\/k9s-screens-root\/kubernetes\/Describe-1601244920104133900.yml gemt med succes!<\/code><\/pre>\n<p>\nFra de oprettede backup-filer kan ressourcer gendannes ved f\u00f8rst at fjerne systemm\u00e6rker og annotationer. For dette kr\u00e6ves det at navigere til mappen med dem (<code>:dir \/tmp<\/code>), hvorefter den \u00f8nskede fil v\u00e6lges og anvendes. <code>apply<\/code>.<\/p>\n<p>For at sige det p\u00e5 en anden m\u00e5de, kan man til enhver tid rulle tilbage til en tidligere ReplicaSet, hvis der er problemer med den nuv\u00e6rende. For dette skal den \u00f8nskede RS v\u00e6lges (<code>:rs<\/code> til listen):<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/de0ea37d970c51514559288661bdc6f2.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u2026 og udf\u00f8re rollback ved hj\u00e6lp af Ctrl + l. Vi skal modtage en meddelelse om, at alt er g\u00e5et godt:<\/p>\n<pre><code class=\"plaintext\">k9s\/whoami-5cfbdbb469 er rullet tilbage med succes<\/code><\/pre>\n<p>\nOg for at skalere replikaterne, skal du blot trykke p\u00e5 \u00abs\u00bb (scale) og v\u00e6lge det \u00f8nskede antal instanser:<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/145093030db754c9ef85810cbba3ed5c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI enhver af containerne kan du f\u00e5 adgang via shell: g\u00e5 til den \u00f8nskede pod, tryk p\u00e5 \u00abs\u00bb (shell) og v\u00e6lg containeren.<\/p>\n<h2>Andre funktioner<\/h2>\n<p>\nSelvf\u00f8lgelig underst\u00f8ttes visning af logs ogs\u00e5 (\u00abl\u00bb for den valgte ressource). For at se nye logs skal du ikke konstant trykke p\u00e5 Enter: det er nok at markere (\u00abm\u00bb), hvorefter kun nye meddelelser f\u00f8lges.<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/05aa9657f744b9e3d09034862e1befe7.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI samme vindue kan du ogs\u00e5 v\u00e6lge en tidsramme for output af logs:<\/p>\n<ul>\n<li> tast \u00ab1\u00bb \u2014 for 1 minut;<\/li>\n<li> \u00ab2\u00bb \u2014 5 minutter;<\/li>\n<li> \u00ab3\u00bb \u2014 15 minutter;<\/li>\n<li> \u00ab4\u00bb \u2014 30 minutter;<\/li>\n<li> \u00ab5\u00bb \u2014 1 time;<\/li>\n<li> \u00ab0\u00bb \u2014 for the entire lifetime of the pod.<\/li>\n<\/ul>\n<p>\nDen specielle arbejdsmetode Pulse (kommando <code>:pulse<\/code>) viser generelle oplysninger om Kubernetes-klusteret:<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/413d241ad7518f49c523fa59f51702a6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHer kan du se antallet af ressourcer og deres tilstand (de, der har status, vises i gr\u00f8nt. <code>K\u00f8rende<\/code>).<\/p>\n<p>En anden interessant funktion i K9s kaldes <b>Popeye<\/b>. Den kontrollerer alle ressourcer baseret p\u00e5 bestemte korrekthedskriterier og giver den resulterende \u00abvurdering\u00bb med forklaringer. For eksempel kan du se, at der mangler begr\u00e6nsninger eller gr\u00e6nser, og at en container kan k\u00f8re som root\u2026<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/a6bc5ea45b5749fb4e1038b82374b3c4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDer er grundl\u00e6ggende support for Helm. For eksempel kan du se udgivelserne, der er deployet til klusteret:<\/p>\n<pre><code class=\"bash\">:helm all # alt\n:helm $namespace # i et bestemt navnerum\n<\/code><\/pre>\n<p><\/p>\n<h2>Benchmark<\/h2>\n<p>\nI K9s er der endda indbygget <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/rakyll\/hey\">hey<\/a><\/noindex> \u2014 en simpel belastningsgenerator til HTTP-serveren, et alternativ til det mere kendte ab (ApacheBench).<\/p>\n<p>For at aktivere det kr\u00e6ves port-forward aktivering i pod'en. V\u00e6lg pod og tryk p\u00e5 Shift + f, g\u00e5 til undermenuen port-forward med aliaset \u00abpf\u00bb.<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/651f25269c0998c716ab9c0c4b5e0455.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEfter at have valgt porten og trykket p\u00e5 Ctrl + b starter benchmarken. Resultaterne gemmes i <code>\/tmp<\/code> og er tilg\u00e6ngelige for senere visning i K9s. <\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/57b2fe1d078e9aca1c6afccd318094da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/3b2bf031e8442e47eb3482187ac5b64d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nFor at \u00e6ndre konfigurationen af benchmark\u2019en skal du oprette en fil <code>$HOME\/.k9s\/bench-.yml<\/code> (defineres for hver klynge).<\/p>\n<p><i>NB: Det er vigtigt, at alle YAML-filer i mappen <code>.k9s<\/code> har endelsen <code>.yml<\/code> (<code>.yaml<\/code> fungerer ikke korrekt).<\/i><\/p>\n<p>Eksempel p\u00e5 konfiguration:<\/p>\n<pre><code class=\"bash\">benchmarks:\n  defaults:\n    # Number of threads\n    concurrency: 2\n    # Number of requests\n    requests: 1000\n  containers:\n    # Settings for the benchmarking container\n    # The container is defined as 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    # Benchmarking can be conducted on services like NodePort and 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>Interface<\/h2>\n<p>\nVisningen af kolonner for ressource lister \u00e6ndres ved at oprette en fil <code>$HOME\/.k9s\/views.yml<\/code>. Eksempel p\u00e5 indholdet:<\/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>Dog er der manglende kolonne til labels, hvilket der er <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\/issues\/605\">et issue i projektet<\/a><\/noindex>.<\/i><\/p>\n<p>Sortering efter kolonner udf\u00f8res med tastaturkombinationer:<\/p>\n<ul>\n<li> Shift + n \u2014 efter navn;<\/li>\n<li> Shift + o \u2014 efter noder;<\/li>\n<li> Shift + i \u2014 efter IP;<\/li>\n<li> Shift + a \u2014 efter containerens levetid;<\/li>\n<li> Shift + t \u2014 efter antal genstart;<\/li>\n<li> Shift + r \u2014 efter status for beredskab;<\/li>\n<li> Shift + c \u2014 efter CPU-forbrug;<\/li>\n<li> Shift + m \u2014 efter hukommelsesforbrug.<\/li>\n<\/ul>\n<p>\nHvis nogen ikke kan lide det standard farveskema, underst\u00f8tter K9s endda <noindex><a rel=\"nofollow\" href=\"https:\/\/k9scli.io\/topics\/skins\/\">skins<\/a><\/noindex>. Klar til eksempler (7 stykker) tilg\u00e6ngelige <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\/tree\/master\/skins\">her<\/a><\/noindex>. Her er et eksempel p\u00e5 et af disse skins <i>(in the navy)<\/i>:<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/4a4378f2c2d36eb3985e2b71d733c444.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Plugins<\/h2>\n<p>\nEndelig, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/derailed\/k9s\/tree\/master\/plugins\">plugins<\/a><\/noindex> muligg\u00f8r udvidelse af K9s' kapaciteter. Personligt har jeg kun brugt en af dem \u2014 <code>kubectl get all -n $namespace<\/code>.<\/p>\n<p>Det ser s\u00e5ledes ud. Vi opretter en fil <code>$HOME\/.k9s\/plugin.yml<\/code> med f\u00f8lgende indhold:<\/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 du g\u00e5 til navnerummet og trykke p\u00e5 \"g\" for at udf\u00f8re den p\u00e5g\u00e6ldende kommando:<\/p>\n<p><img decoding=\"async\" alt=\"Oversigt over k9s - et avanceret terminalinterface til Kubernetes\" src=\"\/wp-content\/uploads\/2020\/10\/c79bbf26b6c321a97cedabf22f1699b9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nBlandt plugins findes der for eksempel integrationer med kubectl-jq og en logvisningsv\u00e6rkt\u00f8j <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wercker\/stern\">stern<\/a><\/noindex>.<\/p>\n<h2>Konklusion<\/h2>\n<p>\nEfter min mening har K9s vist sig at v\u00e6re meget praktisk at arbejde med: man v\u00e6nner sig hurtigt til at finde alt det n\u00f8dvendige uden brug <code>kubectl<\/code>. Jeg blev positivt overrasket over logvisningen og dennes gemmefunktion, hurtig redigering af ressourcer, og den generelle ydeevne. Way Popeye viste sig at v\u00e6re nyttig. Det er ogs\u00e5 v\u00e6rd at n\u00e6vne muligheden for at oprette plugins og tilpasse applikationen til ens behov.<\/p>\n<p><i>* Selvom jeg ved store m\u00e6ngder logs ogs\u00e5 har bem\u00e6rket langsom ydeevne fra K9s. I s\u00e5danne \u00f8jeblikke brugte v\u00e6rkt\u00f8jet 2 kerner fra Intel Xeon E312xx og kunne endda fryse.<\/i><\/p>\n<p>Hvad mangler i \u00f8jeblikket? En hurtig tilbagekobling til den tidligere version (ikke RS) uden at skifte mappe. Desuden sker genoprettelsen kun for <i>alle<\/i> ressourcen: hvis du har slettet en annotation eller et label, er du n\u00f8dt til at slette og genskabe hele ressourcen (her er det n\u00f8dvendigt at skifte mappe). En anden lille ting \u2014 der mangler datoer for s\u00e5danne gemte 'backups'.<\/p>\n<h2>P.S.<\/h2>\n<p>\nL\u00e6s ogs\u00e5 p\u00e5 vores blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/506948\/\">Oversigt over grafiske gr\u00e6nseflader til Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/468041\/\">Annoncering af Kubernetes Web View-gr\u00e6nsefladen (og en kort oversigt over andre web-UI'er til Kubernetes)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/426985\/\">kubebox og andre kommandolinjegr\u00e6nseflader til Kubernetes<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Kilde: <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\/da\/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=\"da_DK\" \/>\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\/da\/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\udd47Gennemgang af k9s \u2014 avanceret terminalgr\u00e6nseflade til Kubernetes | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/obzor-k9s-prodvinutogo-terminalnogo-interfejsa-dlya-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/97736","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=97736"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/97736\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/97737"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=97736"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=97736"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=97736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}