k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

K9 Kubernetes klasterləri ilə qarşılıqlı əlaqə üçün terminal istifadəçi interfeysi təmin edir. Bu Açıq Mənbə layihəsinin məqsədi K8-lərdə tətbiqləri naviqasiya, monitorinq və idarə etməyi asanlaşdırmaqdır. K9s daim Kubernetes-də dəyişiklikləri izləyir və monitorinq edilən resurslarla işləmək üçün sürətli əmrlər təklif edir.

Layihə Go-da yazılmışdır və bir il yarımdan çoxdur ki, mövcuddur: ilk öhdəlik 1 fevral 2019-cu ildə edilib. Yazı zamanı 9000+ ulduz var Github və 80-ə yaxın iştirakçı. Gəlin görək k9-lar nə edə bilər?

Quraşdırma və işə salma

Bu, Docker təsviri kimi işləmək üçün ən asan müştəri (Kubernetes klasteri ilə əlaqədar) tətbiqidir:

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

Bəzi Linux paylamaları və digər əməliyyat sistemləri üçün quraşdırmaya hazır olanlar da var paketləri. Ümumiyyətlə, Linux sistemləri üçün ikili fayl quraşdıra bilərsiniz:

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 klasterinin özü üçün xüsusi tələblər yoxdur. Rəylərə əsasən, tətbiq Kubernetes-in 1.12 kimi köhnə versiyaları ilə də işləyir.

Tətbiq standart konfiqurasiyadan istifadə edərək işə salınır .kube/config - necə etdiyinə bənzəyir kubectl.

Naviqasiya

Varsayılan olaraq, kontekst üçün müəyyən edilmiş standart ad sahəsi ilə bir pəncərə açılır. Yəni yazsan kubectl config set-context --current --namespace=test, sonra ad sahəsi açılacaq test. (Kontekstləri/ad boşluqlarını dəyişdirmək üçün aşağıya baxın.)

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Gedin komanda rejimi ":" düyməsini sıxmaqla həyata keçirilir. Bundan sonra, əmrlərdən istifadə edərək k9-ların işinə nəzarət edə bilərsiniz - məsələn, StatefulSets siyahısına baxmaq üçün (cari ad məkanında) daxil edə bilərsiniz. :sts.

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Bəzi digər Kubernetes resursları üçün:

  • :ns - ad boşluqları;
  • :deploy - Yerləşdirmələr;
  • :ing - Girişlər;
  • :svc — xidmətlər.

Baxmaq üçün mövcud olan resurs növlərinin tam siyahısını göstərmək üçün bir əmr var :aliases.

Cari pəncərədə isti düymələr birləşmələri ilə mövcud olan əmrlərin siyahısına baxmaq da rahatdır: bunu etmək üçün "?" düyməsini sıxmaq kifayətdir.

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

K9-larda da var axtarış rejimi, getmək üçün "/" daxil etmək kifayətdir. Onunla cari "pəncərə"nin məzmununda axtarış aparılır. Deyək ki, əvvəllər daxil olmusunuz :ns, açıq ad boşluqlarının siyahısı var. Əgər onların sayı çox olarsa, uzun müddət aşağı sürüşməmək üçün ad boşluqları ilə pəncərəyə daxil olmaq kifayətdir. /mynamespace.

Etiketlər üzrə axtarış etmək üçün istədiyiniz ad məkanında bütün podları seçə və sonra, məsələn, / -l app=whoami. Bu etiketlə podların siyahısını alacağıq:

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Axtarış bütün növ pəncərələrdə işləyir, o cümlədən loglar, YAML manifestlərinə baxmaq və describe resurslar üçün - bu xüsusiyyətlər haqqında ətraflı məlumat üçün aşağıya baxın.

Ümumi naviqasiya axını necə görünür?

Komandadan istifadə etməklə :ctx kontekst seçə bilərsiniz:

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Ad sahəsini seçmək üçün artıq qeyd olunan əmr var :ns, və sonra istədiyiniz yer üçün axtarışdan istifadə edə bilərsiniz: /test.

İndi bizi maraqlandıran resursu seçsək (məsələn, eyni StatefulSet), onun üçün müvafiq məlumat görünəcək: onlar haqqında qısa məlumatla neçə pod işləyir.

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Yalnız podlar maraq doğura bilər - o zaman daxil olmaq kifayətdir :pod. ConfigMaps vəziyyətində (:cm - bu resursların siyahısı üçün), siz maraqlandıran obyekti seçə və "u" üzərinə klikləyə bilərsiniz, bundan sonra K9s onu xüsusi olaraq kimin istifadə etdiyini sizə xəbər verəcəkdir (bu CM).

