Преглед к9с - напредног терминалног интерфејса за Кубернетес

Преглед к9с - напредног терминалног интерфејса за Кубернетес

К9с обезбеђује терминалски кориснички интерфејс за интеракцију са Кубернетес кластерима. Циљ овог пројекта отвореног кода је да олакша навигацију, праћење и управљање апликацијама у К8с. К9с стално прати промене у Кубернетесу и нуди брзе команде за рад са надгледаним ресурсима.

Пројекат је написан на Го-у и постоји више од годину и по дана: прво урезивање је направљено 1. фебруара 2019. У време писања, има 9000+ звездица ГитХуб и око 80 сарадника. Да видимо шта к9с може?

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

Ово је клијентска (у односу на Кубернетес кластер) апликација коју је најлакше покренути као Доцкер слику:

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

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

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

Не постоје посебни захтеви за сам кластер К8с. Судећи по рецензијама, апликација ради и са старијим верзијама Кубернетеса као што је 1.12.

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

Навигација

Подразумевано, отвара се прозор са подразумеваним простором имена наведеним за контекст. Односно, ако сте написали kubectl config set-context --current --namespace=test, тада ће се отворити именски простор test. (Погледајте испод за промену контекста/простора имена.)

Преглед к9с - напредног терминалног интерфејса за Кубернетес

Иди на командни режим врши се притиском на ":". Након тога, можете контролисати рад к9с помоћу команди - на пример, да бисте видели листу СтатефулСетс (у тренутном именском простору), можете унети :sts.

Преглед к9с - напредног терминалног интерфејса за Кубернетес

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

  • :ns — именски простори;
  • :deploy — Деплоиментс;
  • :ing — Ингрессес;
  • :svc - Услуге.

Да бисте приказали комплетну листу типова ресурса доступних за преглед, постоји команда :aliases.

Такође је згодно видети листу команди доступних комбинацијом пречица у оквиру тренутног прозора: да бисте то урадили, само кликните на "?".

Преглед к9с - напредног терминалног интерфејса за Кубернетес

Такође у к9с постоји режим претраге, за прелазак на који је довољно унети "/". Са њим се врши претрага по садржају тренутног „прозора“. Рецимо ако сте претходно ушли :ns, имате отворену листу именских простора. Ако их има превише, онда је довољно да уђете у прозор са именским просторима да не бисте дуго скроловали надоле /mynamespace.

Да бисте претраживали по ознакама, можете да изаберете све подове у жељеном именском простору, а затим унесете, на пример, / -l app=whoami. Добићемо листу махуна са овом ознаком:

Преглед к9с - напредног терминалног интерфејса за Кубернетес

Претрага ради у свим врстама прозора, укључујући евиденције, преглед ИАМЛ манифеста и describe за ресурсе - погледајте доле за више детаља о овим функцијама.

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

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

Преглед к9с - напредног терминалног интерфејса за Кубернетес

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

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

Преглед к9с - напредног терминалног интерфејса за Кубернетес

Само махуне могу бити интересантне - онда је довољно ући :pod. У случају ЦонфигМапс (:cm - за листу ових ресурса), можете да изаберете објекат од интереса и кликнете на "у", након чега ће вам К9с рећи ко га конкретно користи (овај ЦМ).

Још једна згодна функција за преглед ресурса је њихова "рендгенски снимак" (рендгенски приказ). Овај режим се позива наредбом :xray RESOURCE и ... лакше је показати како то функционише него објаснити. Ево илустрације за СтатефулСетс:

Преглед к9с - напредног терминалног интерфејса за Кубернетес
(Сваки од ових ресурса се може уређивати, мењати, правити describe.)

А ево примене са Ингрессом:

Преглед к9с - напредног терминалног интерфејса за Кубернетес

Рад са ресурсима

Можете добити информације о сваком ресурсу у ИАМЛ-у или његовом describe притиском на одговарајуће пречице на тастатури („и“ и „д“, респективно). Наравно, постоје још основне операције: њихова листа и пречице на тастатури су увек видљиве захваљујући згодном „заглављу“ у интерфејсу (скривеним притиском на Цтрл + е).

Преглед к9с - напредног терминалног интерфејса за Кубернетес

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

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

Преглед к9с - напредног терминалног интерфејса за Кубернетес

Овај излаз (или резултат прегледа ИАМЛ манифеста ресурса) може се сачувати коришћењем познате пречице на тастатури Цтрл + с. Где ће бити сачуван знаће се из К9с поруке:

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

Такође можете да вратите ресурсе из креираних датотека резервних копија, након уклањања системских ознака и напомена. Да бисте то урадили, потребно је да одете у директоријум са њима (:dir /tmp), затим изаберите жељену датотеку и примените apply.

