Преглед на k9s - напреден терминален интерфејс за Kubernetes

Преглед на k9s - напреден терминален интерфејс за Kubernetes

K9s обезбедува терминален кориснички интерфејс за интеракција со кластерите на Kubernetes. Целта на овој проект со отворен код е да го олесни навигацијата, следењето и управувањето со апликациите во K8s. K9s постојано ги следи промените во Kubernetes и обезбедува брзи команди за работа со набљудуваните ресурси.

Проектот е напишан во Go и постои повеќе од една и пол година: првото обврзување беше направено на 1 февруари 2019 година. Во моментот на пишување, има над 9000 ѕвезди GitHub и околу 80 соработници. Ајде да видиме што можат да направат k9s?

Инсталација и лансирање

Ова е апликација за клиент (во однос на кластерот Kubernetes), која најлесно се извршува како Docker слика:

docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s

За некои дистрибуции на Linux и други оперативни системи има и подготвени за инсталирање пакети. Општо земено, за Linux системи можете да ја инсталирате бинарната датотека:

sudo wget -qO- https://github.com/derailed/k9s/releases/download/v0.22.0/k9s_Linux_x86_64.tar.gz | tar zxvf -  -C /tmp/
sudo mv /tmp/k9s /usr/local/bin

Нема специфични барања за самиот кластер K8s. Судејќи според прегледите, апликацијата работи и со постари верзии на Kubernetes како 1.12.

Апликацијата започнува да ја користи стандардната конфигурација .kube/config - слично како тоа kubectl.

Навигација

Стандардно, се отвора прозорец со стандардниот именски простор наведен за контекстот. Тоа е, ако сте напишале kubectl config set-context --current --namespace=test, тогаш ќе се отвори именскиот простор test. (Видете подолу за промена на контексти/имиња.)

Преглед на k9s - напреден терминален интерфејс за Kubernetes

Оди до режим на команда се врши со кликнување на „:“. Потоа можете да контролирате како функционира k9s користејќи команди - на пример, за да видите листа на StatefulSets (во тековниот именски простор) можете да внесете :sts.

Преглед на k9s - напреден терминален интерфејс за Kubernetes

За некои други ресурси на Кубернетес:

  • :ns - Простори со имиња;
  • :deploy — Распоредувања;
  • :ing - Влез;
  • :svc - Услуги.

За да се прикаже комплетна листа на видови ресурси достапни за прегледување, постои команда :aliases.

Исто така е погодно да се прегледа списокот на команди достапни преку комбинации на копчиња во тековниот прозорец: за да го направите ова, само кликнете на „?“.

Преглед на k9s - напреден терминален интерфејс за Kubernetes

Исто така во k9s има режим на пребарување, за да отидете на која треба само да внесете „/“. Пребарува низ содржината на тековниот „прозорец“. На пример, ако претходно сте внеле :ns, имате отворена листа со именски простори. Ако има премногу од нив, тогаш за да не скролувате надолу долго време, само внесете во прозорецот со именски простори /mynamespace.

За да пребарувате по етикети, можете да ги изберете сите подлоги во саканиот именски простор, а потоа да внесете, на пример, / -l app=whoami. Ќе добиеме список на мешунки со оваа ознака:

Преглед на k9s - напреден терминален интерфејс за Kubernetes

Пребарувањето работи во сите типови на прозорци, вклучително и дневници, прегледување на манифестации на YAML и describe за ресурси - видете подолу за повеќе информации за овие способности.

Како изгледа целокупниот тек на навигација?

Со командата :ctx можете да го изберете контекстот:

Преглед на k9s - напреден терминален интерфејс за Kubernetes

За да изберете именски простор, постои веќе споменатата команда :ns, а потоа можете да го користите пребарувањето за саканиот простор: /test.

Ако сега го одбереме ресурсот за кој нè интересира (на пример, истиот StatefulSet), ќе се појават соодветните информации за него: колку подови работат со кратки информации за нив.

Преглед на k9s - напреден терминален интерфејс за Kubernetes

Само мешунките може да бидат од интерес - тогаш само внесете :pod. Во случај на ConfigMaps (:cm - за список на овие ресурси) можете да го изберете предметот на интерес и да кликнете на „u“, по што K9 ќе ви каже кој точно (овој CM) го користи.

