k9s-ի ակնարկ՝ առաջադեմ տերմինալային միջերես Kubernetes-ի համար
K9s ապահովում է տերմինալ օգտագործողի միջերես Kubernetes կլաստերների հետ փոխազդելու համար: Բաց կոդով այս նախագծի նպատակն է հեշտացնել K8-ներում նավարկելու, վերահսկելու և կառավարելու ծրագրերը: K9s-ը մշտապես վերահսկում է Kubernetes-ի փոփոխությունները և առաջարկում արագ հրամաններ՝ վերահսկվող ռեսուրսների հետ աշխատելու համար:
Նախագիծը գրված է Go-ում և գոյություն ունի ավելի քան մեկուկես տարի. առաջին պարտավորությունը կատարվել է 1 թվականի փետրվարի 2019-ին: Գրելու պահին 9000+ աստղ կա GitHub և մոտ 80 ներդրող։ Տեսնենք, թե ինչ կարող են անել k9-ները:
Տեղադրում և գործարկում
Սա հաճախորդի (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. (Տես ստորև՝ համատեքստերը/անունների տարածքները փոխելու համար):
Գնալ դեպի հրամանի ռեժիմ կատարվում է «:» սեղմելով: Դրանից հետո դուք կարող եք վերահսկել k9-ների աշխատանքը հրամանների միջոցով, օրինակ՝ StatefulSets-ների ցանկը դիտելու համար (ներկայիս անվանատարածքում), կարող եք մուտքագրել :sts.
Kubernetes-ի որոշ այլ ռեսուրսների համար.
:ns - անունների տարածքներ;
:deploy - տեղակայումներ;
:ing - ներթափանցումներ;
:svc - ծառայություններ.
Դիտման համար հասանելի ռեսուրսների տեսակների ամբողջական ցանկը ցուցադրելու համար կա հրաման :aliases.
Հարմար է նաև ընթացիկ պատուհանում դիտել տաք ստեղների համակցություններով հասանելի հրամանների ցանկը. դա անելու համար պարզապես սեղմեք «?»-ի վրա:
Նաև k9-ներում կա որոնման ռեժիմ, որտեղ գնալու համար բավական է մուտքագրել «/»: Դրանով որոնում է կատարվում ընթացիկ «պատուհանի» բովանդակության վրա։ Ասենք, եթե նախկինում մտել եք :ns, դուք ունեք բաց անվանատարածքների ցանկ: Եթե դրանք չափազանց շատ են, ապա երկար ժամանակ ներքև չոլորելու համար բավական է մուտքագրել պատուհանում անունների տարածքներով. /mynamespace.
Ըստ պիտակների որոնելու համար կարող եք ընտրել բոլոր բլոկները ցանկալի անվանատարածքում, այնուհետև մուտքագրել, օրինակ, / -l app=whoami. Մենք կստանանք այս պիտակով պատյանների ցանկը.
Որոնումն աշխատում է բոլոր տեսակի պատուհաններում, ներառյալ տեղեկամատյանները, դիտելով YAML մանիֆեստները և describe ռեսուրսների համար - տե՛ս ստորև այս հատկանիշների վերաբերյալ լրացուցիչ մանրամասների համար:
Ինչպիսի՞ն է ընդհանուր նավիգացիոն հոսքը:
Հրամանով :ctx կարող եք ընտրել համատեքստ.
Անվանատարածք ընտրելու համար կա արդեն նշված հրամանը :ns, և այնուհետև կարող եք օգտագործել ցանկալի տարածքի որոնումը. /test.
Եթե մենք հիմա ընտրենք մեզ հետաքրքրող ռեսուրսը (օրինակ՝ նույն StatefulSet-ը), ապա դրա համար կհայտնվի համապատասխան տեղեկատվությունը. քանի՞ պատիճ է աշխատում դրանց մասին հակիրճ տեղեկություններով:
Միայն պատիճները կարող են հետաքրքրել, ապա բավական է մտնել :pod. ConfigMaps-ի դեպքում (:cm - այս ռեսուրսների ցանկի համար դուք կարող եք ընտրել հետաքրքրության օբյեկտը և սեղմել «u»-ի վրա, որից հետո K9-ը ձեզ կասի, թե ով է այն հատուկ օգտագործում (այս CM-ն):
Ռեսուրսները դիտելու մեկ այլ հարմար հատկանիշ նրանցն է «ռենտգեն» (ռենտգեն դիտում). Այս ռեժիմը կոչվում է հրամանով :xray RESOURCE և ... ավելի հեշտ է ցույց տալ, թե ինչպես է դա աշխատում, քան բացատրել: Ահա StatefulSets-ի նկարազարդումը.
(Այս ռեսուրսներից յուրաքանչյուրը կարող է խմբագրվել, փոփոխվել, պատրաստվել describe.)
Եվ ահա տեղակայումը Ingress-ով.
Աշխատեք ռեսուրսների հետ
Դուք կարող եք տեղեկատվություն ստանալ 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 (հրաման :pulse) ցույց է տալիս ընդհանուր տեղեկություններ Kubernetes կլաստերի մասին.
Դրանում դուք կարող եք տեսնել ռեսուրսների քանակը և դրանց կարգավիճակը (կանաչը ցույց է տալիս կարգավիճակ ունեցողները Running).
K9-ի մեկ այլ հետաքրքիր առանձնահատկություն կոչվում է Popeye. Այն ստուգում է բոլոր ռեսուրսները կոռեկտության որոշակի չափանիշների համար և ցուցադրում է ստացված «վարկանիշը» բացատրություններով։ Օրինակ, դուք կարող եք տեսնել, որ չկան բավարար նմուշներ կամ սահմանափակումներ, և որոշ կոնտեյներ կարող են աշխատել որպես արմատ ...
Հելմի համար կա հիմնական աջակցություն: Օրինակ, այսպես կարող եք տեսնել կլաստերում տեղակայված թողարկումները.
:helm all # все
:helm $namespace # в конкретном пространстве имен
Հաշվիչ համակարգի արագագործությունը որոշող մեքենայակ. Ծրագիր
Նույնիսկ ներկառուցված K9-ների մեջ հե՜յ պարզ HTTP սերվերի բեռնվածության գեներատոր է, որն այլընտրանք է ավելի հայտնի ab-ին (ApacheBench):
Այն միացնելու համար դուք պետք է միացնեք port-forward-ը պատիճում: Դա անելու համար ընտրեք պատիճը և սեղմեք Shift + f, անցեք port-forward ենթամենյու՝ օգտագործելով «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 հատ): այստեղ. Ահա այս երեսվածքներից մեկի օրինակը (նավատորմում):
Plug-ins
Վերջապես, պլագիններ թույլ է տալիս ընդլայնել 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-ի հետ և տեղեկամատյանները դիտելու օգտակար ծրագիր ուժեղ.
Ամփոփում
Իմ ճաշակի համար K9-ները շատ հարմար են աշխատելու համար. առանց օգտագործելու կարող ես արագ ընտելանալ փնտրելու այն ամենը, ինչ անհրաժեշտ է: kubectl. Ինձ գոհացրեց տեղեկամատյանների տեսքը և դրանց խնայողությունը, ռեսուրսների արագ խմբագրումը, ընդհանուր առմամբ աշխատանքի արագությունը *, Popeye ռեժիմը պարզվեց, որ օգտակար է: Հատուկ հիշատակում է պլագիններ ստեղծելու և ձեր կարիքներին համապատասխան հավելվածը փոփոխելու ունակությունը:
* Չնայած տեղեկամատյանների մեծ ծավալով ես նկատեցի նաև K9-ների դանդաղ աշխատանքը։ Նման պահերին կոմունալը «կերավ» 2 միջուկ Intel Xeon E312xx-ից և կարող էր նույնիսկ սառչել։
Ի՞նչն է պակասում այս պահին։ Արագ վերադարձ նախորդ տարբերակին (խոսքը RS-ի մասին չէ)՝ առանց գրացուցակ գնալու։ Բացի այդ, վերականգնումը տեղի է ունենում միայն միայն ռեսուրս. եթե դուք ջնջում եք անոտացիա կամ պիտակ, դուք ստիպված կլինեք ջնջել և վերականգնել ամբողջ ռեսուրսը (այստեղ դուք պետք է գնաք գրացուցակ): Մեկ այլ մանրուք. այդպիսի պահված «պահուստավորման» համար բավարար ամսաթիվ չկա: