k9s-ийн тойм - Kubernetes-д зориулсан дэвшилтэт терминал интерфейс

k9s-ийн тойм - Kubernetes-д зориулсан дэвшилтэт терминал интерфейс

K9s Kubernetes кластеруудтай харилцах терминалын хэрэглэгчийн интерфейсээр хангадаг. Энэхүү Нээлттэй эхийн төслийн зорилго нь K8s дээрх програмуудыг удирдах, хянах, удирдахад хялбар болгох явдал юм. K9s нь Kubernetes-ийн өөрчлөлтийг байнга хянаж, хянагддаг нөөцтэй ажиллах хурдан тушаалуудыг өгдөг.

Төсөл нь Go дээр бичигдсэн бөгөөд жил хагасын турш оршин тогтнож байна: анхны амлалт 1 оны 2019-р сарын 9000-нд хийгдсэн. Бичиж байх үед XNUMX+ од байна GitHub болон 80 орчим хувь нэмэр оруулагчид. k9-ууд юу хийж чадахыг харцгаая?

Суулгах, эхлүүлэх

Энэ нь үйлчлүүлэгч (Kubernetes кластертай холбоотой) програм бөгөөд үүнийг Docker дүрс хэлбэрээр ажиллуулахад хамгийн хялбар байдаг:

docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s

Зарим 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

K8-ийн кластерт тусгай шаардлага байхгүй. Шүүмжээс харахад уг програм нь 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-д зориулсан дэвшилтэт терминал интерфейс

Мөн k9-д байдаг хайлтын горим, очихын тулд "/" оруулахад л хангалттай. Энэ нь одоогийн "цонх" -ын агуулгыг хайж байна. Жишээлбэл, хэрэв та өмнө нь оруулсан бол :ns, танд нэрийн орон зайн жагсаалт нээлттэй байна. Хэрэв тэдгээр нь хэтэрхий олон байгаа бол удаан хугацаагаар доош гүйлгэхгүйн тулд цонхонд нэрийн орон зайг оруулна уу. /mynamespace.

Шошгогоор хайхын тулд та хүссэн нэрийн талбар дахь бүх pods-ыг сонгоод, жишээ нь: / -l app=whoami. Бид энэ шошготой савны жагсаалтыг авах болно:

k9s-ийн тойм - Kubernetes-д зориулсан дэвшилтэт терминал интерфейс

Хайлт нь бүртгэл, YAML манифестийг үзэх гэх мэт бүх төрлийн цонхонд ажилладаг describe нөөцийн хувьд - эдгээр боломжуудын талаар дэлгэрэнгүй мэдээллийг доороос үзнэ үү.

Навигацийн ерөнхий урсгал ямар харагдаж байна вэ?

тушаалаар :ctx Та контекстийг сонгож болно:

k9s-ийн тойм - Kubernetes-д зориулсан дэвшилтэт терминал интерфейс

Нэрийн орон зайг сонгохын тулд аль хэдийн дурдсан тушаал байна :ns, дараа нь та хүссэн зайгаа хайлтыг ашиглаж болно: /test.

Хэрэв бид одоо сонирхож буй эх сурвалжаа сонговол (жишээлбэл, ижил StatefulSet) түүнд холбогдох мэдээлэл гарч ирнэ: тэдгээрийн тухай товч мэдээлэл бүхий хэдэн pods ажиллаж байна.

k9s-ийн тойм - Kubernetes-д зориулсан дэвшилтэт терминал интерфейс

Зөвхөн хонхорцог нь сонирхолтой байж магадгүй - дараа нь зүгээр л оруулна уу :pod. ConfigMaps-ийн хувьд (:cm - эдгээр нөөцийн жагсаалтыг харахын тулд) та сонирхож буй объектоо сонгоод "u" дээр дарж, K9s яг хэн (энэ CM) үүнийг ашиглаж байгааг хэлэх болно.

Нөөцийг үзэх өөр нэг тохиромжтой шинж чанар нь тэдний "Рентген туяа" (рентген туяа). Энэ горимыг тушаалаар дууддаг :xray RESOURCE мөн ... тайлбарлахаас илүү хэрхэн ажилладагийг харуулах нь илүү хялбар байдаг. StatefulSets-ийн жишээ энд байна:

k9s-ийн тойм - Kubernetes-д зориулсан дэвшилтэт терминал интерфейс
(Эдгээр нөөц бүрийг засварлах, өөрчлөх, хийх боломжтой describe.)

Мөн энд оруулгатай байршуулалт байна:

k9s-ийн тойм - Kubernetes-д зориулсан дэвшилтэт терминал интерфейс

Нөөцтэй ажиллах