Друга погодна карактеристика за гледање ресурси е нивната „Х-зраци“ (поглед на XRay). Овој режим се повикува со командата :xray RESOURCE и... полесно е да се покаже како функционира отколку да се објасни. Еве илустрација за StatefulSets:

Преглед на k9s - напреден терминален интерфејс за Kubernetes
(Секој од овие ресурси може да се уредува, менува, прави describe.)

И тука е распоредување со Ingress:

Преглед на k9s - напреден терминален интерфејс за Kubernetes

Работа со ресурси

Информациите за секој ресурс може да се добијат во YAML или во него describe со притискање на соодветните кратенки на тастатурата („y“ и „d“ соодветно). Се разбира, има уште поосновни операции: нивната листа и кратенки на тастатурата се секогаш видливи благодарение на пригодниот „заглавие“ во интерфејсот (скриен со притискање на Ctrl + e).

Преглед на k9s - напреден терминален интерфејс за Kubernetes

Кога уредувате кој било ресурс („д“ откако ќе го изберете), уредувачот на текст дефиниран во променливите на околината (export EDITOR=vim).

И еве како изгледа деталниот опис на ресурсот (describe):

Преглед на k9s - напреден терминален интерфејс за Kubernetes

Овој излез (или излезот од прегледување на манифестот YAML на ресурс) може да се зачува со помош на вообичаената кратенка на тастатурата Ctrl + s. Каде ќе се зачува ќе се знае од пораката K9s:

Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully!

Можете исто така да ги вратите ресурсите од креираните резервни датотеки со прво отстранување на системските етикети и прибелешки. За да го направите ова, ќе треба да отидете во директориумот со нив (:dir /tmp), потоа изберете ја саканата датотека и примени apply.

Патем, во секое време можете да се вратите на претходниот ReplicaSet ако има проблеми со тековниот. За да го направите ова, треба да го изберете саканиот RS (:rs за нивната листа):

Преглед на k9s - напреден терминален интерфејс за Kubernetes

... и враќање со Ctrl + l. Треба да добиеме известување дека сè е успешно:

k9s/whoami-5cfbdbb469 successfully rolled back

И за да ги размерите репликите, само кликнете на „s“ (скала) и изберете го потребниот број на копии:

Преглед на k9s - напреден терминален интерфејс за Kubernetes

Можете да внесете кој било од контејнерите користејќи ја школката: за да го направите ова, одете до саканиот под, кликнете на „s“ (школка) и изберете го контејнерот.

Други карактеристики

Се разбира, поддржано е и гледање дневници („l“ за избраниот ресурс). И за да видите нови дневници, нема потреба постојано да притискате Enter: само направете ознака („m“), а потоа следете ги само новите пораки.

Преглед на k9s - напреден терминален интерфејс за Kubernetes

Исто така, во истиот прозорец можете да го изберете временскиот опсег за издавање дневници:

  • клуч „1“ - за 1 минута;
  • „2“ - 5 минути;
  • „3“ - 15 минути;
  • „4“ - 30 минути;
  • "5" - 1 час;
  • „0“ - за целиот животен век на мешунката.

Специјален режим на работа Пулс (команда :pulse) покажува општи информации за кластерот Kubernetes:

Преглед на k9s - напреден терминален интерфејс за Kubernetes

Во него можете да го видите бројот на ресурси и нивниот статус (оние кои имаат статус се прикажани со зелено Running).

Друга интересна карактеристика на K9 се нарекува Попај. Ги проверува сите ресурси за одредени критериуми за точност и го прикажува добиениот „рејтинг“ со објаснувања. На пример, можете да видите дека нема доволно примероци или ограничувања, а некој контејнер може да се користи како root...

Преглед на k9s - напреден терминален интерфејс за Kubernetes

Постои основна поддршка на Helm. На пример, вака можете да ги видите изданијата распоредени во кластерот:

:helm all # все
:helm $namespace # в конкретном пространстве имен

Репер

Дури и го вградија во K9 еј е едноставен генератор на оптоварување за HTTP сервер, алтернатива на попознатиот ab (ApacheBench).

За да го овозможите, ќе треба да овозможите порта-напред во подлогата. За да го направите ова, изберете pod и притиснете Shift + f, одете во подменито за порта-напред користејќи го алијасот „pf“.

Преглед на k9s - напреден терминален интерфејс за Kubernetes

Откако ќе ја изберете портата и ќе притиснете Ctrl + b, самиот репер ќе се стартува. Резултатите од неговата работа се чуваат во /tmp и се достапни за подоцнежно гледање во K9s.