Resurslara baxmaq üçün başqa bir lazımlı xüsusiyyət onlarındır "rentgen" (Rentgen görünüşü). Bu rejim əmrlə çağırılır :xray RESOURCE və ... necə işlədiyini göstərmək izah etməkdən daha asandır. StatefulSets üçün bir illüstrasiya:

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi
(Bu resursların hər biri redaktə edilə, dəyişdirilə, düzəldilə bilər describe.)

Və burada Giriş ilə Yerləşdirmə:

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Resurslarla işləmək

Siz YAML və ya onun hər bir resursu haqqında məlumat əldə edə bilərsiniz describe müvafiq klaviatura qısa yollarına (“y” və “d”) basmaqla). Əlbəttə ki, daha əsas əməliyyatlar var: onların siyahısı və klaviatura qısa yolları interfeysdəki rahat "başlıq" sayəsində həmişə görünür (Ctrl + e düymələrini basaraq gizlədilən).

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Hər hansı resursu redaktə edərkən (seçimindən sonra "e") mühit dəyişənlərində müəyyən edilmiş mətn redaktoru açılır (export EDITOR=vim).

Və burada resursun ətraflı təsviri belə görünür (describe):

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Bu çıxış (və ya YAML resurs manifestinə baxmanın nəticəsi) Ctrl + s tanış klaviatura qısa yolundan istifadə etməklə yadda saxlanıla bilər. Onun harada saxlanacağı K9s mesajından məlum olacaq:

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

Siz həmçinin sistem etiketlərini və annotasiyaları sildikdən sonra yaradılmış ehtiyat fayllarından resursları bərpa edə bilərsiniz. Bunu etmək üçün onlarla birlikdə qovluğa getməlisiniz (:dir /tmp), sonra istədiyiniz faylı seçin və tətbiq edin apply.

Yeri gəlmişkən, cari ilə bağlı problemlər varsa, istənilən vaxt əvvəlki ReplicaSet-ə qayıda bilərsiniz. Bunu etmək üçün istədiyiniz RS seçin (:rs onların siyahısı üçün):

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

... və Ctrl + l ilə geri qaytarın. Hər şeyin yaxşı getdiyi barədə bildiriş almalıyıq:

k9s/whoami-5cfbdbb469 successfully rolled back

Replikaların ölçüsünü artırmaq üçün sadəcə "s" (miqyas) üzərinə klikləyin və istədiyiniz nümunə sayını seçin:

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Qabıqdan istifadə edərək konteynerlərdən hər hansı birini daxil edə bilərsiniz: bunun üçün istədiyiniz poda keçin, "s" (qabıq) üzərinə klikləyin və konteyneri seçin.

Digər xüsusiyyətlər

Əlbəttə ki, qeydlərə baxmaq da dəstəklənir (seçilmiş resurs üçün "l"). Yeni qeydləri izləmək üçün daim Enter düyməsini basmağa ehtiyac yoxdur: ("m") işarələmək və sonra yalnız yeni mesajları izləmək kifayətdir.

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Eyni pəncərədə, qeydlərin çıxışı üçün vaxt aralığını seçə bilərsiniz:

  • "1" düyməsi - 1 dəqiqə;
  • "2" - 5 dəqiqə;
  • "3" - 15 dəqiqə;
  • "4" - 30 dəqiqə;
  • "5" - 1 saat;
  • "0" - podun bütün ömrü üçün.

Xüsusi iş rejimi Pulse (əmr :pulse) Kubernetes klasteri haqqında ümumi məlumatları göstərir:

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Orada siz resursların sayını və onların statusunu görə bilərsiniz (yaşıl rəng statusu olanları göstərir Running).

K9-ların başqa bir gözəl xüsusiyyəti deyilir Popeye. O, bütün resursları müəyyən düzgünlük meyarlarına görə yoxlayır və nəticədə ortaya çıxan "reytinqi" izahatlarla göstərir. Məsələn, kifayət qədər nümunə və ya məhdudiyyət olmadığını görə bilərsiniz və bəzi konteynerlər kök kimi işləyə bilər ...

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Əsas Helm dəstəyi var. Məsələn, klasterdə yerləşdirilmiş buraxılışları belə görə bilərsiniz:

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