Успут, у било ком тренутку можете да се вратите на претходни РеплицаСет ако постоје проблеми са тренутним. Да бисте то урадили, изаберите жељени РС (:rs за њихову листу):

Преглед к9с - напредног терминалног интерфејса за Кубернетес

... и враћање уназад помоћу Цтрл + л. Требало би да добијемо обавештење да је све било успешно:

k9s/whoami-5cfbdbb469 successfully rolled back

А да бисте скалирали реплике, само кликните на "с" (скала) и изаберите жељени број инстанци:

Преглед к9с - напредног терминалног интерфејса за Кубернетес

Можете да унесете било који од контејнера користећи шкољку: да бисте то урадили, идите на жељену подлогу, кликните на "с" (љуска) и изаберите контејнер.

Остале карактеристике

Наравно, подржано је и прегледање дневника („л“ за изабрани ресурс). А да бисте гледали нове дневнике, нема потребе да стално притискате Ентер: довољно је означити („м“), а затим само пратити нове поруке.

Преглед к9с - напредног терминалног интерфејса за Кубернетес

Такође у истом прозору можете да изаберете временски опсег за излаз евиденције:

  • тастер "1" - за 1 минут;
  • "2" - 5 минута;
  • "3" - 15 минута;
  • "4" - 30 минута;
  • "5" - 1 сат;
  • "0" - за цео животни век махуне.

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

Преглед к9с - напредног терминалног интерфејса за Кубернетес

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

Још једна цоол карактеристика К9с се зове Попеие. Проверава све ресурсе за одређене критеријуме исправности и приказује резултујућу „оцену“ са објашњењима. На пример, можете видети да нема довољно узорака или ограничења, а неки контејнер може да ради као роот...

Преглед к9с - напредног терминалног интерфејса за Кубернетес

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

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

Репер

Чак и уграђен у К9с хеј је једноставан генератор оптерећења ХТТП сервера, алтернатива познатијем аб (АпацхеБенцх).

Да бисте то омогућили, потребно је да омогућите преусмеравање портова у под. Да бисте то урадили, изаберите под и притисните Схифт + ф, идите на подмени порт-форвард користећи псеудоним "пф".

Преглед к9с - напредног терминалног интерфејса за Кубернетес

Након што изаберете порт и притиснете Цтрл + б, сам бенцхмарк ће се покренути. Резултати његовог рада су похрањени у /tmp и доступни су за касније гледање у К9с.

Преглед к9с - напредног терминалног интерфејса за Кубернетес
Преглед к9с - напредног терминалног интерфејса за Кубернетес

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

Напомена: Важно је да екстензије свих ИАМЛ датотека у директоријуму .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

interfejs

Изглед колона за листе ресурса се мења креирањем датотеке $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

Истина, нема довољно колоне за етикете, за шта постоји питање у пројекту.

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

  • Схифт + н - по имену;
  • Схифт + о - по чворовима;
  • Схифт + и - по ИП;
  • Схифт + а - по животном веку контејнера;
  • Схифт + т - по броју поновних покретања;
  • Схифт + р - по статусу спремности;
  • Схифт + ц - према потрошњи процесора;
  • Схифт + м - по потрошњи меморије.

Ако се некоме не свиђа подразумевана шема боја, К9с чак подржава коже. Доступни су готови примери (7 комада). овде. Ево примера једног од ових скинова (у морнарици):

Преглед к9с - напредног терминалног интерфејса за Кубернетес

Плугинс

Коначно, додаци омогућавају вам да проширите могућности К9с. И сам сам користио само једну од њих у свом раду - 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"

Сада можете да одете у именски простор и притиснете "г" да бисте извршили одговарајућу команду:

Преглед к9с - напредног терминалног интерфејса за Кубернетес

Међу додацима постоје, на пример, интеграције са кубецтл-јк и услужни програм за преглед дневника Крило.

Закључак

За мој укус, К9с се показао веома погодним за рад: брзо се можете навикнути да тражите све што вам је потребно без употребе. kubectl. Био сам задовољан прегледом дневника и њиховом уштедом, брзим уређивањем ресурса, брзином рада уопште *, режим Попаја се показао корисним. Посебно се истиче могућност креирања додатака и модификовања апликације како би одговарала вашим потребама.

* Иако сам, уз велику запремину трупаца, приметио и спор рад К9. У таквим тренуцима, услужни програм је „појео“ 2 језгра из Интел Ксеон Е312кк и могао би се чак и замрзнути.

Шта тренутно недостаје? Брзо враћање на претходну верзију (не говоримо о РС) без одласка у директоријум. Поред тога, опоравак се јавља само за само ресурс: ако избришете напомену или ознаку, мораћете да избришете и вратите цео ресурс (овде треба да одете у директоријум). Још једна ситница – нема довољно датума за тако сачуване „резервне копије“.

ПС

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

Извор: ввв.хабр.цом

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