k9s шолуы - Kubernetes үшін кеңейтілген терминал интерфейсі

k9s шолуы - Kubernetes үшін кеңейтілген терминал интерфейсі

Қ9 Kubernetes кластерлерімен әрекеттесу үшін терминалдық пайдаланушы интерфейсін қамтамасыз етеді. Бұл Open Source жобасының мақсаты - K8 құрылғыларындағы қолданбаларды шарлауды, бақылауды және басқаруды жеңілдету. 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 үшін кеңейтілген терминал интерфейсі

Кейбір басқа 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» түймесін басуға болады, содан кейін K9s оны кім арнайы пайдаланатынын айтады (осы CM).

Ресурстарды қараудың тағы бір ыңғайлы мүмкіндігі - олардың «рентген» (рентгендік көрініс). Бұл режим пәрмен арқылы шақырылады :xray RESOURCE және ... түсіндіруден гөрі оның қалай жұмыс істейтінін көрсету оңайырақ. Міне StatefulSets үшін иллюстрация:

k9s шолуы - Kubernetes үшін кеңейтілген терминал интерфейсі
(Бұл ресурстардың әрқайсысын өңдеуге, өзгертуге, жасауға болады describe.)

Міне, кіріспен орналастыру:

k9s шолуы - Kubernetes үшін кеңейтілген терминал интерфейсі

Ресурстармен жұмыс

Сіз YAML немесе оның ішіндегі әрбір ресурс туралы ақпаратты ала аласыз describe сәйкес пернелер тіркесімін («тиісінше y» және «d») басу арқылы. Әрине, одан да көп негізгі операциялар бар: олардың тізімі мен пернелер тіркесімдері интерфейстегі ыңғайлы «тақырып» арқасында әрқашан көрінеді (Ctrl + e пернелерін басу арқылы жасырылады).

k9s шолуы - Kubernetes үшін кеңейтілген терминал интерфейсі

Кез келген ресурсты өңдеу кезінде (таңдаудан кейін «e») ортаның айнымалы мәндерінде анықталған мәтіндік редактор ашылады (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).

K9s тағы бір керемет ерекшелігі деп аталады Попее. Ол барлық ресурстарды белгілі бір дұрыстық критерийлеріне тексереді және алынған «рейтингті» түсініктемелермен көрсетеді. Мысалы, үлгілер немесе шектеулер жеткіліксіз екенін көре аласыз және кейбір контейнер түбір ретінде жұмыс істей алады ...

k9s шолуы - Kubernetes үшін кеңейтілген терминал интерфейсі

Негізгі Helm қолдауы бар. Мысалы, кластерде орналастырылған шығарылымдарды осылай көруге болады:

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

Тестілеу

Олар тіпті K9-ға да салынған Эй қарапайым HTTP сервер жүктеу генераторы, жақсы белгілі ab (ApacheBench) балама.

Оны қосу үшін подводтағы портты қайта жіберуді қосу керек. Ол үшін подкастты таңдап, Shift + f пернелер тіркесімін басыңыз, «pf» бүркеншік атын пайдаланып портты алға жылжыту ішкі мәзіріне өтіңіз.

k9s шолуы - Kubernetes үшін кеңейтілген терминал интерфейсі

Портты таңдап, Ctrl + b пернелерін басқаннан кейін эталонның өзі басталады. Оның жұмысының нәтижелері сақталады /tmp және кейінірек K9 құрылғыларында көруге болады.

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 үшін кеңейтілген терминал интерфейсі

Плагиндер

Соңында, плагиндер K9 мүмкіндіктерін кеңейтуге мүмкіндік береді. Мен өз жұмысымда олардың біреуін ғана пайдаландым - 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. Маған журналдардың көрінісі және оларды сақтау, ресурстарды жылдам өңдеу, жалпы жұмыс жылдамдығы * ұнады, Popeye режимі пайдалы болды. Плагиндерді жасау және сіздің қажеттіліктеріңізге сәйкес қолданбаны өзгерту мүмкіндігін ерекше атап өтуге болады.

* Бөренелердің үлкен көлеміне қарамастан, мен K9s баяу жұмыс істейтінін байқадым. Мұндай сәттерде утилита Intel Xeon E2xx-тен 312 ядроны «жеп», тіпті қатып қалуы мүмкін.

Қазіргі уақытта не жетіспейді? Каталогқа бармай-ақ, алдыңғы нұсқаға жылдам оралу (біз RS туралы айтып отырған жоқпыз). Сонымен қатар, қалпына келтіру тек үшін орын алады барлығы ресурс: егер сіз аннотацияны немесе белгіні жойсаңыз, бүкіл ресурсты жоюға және қалпына келтіруге тура келеді (бұл жерде каталогқа өту керек). Тағы бір ұсақ-түйек - мұндай сақталған «сақтық көшірмелер» үшін күн жеткіліксіз.

PS

Біздің блогта да оқыңыз:

Ақпарат көзі: www.habr.com

пікір қалдыру