ProHoster > Блог > басқарма > 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 жүйелері үшін екілік файлды орнатуға болады:
K8s кластерінің өзіне арнайы талаптар жоқ. Пікірлерге сүйенсек, қолданба Kubernetes-тің 1.12 сияқты ескі нұсқаларымен де жұмыс істейді.
Қолданба стандартты конфигурация арқылы іске қосылады .kube/config - қалай істейтініне ұқсас kubectl.
Навигация
Әдепкі бойынша, мәтінмән үшін көрсетілген әдепкі аттар кеңістігі бар терезе ашылады. Яғни, егер сіз жазсаңыз kubectl config set-context --current --namespace=test, содан кейін аттар кеңістігі ашылады test. (Мәтінмәндерді/аттар кеңістігін өзгерту үшін төменде қараңыз.)
Өту пәрмен режимі «:» пернесін басу арқылы орындалады. Осыдан кейін сіз пәрмендерді пайдаланып k9s жұмысын басқара аласыз - мысалы, StatefulSets тізімін көру үшін (ағымдағы аттар кеңістігінде) енгізуге болады :sts.
Кейбір басқа Kubernetes ресурстары үшін:
:ns — аттар кеңістігі;
:deploy - Орналастырулар;
:ing - енулер;
:svc — қызметтер.
Қарауға болатын ресурс түрлерінің толық тізімін көрсету үшін пәрмен бар :aliases.
Ағымдағы терезеде жылдам пернелер тіркесімі арқылы қол жетімді пәрмендер тізімін қарау да ыңғайлы: ол үшін «?» түймесін басу жеткілікті.
Сондай-ақ k9s-де бар іздеу режимі, оған өту үшін «/» енгізу жеткілікті. Оның көмегімен ағымдағы «терезенің» мазмұны бойынша іздеу жүргізіледі. Егер сіз бұрын кірдіңіз делік :ns, сізде ашық аттар кеңістігі тізімі бар. Егер олардың саны тым көп болса, ұзақ уақыт бойы төмен жылжып кетпеу үшін терезеге аттар кеңістігімен кіру жеткілікті. /mynamespace.
Белгілер бойынша іздеу үшін қажетті аттар кеңістігіндегі барлық подкасттарды таңдап, содан кейін, мысалы, / -l app=whoami. Біз осы белгі бар бөтелкелердің тізімін аламыз:
Іздеу терезелердің барлық түрлерінде жұмыс істейді, соның ішінде журналдар, YAML манифесттерін қарау және describe ресурстар үшін - осы мүмкіндіктер туралы қосымша мәліметтер алу үшін төменде қараңыз.
Жалпы навигация ағыны қалай көрінеді?
Пәрменімен :ctx контекст таңдауға болады:
Аттар кеңістігін таңдау үшін бұрын айтылған пәрмен бар :ns, содан кейін қажетті кеңістікті іздеуді пайдалануға болады: /test.
Егер біз қазір бізді қызықтыратын ресурсты таңдасақ (мысалы, бірдей StatefulSet), ол үшін сәйкес ақпарат пайда болады: олар туралы қысқаша ақпаратпен қанша подкаст жұмыс істейді.
Тек бөтелкелер қызығушылық тудыруы мүмкін - содан кейін кіру жеткілікті :pod. ConfigMaps жағдайында (:cm - осы ресурстардың тізімі үшін) сіз қызықтыратын нысанды таңдап, «u» түймесін басуға болады, содан кейін K9s оны кім арнайы пайдаланатынын айтады (осы CM).
Ресурстарды қараудың тағы бір ыңғайлы мүмкіндігі - олардың «рентген» (рентгендік көрініс). Бұл режим пәрмен арқылы шақырылады :xray RESOURCE және ... түсіндіруден гөрі оның қалай жұмыс істейтінін көрсету оңайырақ. Міне StatefulSets үшін иллюстрация:
(Бұл ресурстардың әрқайсысын өңдеуге, өзгертуге, жасауға болады describe.)
Міне, кіріспен орналастыру:
Ресурстармен жұмыс
Сіз YAML немесе оның ішіндегі әрбір ресурс туралы ақпаратты ала аласыз describe сәйкес пернелер тіркесімін («тиісінше y» және «d») басу арқылы. Әрине, одан да көп негізгі операциялар бар: олардың тізімі мен пернелер тіркесімдері интерфейстегі ыңғайлы «тақырып» арқасында әрқашан көрінеді (Ctrl + e пернелерін басу арқылы жасырылады).
Кез келген ресурсты өңдеу кезінде (таңдаудан кейін «e») ортаның айнымалы мәндерінде анықталған мәтіндік редактор ашылады (export EDITOR=vim).
Міне, ресурстың толық сипаттамасы осылай көрінеді (describe):
Бұл шығысты (немесе YAML ресурсының манифестін қарау шығысын) Ctrl + s таныс пернелер тіркесімі арқылы сақтауға болады. Оның қайда сақталатыны K9s хабарламасынан белгілі болады:
Сондай-ақ, жүйе белгілері мен аннотацияларды жойғаннан кейін жасалған сақтық көшірме файлдарынан ресурстарды қалпына келтіруге болады. Ол үшін олармен бірге каталогқа бару керек (:dir /tmp), содан кейін қажетті файлды таңдап, қолданыңыз apply.
Айтпақшы, егер ағымдағымен ақаулар болса, кез келген уақытта алдыңғы ReplicaSet-ке оралуға болады. Ол үшін қажетті RS таңдаңыз (:rs олардың тізімі үшін):
... және Ctrl + l көмегімен кері қайтарыңыз. Барлығы жақсы болғаны туралы хабарлама алуымыз керек:
k9s/whoami-5cfbdbb469 successfully rolled back
Көшірмелерді масштабтау үшін «s» (масштаб) түймесін басып, қажетті дана санын таңдаңыз:
Қабық арқылы контейнерлердің кез келгенін енгізуге болады: бұл әрекетті орындау үшін қажетті подкастқа өтіп, «s» (қабық) түймесін басып, контейнерді таңдаңыз.
Басқа мүмкіндіктер
Әрине, журналдарды қарауға да қолдау көрсетіледі (таңдалған ресурс үшін «l»). Жаңа журналдарды көру үшін Enter пернесін үнемі басу қажет емес: («m») белгілеу жеткілікті, содан кейін тек жаңа хабарламаларды бақылаңыз.
Сондай-ақ сол терезеде журналдарды шығару үшін уақыт ауқымын таңдауға болады:
«1» пернесі – 1 минутқа;
«2» – 5 минут;
«3» – 15 минут;
«4» – 30 минут;
«5» - 1 сағат;
«0» - подкасттың бүкіл қызмет ету мерзімі үшін.
Арнайы жұмыс режимі Импульс (команда :pulse) Kubernetes кластері туралы жалпы ақпаратты көрсетеді:
Онда сіз ресурстардың санын және олардың күйін көре аласыз (жасыл түс мәртебесі барларды көрсетеді Running).
K9s тағы бір керемет ерекшелігі деп аталады Попее. Ол барлық ресурстарды белгілі бір дұрыстық критерийлеріне тексереді және алынған «рейтингті» түсініктемелермен көрсетеді. Мысалы, үлгілер немесе шектеулер жеткіліксіз екенін көре аласыз және кейбір контейнер түбір ретінде жұмыс істей алады ...
Негізгі Helm қолдауы бар. Мысалы, кластерде орналастырылған шығарылымдарды осылай көруге болады:
:helm all # все
:helm $namespace # в конкретном пространстве имен
Тестілеу
Олар тіпті K9-ға да салынған Эй қарапайым HTTP сервер жүктеу генераторы, жақсы белгілі ab (ApacheBench) балама.
Оны қосу үшін подводтағы портты қайта жіберуді қосу керек. Ол үшін подкастты таңдап, Shift + f пернелер тіркесімін басыңыз, «pf» бүркеншік атын пайдаланып портты алға жылжыту ішкі мәзіріне өтіңіз.
Портты таңдап, Ctrl + b пернелерін басқаннан кейін эталонның өзі басталады. Оның жұмысының нәтижелері сақталады /tmp және кейінірек K9 құрылғыларында көруге болады.
Эталонның конфигурациясын өзгерту үшін файлды жасау керек $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 дана) бар осында. Міне, осы мұқабалардың бірінің мысалы (теңіз флотында):
Плагиндер
Соңында, плагиндер 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» пернесін басуға болады:
Плагиндердің арасында, мысалы, kubectl-jq интеграциясы және журналдарды көруге арналған утилита бар. корма.
қорытынды
Менің талғамым бойынша, K9s жұмыс істеуге өте ыңғайлы болды: сіз оны қолданбай-ақ қажет нәрсенің бәрін іздеуге тез үйренесіз. kubectl. Маған журналдардың көрінісі және оларды сақтау, ресурстарды жылдам өңдеу, жалпы жұмыс жылдамдығы * ұнады, Popeye режимі пайдалы болды. Плагиндерді жасау және сіздің қажеттіліктеріңізге сәйкес қолданбаны өзгерту мүмкіндігін ерекше атап өтуге болады.
* Бөренелердің үлкен көлеміне қарамастан, мен K9s баяу жұмыс істейтінін байқадым. Мұндай сәттерде утилита Intel Xeon E2xx-тен 312 ядроны «жеп», тіпті қатып қалуы мүмкін.
Қазіргі уақытта не жетіспейді? Каталогқа бармай-ақ, алдыңғы нұсқаға жылдам оралу (біз RS туралы айтып отырған жоқпыз). Сонымен қатар, қалпына келтіру тек үшін орын алады барлығы ресурс: егер сіз аннотацияны немесе белгіні жойсаңыз, бүкіл ресурсты жоюға және қалпына келтіруге тура келеді (бұл жерде каталогқа өту керек). Тағы бір ұсақ-түйек - мұндай сақталған «сақтық көшірмелер» үшін күн жеткіліксіз.