Benchmark

Hətta K9-larda quraşdırılmışdır hey sadə HTTP server yük generatorudur, daha yaxşı tanınan ab-a (ApacheBench) alternativdir.

Onu aktivləşdirmək üçün podda port yönləndirməni aktiv etməlisiniz. Bunu etmək üçün podu seçin və Shift + f düymələrini basın, "pf" ləqəbindən istifadə edərək port-irəli alt menyuya keçin.

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Portu seçdikdən və Ctrl + b düymələrini basdıqdan sonra etalon özü başlayacaq. Onun işinin nəticələri saxlanılır /tmp və sonra K9-larda baxmaq üçün mövcuddur.

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi
k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Benchmarkın konfiqurasiyasını dəyişdirmək üçün bir fayl yaratmalısınız $HOME/.k9s/bench-<my_context>.yml (hər klaster üçün müəyyən edilir).

Qeyd: Kataloqdakı bütün YAML fayllarının genişləndirilməsi vacibdir .k9s dəqiq idi .yml (.yaml düzgün işləmir).

Konfiqurasiya nümunəsi:

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

interface

Resurs siyahıları üçün sütunların görünüşü fayl yaratmaqla dəyişdirilir $HOME/.k9s/views.yml. Onun məzmununa bir nümunə:

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

Düzdür, etiketlər üçün kifayət qədər sütun yoxdur, bunun üçün var layihədəki məsələ.

Sütunlara görə çeşidləmə klaviatura qısa yolları ilə həyata keçirilir:

  • Shift + n - adla;
  • Shift + o - qovşaqlara görə;
  • Shift + i - IP ilə;
  • Shift + a - konteynerin istifadə müddəti ilə;
  • Shift + t - yenidən başlamaların sayına görə;
  • Shift + r - hazırlıq vəziyyətinə görə;
  • Shift + c - CPU istehlakı ilə;
  • Shift + m - yaddaş istehlakına görə.

Kimsə standart rəng sxemini bəyənmirsə, K9s hətta dəstəkləyir dəriləri. Hazır nümunələr (7 ədəd) mövcuddur burada. Bu dərilərdən birinin nümunəsi (dəniz donanmasında):

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Plugins

Nəhayət, plaginlər K9-ların imkanlarını genişləndirməyə imkan verir. Mən özüm işimdə onlardan yalnız birindən istifadə etmişəm - kubectl get all -n $namespace.

Bu belə görünür. Fayl yaradın $HOME/.k9s/plugin.yml bu kimi məzmunla:

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"

İndi ad sahəsinə gedə və müvafiq əmri yerinə yetirmək üçün "g" düyməsini basa bilərsiniz:

k9s-a ümumi baxış - Kubernetes üçün təkmil terminal interfeysi

Plaginlər arasında, məsələn, kubectl-jq ilə inteqrasiyalar və qeydlərə baxmaq üçün bir yardım proqramı var. sərt.

Nəticə

Zövqümə görə, K9-lar işləmək üçün çox əlverişli oldu: istifadə etmədən lazım olan hər şeyi axtarmağa tez alışa bilərsiniz. kubectl. Günlüklərin görünüşündən və onların qənaətindən, resursların sürətli redaktəsindən, ümumiyyətlə iş sürətindən * məmnun oldum, Popeye rejimi faydalı oldu. Xüsusi qeyd plaginlər yaratmaq və ehtiyaclarınıza uyğun olaraq tətbiqi dəyişdirmək qabiliyyətidir.

* Böyük həcmli loglarla olsa da, K9-ların yavaş işləməsini də gördüm. Belə anlarda yardım proqramı Intel Xeon E2xx-dən 312 nüvəni "yedi" və hətta dona bilər.

Hazırda nə çatışmır? Kataloqa getmədən əvvəlki versiyaya (biz RS haqqında danışmırıq) sürətli geri dönmə. Bundan əlavə, bərpa yalnız üçün baş verir yalnız resurs: annotasiya və ya etiketi silsəniz, bütün resursu silməli və bərpa etməli olacaqsınız (bu, kataloqa getməli olduğunuz yerdir). Başqa bir xırda şey - belə saxlanan "yedeklər" üçün kifayət qədər tarix yoxdur.

PS

Bloqumuzda da oxuyun:

Mənbə: www.habr.com