ProHoster > Blog > башкаруу > k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс
k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс
K9s Kubernetes кластерлери менен өз ара аракеттенүү үчүн терминалдык колдонуучу интерфейсин камсыз кылат. Бул Open Source долбоорунун максаты - K8sдеги тиркемелерди башкарууну, көзөмөлдөөнү жана башкарууну жеңилдетүү. K9s дайыма Kubernetesтеги өзгөрүүлөргө көз салып турат жана көзөмөлдөнгөн ресурстар менен иштөө үчүн тез буйруктарды сунуштайт.
Долбоор Go тилинде жазылган жана бир жарым жылдан ашык убакыттан бери иштеп келе жатат: биринчи милдеттенме 1-жылдын 2019-февралында жасалган. Жазуу учурунда 9000+ жылдыз бар GitHub жана 80ге жакын салым кошкондор. Келгиле, k9s эмне кыла аларын карап көрөлү?
Орнотуу жана ишке киргизүү
Бул Docker сүрөтү катары иштетүү оңой болгон кардар (Kubernetes кластерине карата) тиркеме:
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.)
Жана бул жерде 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) Kubernetes кластери жөнүндө жалпы маалыматты көрсөтөт:
Анда сиз ресурстардын санын жана алардын статусун көрө аласыз (жашыл түс статуска ээ болгондорду көрсөтөт Running).
K9s дагы бир сонун өзгөчөлүгү деп аталат Куэстел. Ал бардык ресурстарды белгилүү бир критерийлердин тууралыгын текшерет жана натыйжада түшүндүрмөлөр менен "рейтингди" көрсөтөт. Мисалы, үлгүлөр же чектөөлөр жетишсиз экенин көрө аласыз, ал эми кээ бир контейнер тамыр катары иштей алат ...
Helm үчүн негизги колдоо бар. Мисалы, кластерде жайгаштырылган релиздерди мына ушундайча көрө аласыз:
:helm all # все
:helm $namespace # в конкретном пространстве имен
Benchmark
Ал тургай, K9s курулган эй жөнөкөй HTTP сервер жүктөө генератору, жакшы белгилүү ab (ApacheBench) альтернативасы.
Аны иштетүү үчүн, сиз подкасттагы портту алдыга багыттоону иштетишиңиз керек. Бул үчүн, подъездди тандап, Shift + f баскычтарын басыңыз, "pf" лакап атын колдонуп, порт-алдыга субменюга өтүңүз.
Портту тандап, Ctrl + b баскычтарын басканда, эталондун өзү башталат. Анын ишинин натыйжалары сакталат /tmp жана кийинчерээк K9s көрүү үчүн жеткиликтүү.
Эталондун конфигурациясын өзгөртүү үчүн сиз файл түзүшүңүз керек $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 - CPU керектөө боюнча;
Shift + m - эстутум керектөө боюнча.
Кимдир бирөө демейки түс схемасын жактырбаса, K9s да колдойт терилери. Даяр мисалдар (7 даана) бар бул жерде. Мына ушул терилердин биринин мисалы (деңиз флотунда):
Плагиндер
акыр-аягы, плагиндер K9s мүмкүнчүлүктөрүн кеңейтүүгө мүмкүндүк берет. Мен өзүм жумушумда алардын бирин гана колдондум - 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 жөнүндө сөз кылып жаткан жокпуз) каталогго кирбестен тез кайтуу. Мындан тышкары, калыбына келтирүү үчүн гана пайда болот гана ресурс: эгерде сиз аннотацияны же энбелгисин жок кылсаңыз, сиз бүт ресурсту жок кылып, калыбына келтиришиңиз керек болот (бул жерден каталогго өтүшүңүз керек). Дагы бир майда-чүйдө нерсе - мындай сакталган "камдык көчүрмөлөр" үчүн дата жетишсиз.