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 тутумдары үчүн сиз бинардык файлды орното аласыз:

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 кластеринин өзүнө эч кандай атайын талаптар жок. Сын-пикирлерге караганда, колдонмо Kubernetesтин 1.12 сыяктуу эски версиялары менен да иштейт.

Колдонмо стандарттуу конфигурацияны колдонуу менен ишке киргизилет .kube/config - кандай кылганына окшош kubectl.

багыттоо

Демейки боюнча, контекст үчүн белгиленген демейки аттар мейкиндиги менен терезе ачылат. Башкача айтканда, эгер сиз жазсаңыз kubectl config set-context --current --namespace=test, анда аттар мейкиндиги ачылат test. (Контексттерди/ат мейкиндиктерин өзгөртүү үчүн төмөндө караңыз.)

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

жылма буйрук режими ":" баскычын басуу менен жүзөгө ашырылат. Андан кийин, сиз буйруктарды колдонуу менен k9s ишин көзөмөлдөй аласыз - мисалы, StatefulSets тизмесин көрүү үчүн (учурдагы аттар мейкиндигинде), сиз киргизе аласыз :sts.

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Кээ бир башка Kubernetes ресурстары үчүн:

  • :ns — аттар мейкиндиктери;
  • :deploy - жайылтуулар;
  • :ing - Кирүү;
  • :svc — Кызматтар.

Көрүү үчүн жеткиликтүү ресурс түрлөрүнүн толук тизмесин көрсөтүү үчүн, буйрук бар :aliases.

Учурдагы терезенин ичинде ысык баскычтардын комбинациялары аркылуу жеткиликтүү буйруктардын тизмесин көрүү да ыңгайлуу: бул үчүн жөн гана "?" баскычын чыкылдатыңыз.

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Ошондой эле k9s бар издөө режими, баруу үчүн "/" киргизүү жетиштүү. Анын жардамы менен учурдагы "терезенин" мазмуну боюнча издөө жүргүзүлөт. Сиз мурда кирген болсоңуз дейли :ns, сизде ачык аттар мейкиндиктеринин тизмеси бар. Эгерде алардын саны өтө көп болсо, анда узак убакыт бою ылдый сыдырбоо үчүн, терезеге аттар мейкиндиктери менен кирүү жетиштүү. /mynamespace.

Энбелгилер боюнча издөө үчүн сиз каалаган аттар мейкиндигиндеги бардык подкасттарды тандап, андан кийин, мисалы, / -l app=whoami. Биз бул энбелгиси бар порошоктордун тизмесин алабыз:

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Издөө бардык терезелерде иштейт, анын ичинде журналдар, YAML манифесттерин көрүү жана describe ресурстар үчүн - бул функциялар боюнча көбүрөөк маалымат алуу үчүн төмөндө караңыз.

Жалпы навигация агымы кандай болот?

Буйрук менен :ctx сиз контекстти тандай аласыз:

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Ат мейкиндигин тандоо үчүн мурунтан эле айтылган буйрук бар :ns, анан сиз каалаган мейкиндикти издөөнү колдоно аласыз: /test.

Эгерде биз азыр кызыккан ресурсту тандасак (мисалы, ошол эле StatefulSet), ал үчүн тиешелүү маалымат пайда болот: алар жөнүндө кыскача маалымат менен канча поддон иштеп жатат.

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Подшоктор гана кызыктырышы мүмкүн - анда кирүү жетиштүү :pod. ConfigMaps учурда (:cm - бул ресурстардын тизмеси үчүн), сиз кызыккан объектти тандап, "u" баскычын чыкылдатсаңыз болот, андан кийин K9s аны ким колдонгонун айтып берет (бул CM).

Ресурстарды көрүү үчүн дагы бир ыңгайлуу өзгөчөлүк - алардын "рентген" (рентген көрүнүшү). Бул режим буйрук тарабынан чакырылат :xray RESOURCE жана ... түшүндүргөндөн көрө анын кантип иштээрин көрсөтүү оңой. Бул жерде StatefulSets үчүн мисал:

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс
(Бул ресурстардын ар бирин түзөтүүгө, өзгөртүүгө, жасоого болот describe.)

Жана бул жерде Ingress менен жайгаштыруу:

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Ресурстар менен иштөө

Сиз YAML же анын ар бир ресурс жөнүндө маалымат ала аласыз describe тиешелүү баскычтарды басуу менен («y» жана «d»). Албетте, андан да негизги операциялар бар: алардын тизмеси жана клавиатура жарлыктары интерфейстеги ыңгайлуу "баш" (Ctrl + e баскычтарын басуу менен жашырылган) аркасында дайыма көрүнүп турат.

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Кандайдыр бир ресурсту (тандалгандан кийин "e") түзөтүүдө чөйрө өзгөрмөлөрүндө аныкталган тексттик редактор ачылат (export EDITOR=vim).

Бул жерде ресурстун толук сүрөттөлүшү кандай көрүнөт (describe):

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Бул чыгарууну (же YAML ресурсунун манифестин көрүүнүн жыйынтыгын) Ctrl + s клавиатурадагы тааныш жарлыктын жардамы менен сактоого болот. Кайда сакталаары K9s билдирүүсүнөн белгилүү болот:

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

