Шарҳи k9s - интерфейси пешрафтаи терминал барои Kubernetes

Шарҳи k9s - интерфейси пешрафтаи терминал барои Kubernetes

K9s интерфейси корбарии терминалро барои ҳамкорӣ бо кластерҳои Kubernetes таъмин мекунад. Ҳадафи ин лоиҳаи кушодаасос ин осон кардани паймоиш, назорат ва идоракунии барномаҳо дар K8s мебошад. 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, шумо метавонед файли бинариро насб кунед:

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

Танҳо pods метавонад шавқовар бошад - пас ворид шудан кофӣ аст :pod. Дар мавриди ConfigMaps (:cm - барои рӯйхати ин захираҳо), шумо метавонед объекти таваҷҷӯҳро интихоб кунед ва "u" -ро клик кунед, пас аз он K9s ба шумо мегӯяд, ки онро кӣ махсус истифода мебарад (ин CM).

Хусусияти дигари муфид барои дидани захираҳо онҳост "рентген" (намоиши рентгенӣ). Ин режим тавассути фармон даъват карда мешавад :xray RESOURCE ва ... нишон додани он, ки чӣ тавр кор мекунад, аз шарҳ додан осонтар аст. Ин аст як мисол барои StatefulSets:

Шарҳи k9s - интерфейси пешрафтаи терминал барои Kubernetes
(Ҳар яке аз ин захираҳоро таҳрир кардан, тағир додан ва сохтан мумкин аст describe.)

Ва ин ҷо ҷойгиркунӣ бо воридшавӣ аст:

Шарҳи 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" - барои тамоми умри pod.

Реҷаи махсуси корӣ Пулс (фармон :pulse) маълумоти умумиро дар бораи кластери Kubernetes нишон медиҳад:

Шарҳи k9s - интерфейси пешрафтаи терминал барои Kubernetes

Дар он шумо метавонед шумораи захираҳо ва ҳолати онҳоро бинед (сабз онҳоеро, ки мақоми доранд, нишон медиҳад Running).

Хусусияти дигари ҷолиби K9s номида мешавад Пуре. Он тамоми захираҳоро барои меъёрҳои муайяни дурустӣ тафтиш мекунад ва "рейтинг" -и натиҷаро бо шарҳҳо нишон медиҳад. Масалан, шумо мебинед, ки намунаҳо ё маҳдудиятҳо кофӣ нестанд ва баъзе контейнерҳо метавонанд ҳамчун реша кор кунанд ...

Шарҳи k9s - интерфейси пешрафтаи терминал барои Kubernetes

Дастгирии асосии Helm мавҷуд аст. Масалан, ин тавр шумо метавонед релизҳои дар кластер ҷойгиршударо бубинед:

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

рањнамо

Ҳатто дар K9s сохта шудааст эй як генератори оддии сервери HTTP мебошад, ки алтернатива ба аб (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

Плагинҳо

Дар охир, плагинҳо ба шумо имкон медихад, ки имкониятхои К9-ро васеъ намоед. Ман худам танҳо яктои онҳоро дар кори худ истифода бурдаам - 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 муфид буд. Як зикри махсус қобилияти эҷоди плагинҳо ва тағир додани барнома барои мувофиқ кардани ниёзҳои шумост.

* Гарчанде, ки бо хачми калони журналхо кори сусти K9-хоро низ мушохида кардам. Дар чунин лаҳзаҳо, утилит 2 ядрои Intel Xeon E312xx "хӯрд" ва ҳатто метавонад ях кунад.

Дар айни замон чӣ намерасад? Бозгашти зуд ба версияи қаблӣ (мо дар бораи RS гап намезанем) бидуни рафтан ба директория. Илова бар ин, барқарорсозӣ танҳо барои рух медиҳад умумӣ манбаъ: агар шумо эзоҳ ё тамғаро нест кунед, шумо бояд тамоми захираро нест кунед ва барқарор кунед (дар ин ҷо шумо бояд ба директория равед). Боз як чизи дигар - барои чунин "нусхаҳои эҳтиётӣ" санаи кофӣ нест.

PS

Инчунин дар блоги мо хонед:

Манбаъ: will.com

Илова Эзоҳ