Преглед на k9s - напреден терминален интерфејс за Kubernetes
Преглед на k9s - напреден терминален интерфејс за Kubernetes

За да ја промените конфигурацијата на репер, треба да креирате датотека $HOME/.k9s/bench-<my_context>.yml (дефинирано за секој кластер).

Забелешка: Важно е проширувањето на сите датотеки YAML во директориумот .k9s беше точно .yml (.yaml не работи правилно).

Пример за конфигурација:

benchmarks:
  defaults:
    # Количество потоков
    concurrency: 2
    # Количество запросов
    requests: 1000
  containers:
    # Настройки для контейнера с бенчмарком
    # Контейнер определяется как namespace/pod-name:container-name
    default/nginx:nginx:
      concurrency: 2
      requests: 10000
      http:
        path: /
        method: POST
        body:
          {"foo":"bar"}
        header:
          Accept:
            - text/html
          Content-Type:
            - application/json
 services:
    # Можно проводить бенчмарк на сервисах типа NodePort и LoadBalancer
    # Синтаксис: namespace/service-name
    default/nginx:
      concurrency: 5
      requests: 500
      http:
        method: GET
        path: /auth
      auth:
        user: flant
        password: s3cr3tp455w0rd

интерфејс

Изгледот на колоните за листите на ресурси се менува со креирање на датотека $HOME/.k9s/views.yml. Пример за неговата содржина:

k9s:
 views:
   v1/pods:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - IP
       - NODE
       - STATUS
       - READY
   v1/services:
     columns:
       - AGE
       - NAMESPACE
       - NAME
       - TYPE
       - CLUSTER-IP

Точно, нема доволно колона за етикети, за кои има прашање во проектот.

Сортирањето по колони се врши со помош на кратенки на тастатурата:

  • Shift + n - по име;
  • Shift + o - по јазли;
  • Shift + i - по IP;
  • Shift + a - по век на траење на контејнерот;
  • Shift + t - според бројот на рестартирања;
  • Shift + r - според статусот на подготвеност;
  • Shift + c - според потрошувачката на процесорот;
  • Shift + m - според потрошувачката на меморија.

Ако некому не му се допаѓа стандардната шема на бои, K9s дури и поддржува кожи. Достапни се готови примери (7 парчиња). тука. Еве пример за една од овие кожи (во морнарицата):

Преглед на k9s - напреден терминален интерфејс за Kubernetes

Додатоци

Конечно, приклучоци ви дозволуваат да ги проширите можностите на K9s. Јас самиот користев само еден од нив во мојата работа - kubectl get all -n $namespace.

Изгледа вака. Направете датотека $HOME/.k9s/plugin.yml со ваква содржина:

plugin:
 get-all:
   shortCut: g    
   confirm: false    
   description: get all
   scopes:
   - all
   command: sh
   background: false
   args:
   - -c
   - "kubectl -n $NAMESPACE get all -o wide | less"

Сега можете да отидете во именскиот простор и да притиснете „g“ за да ја извршите соодветната команда:

Преглед на k9s - напреден терминален интерфејс за Kubernetes

Меѓу приклучоците има, на пример, интеграции со kubectl-jq и алатка за прегледување дневници ѕвезда.

Заклучок

За мојот вкус, K9s се покажа како многу погодно за употреба: со него можете брзо да се навикнете да најдете сè што ви треба без да користите kubectl. Бев задоволен од прегледувањето на дневниците и нивното зачувување, брзото уредување на ресурсите, брзината на работа воопшто*, режимот Попај се покажа како корисен. Посебно треба да се спомене можноста за креирање додатоци и прилагодување на апликацијата за да одговара на вашите потреби.

* Иако, со голем обем на логови, забележав и бавна работа на K9s. Во такви моменти, алатката „изеде“ 2 јадра од Intel Xeon E312xx и можеше дури и да замрзне.

Што недостасува во моментот? Брзо враќање на претходната верзија (не зборуваме за RS) без да одите во директориумот. Покрај тоа, реставрацијата се јавува само за само ресурс: ако сте избришале прибелешка или етикета, ќе мора да го избришете и вратите целиот ресурс (ова е местото каде што ќе треба да отидете во директориумот). Друга мала работа е дека датумот на таквите зачувани „резервни копии“ недостасува.

PS

Прочитајте и на нашиот блог:

Извор: www.habr.com

Додадете коментар