Сиз ошондой эле системанын энбелгилерин жана аннотацияларды алып салгандан кийин түзүлгөн резервдик файлдардан ресурстарды калыбына келтире аласыз. Бул үчүн, алар менен каталогго барышыңыз керек (:dir /tmp), андан кийин керектүү файлды тандап, колдонуңуз apply.

Баса, каалаган убакта мурунку ReplicaSetке кайтып келе аласыз, эгерде учурдагы менен көйгөйлөр болсо. Бул үчүн, керектүү RS (:rs алардын тизмеси үчүн):

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

... жана Ctrl + l менен артка кайтарыңыз. Биз баары ойдогудай болгондугу тууралуу эскертме алышыбыз керек:

k9s/whoami-5cfbdbb469 successfully rolled back

Ал эми репликаларды масштабдоо үчүн жөн гана "s" (масштаб) баскычын чыкылдатып, керектүү сандагы инстанцияларды тандаңыз:

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Кабыкты колдонуп, каалаган идишке кирсеңиз болот: бул үчүн, керектүү поддонго өтүп, "s" (кабыг) баскычын басып, контейнерди тандаңыз.

Башка өзгөчөлүктөр

Албетте, журналдарды көрүү да колдоого алынат (тандалган ресурс үчүн "l"). Жана жаңы журналдарды көрүү үчүн дайыма Enter баскычын басуунун кереги жок: белгилөө жетиштүү («m»), андан кийин гана жаңы билдирүүлөргө көз салыңыз.

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Ошондой эле ошол эле терезеде, сиз журналдарды чыгаруу үчүн убакыт диапазонун тандай аласыз:

  • "1" баскычы - 1 мүнөткө;
  • "2" - 5 мүнөт;
  • "3" - 15 мүнөт;
  • "4" - 30 мүнөт;
  • "5" - 1 саат;
  • "0" - капчыктын бүткүл өмүрү үчүн.

Атайын иштөө режими Импульс (буйрук :pulse) Kubernetes кластери жөнүндө жалпы маалыматты көрсөтөт:

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Анда сиз ресурстардын санын жана алардын статусун көрө аласыз (жашыл түс статуска ээ болгондорду көрсөтөт Running).

K9s дагы бир сонун өзгөчөлүгү деп аталат Куэстел. Ал бардык ресурстарды белгилүү бир критерийлердин тууралыгын текшерет жана натыйжада түшүндүрмөлөр менен "рейтингди" көрсөтөт. Мисалы, үлгүлөр же чектөөлөр жетишсиз экенин көрө аласыз, ал эми кээ бир контейнер тамыр катары иштей алат ...

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Helm үчүн негизги колдоо бар. Мисалы, кластерде жайгаштырылган релиздерди мына ушундайча көрө аласыз:

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

Benchmark

Ал тургай, K9s курулган эй жөнөкөй HTTP сервер жүктөө генератору, жакшы белгилүү ab (ApacheBench) альтернативасы.

Аны иштетүү үчүн, сиз подкасттагы портту алдыга багыттоону иштетишиңиз керек. Бул үчүн, подъездди тандап, Shift + f баскычтарын басыңыз, "pf" лакап атын колдонуп, порт-алдыга субменюга өтүңүз.

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Портту тандап, Ctrl + b баскычтарын басканда, эталондун өзү башталат. Анын ишинин натыйжалары сакталат /tmp жана кийинчерээк K9s көрүү үчүн жеткиликтүү.

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс
k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Эталондун конфигурациясын өзгөртүү үчүн сиз файл түзүшүңүз керек $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 обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Плагиндер

акыр-аягы, плагиндер 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" баскычын бассаңыз болот:

k9s обзору - Kubernetes үчүн өркүндөтүлгөн терминалдык интерфейс

Плагиндердин арасында, мисалы, kubectl-jq менен интеграция жана журналдарды көрүү үчүн программа бар. арткы жак.

жыйынтыктоо

Менин табитим боюнча, K9s менен иштөө абдан ыңгайлуу болуп чыкты: аны колдонбостон эле керектүү нерселердин баарын издөөгө тез көнүп кете аласыз. kubectl. Мага журналдардын көрүнүшү жана аларды үнөмдөө, ресурстарды тез оңдоо, жалпысынан иштөө ылдамдыгы *, Popeye режими пайдалуу болуп чыкты. Өзгөчө белгилей кетүүчү нерсе, плагиндерди түзүү жана тиркемени сиздин муктаждыктарыңызга ылайыкташтыруу мүмкүнчүлүгү.

* Чоң көлөмдөгү журналдар менен мен K9s жай иштешин байкадым. Мындай учурларда, утилита Intel Xeon E2xx 312 өзөгүн "жеп", атүгүл катып калышы мүмкүн.

Учурда эмне жетишпей жатат? Мурунку версияга (биз RS жөнүндө сөз кылып жаткан жокпуз) каталогго кирбестен тез кайтуу. Мындан тышкары, калыбына келтирүү үчүн гана пайда болот гана ресурс: эгерде сиз аннотацияны же энбелгисин жок кылсаңыз, сиз бүт ресурсту жок кылып, калыбына келтиришиңиз керек болот (бул жерден каталогго өтүшүңүз керек). Дагы бир майда-чүйдө нерсе - мындай сакталган "камдык көчүрмөлөр" үчүн дата жетишсиз.

PS

Биздин блогдон дагы окуңуз:

Source: www.habr.com

Комментарий кошуу