
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 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/k9sBəzi Linux paylamaları və digər əməliyyat sistemləri üçün quraşdırmaya hazır olanlar da var . Ü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/binK8s 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.)

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.
![]()
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.

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:
![]()
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:

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.
![]()
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:

(Bu resursların hər biri redaktə edilə, dəyişdirilə, düzəldilə bilər describe.)
Və burada Giriş ilə Yerləşdirmə:

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).

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):

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):

... və Ctrl + l ilə geri qaytarın. Hər şeyin yaxşı getdiyi barədə bildiriş almalıyıq:
k9s/whoami-5cfbdbb469 successfully rolled backReplikaların ölçüsünü artırmaq üçün sadəcə "s" (miqyas) üzərinə klikləyin və istədiyiniz nümunə sayını seçin:

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.

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:

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 ...

Ə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 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.

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.


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 .
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 . Hazır nümunələr (7 ədəd) mövcuddur . Bu dərilərdən birinin nümunəsi (dəniz donanmasında):

Plugins
Nəhayət, 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:

Plaginlər arasında, məsələn, kubectl-jq ilə inteqrasiyalar və qeydlərə baxmaq üçün bir yardım proqramı var. .
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