Нөөц бүрийн талаарх мэдээллийг YAML эсвэл түүнээс авах боломжтой describe тохирох гарын товчлолыг дарж ("y" ба "d" тус тус). Мэдээжийн хэрэг, үүнээс ч илүү үндсэн үйлдлүүд байдаг: тэдгээрийн жагсаалт болон гарын товчлолууд нь интерфэйс дэх тохиромжтой "толгой" (Ctrl + e товчлуурыг дарснаар нуугдсан) ачаар үргэлж харагдах болно.

k9s-ийн тойм - Kubernetes-д зориулсан дэвшилтэт терминал интерфейс

Аливаа нөөцийг засварлахдаа ("сонгосны дараа") текст засварлагч нь орчны хувьсагчид (export EDITOR=vim).

Нөөцийн нарийвчилсан тайлбар нь эндээс харагдаж байна (describe):

k9s-ийн тойм - Kubernetes-д зориулсан дэвшилтэт терминал интерфейс

Энэ гаралтыг (эсвэл нөөцийн YAML манифестийг үзсэн гаралтыг) ердийн Ctrl + s товчлуурыг ашиглан хадгалж болно. Хаана хадгалагдах нь K9-ийн мессежээс тодорхой болно:

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).

K9-ийн өөр нэг сонирхолтой шинж чанар гэж нэрлэгддэг Попейн. Энэ нь бүх нөөцийг тодорхой шалгуур үзүүлэлтээр шалгаж, "үнэлгээ" -ийг тайлбартай харуулдаг. Жишээлбэл, та хангалттай дээж, хязгаарлалт байхгүй байгааг харж болно, зарим контейнерыг root болгон ажиллуулж болно ...

k9s-ийн тойм - Kubernetes-д зориулсан дэвшилтэт терминал интерфейс

Helm-ийн үндсэн дэмжлэг байдаг. Жишээлбэл, та кластерт байрлуулсан хувилбаруудыг ингэж харж болно:

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

Түвшин тогтоох

Тэд үүнийг K9-д хүртэл хийсэн хүүе нь HTTP серверт зориулсан энгийн ачаалал үүсгэгч бөгөөд илүү сайн мэддэг ab (ApacheBench)-ийн өөр хувилбар юм.

Үүнийг идэвхжүүлэхийн тулд та pod-д порт дамжуулахыг идэвхжүүлэх хэрэгтэй. Үүнийг хийхийн тулд pod-г сонгоод 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-д зориулсан дэвшилтэт терминал интерфейс

Залгагч

Эцэст нь хэлэхэд залгаасууд 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" товчийг дарж харгалзах командыг гүйцэтгэх боломжтой.

k9s-ийн тойм - Kubernetes-д зориулсан дэвшилтэт терминал интерфейс

Плагинуудын дунд жишээлбэл, kubectl-jq-тай нэгтгэх, бүртгэлийг үзэх хэрэгсэл байдаг. хатуу.

дүгнэлт

Миний амтанд нийцүүлэн K9s ашиглахад маш тохиромжтой болсон: үүний тусламжтайгаар та хэрэгцээтэй бүх зүйлээ ашиглахгүйгээр хурдан хайж олох боломжтой болно. kubectl. Бүртгэлийг үзэж, хадгалах, нөөцийг хурдан засварлах, ерөнхийдөө ажлын хурд *, Popeye горим ашигтай болсонд би сэтгэл хангалуун байсан. Нэмэлт өргөтгөлүүдийг үүсгэх, програмыг өөрийн хэрэгцээнд нийцүүлэн өөрчлөх чадварыг онцгой дурдах хэрэгтэй.

* Хэдийгээр их хэмжээний логтой байсан ч би K9-ийн удаан ажиллагааг анзаарсан. Ийм үед уг хэрэгсэл нь Intel Xeon E2xx-ийн 312 цөмийг "идсэн" бөгөөд бүр хөлдөж магадгүй юм.

Одоогоор юу дутагдаж байна вэ? Лавлах руу орохгүйгээр өмнөх хувилбар руу хурдан буцах (бид RS-ийн тухай яриагүй). Нэмж дурдахад нөхөн сэргээлт нь зөвхөн зориулалтын дагуу хийгддэг нийт нөөц: хэрэв та тэмдэглэгээ эсвэл шошгыг устгасан бол нөөцийг бүхэлд нь устгаж, сэргээх шаардлагатай болно (энэ нь та лавлах руу очих шаардлагатай болно). Өөр нэг жижиг зүйл бол ийм хадгалсан "нөөцлөлтийн" огноо байхгүй байна.

PS

Мөн манай блог дээрээс уншина уу:

Эх сурвалж: www.habr.com