
Kubernetes кластеруудтай харилцах терминалын хэрэглэгчийн интерфейсээр хангадаг. Энэхүү Нээлттэй эхийн төслийн зорилго нь K8s дээрх програмуудыг удирдах, хянах, удирдахад хялбар болгох явдал юм. K9s нь Kubernetes-ийн өөрчлөлтийг байнга хянаж, хянагддаг нөөцтэй ажиллах хурдан тушаалуудыг өгдөг.
Төсөл нь Go дээр бичигдсэн бөгөөд жил хагасын турш оршин тогтнож байна: анхны амлалт 1 оны 2019-р сарын 9000-нд хийгдсэн. Бичиж байх үед XNUMX+ од байна болон 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/binK8-ийн кластерт тусгай шаардлага байхгүй. Шүүмжээс харахад уг програм нь Kubernetes-ийн 1.12 гэх мэт хуучин хувилбаруудтай ажилладаг.
Аппликешн нь стандарт тохиргоог ашиглаж эхэлнэ .kube/config - яаж хийдэгтэй төстэй kubectl.
Навигация
Анхдагч байдлаар, контекстэд заасан стандарт нэрийн орон зай бүхий цонх нээгдэнэ. Энэ нь хэрэв та бичсэн бол kubectl config set-context --current --namespace=test, дараа нь нэрийн талбар нээгдэнэ test. (Нөхцөл байдал/нэрийн орон зайг өөрчлөх талаар доороос үзнэ үү.)

Руу явах тушаалын горим ":" дээр дарж гүйцэтгэнэ. Дараа нь та k9s хэрхэн ажилладагийг тушаалуудыг ашиглан удирдаж болно - жишээлбэл, StatefulSets-ийн жагсаалтыг харахын тулд (одоогийн нэрийн талбарт) оруулах боломжтой. :sts.
![]()
Kubernetes-ийн бусад эх сурвалжуудын хувьд:
-
:ns- Нэрийн орон зай; -
:deploy- Байрлуулалт; -
:ing- орох; -
:svc- Үйлчилгээ.
Үзэх боломжтой нөөцийн төрлүүдийн бүрэн жагсаалтыг харуулахын тулд тушаал байна :aliases.
Одоогийн цонхон доторх товчлуурын хослолоор ашиглах боломжтой командуудын жагсаалтыг үзэх нь бас тохиромжтой: үүнийг хийхийн тулд "?" дээр товшино уу.

Мөн k9-д байдаг хайлтын горим, очихын тулд "/" оруулахад л хангалттай. Энэ нь одоогийн "цонх" -ын агуулгыг хайж байна. Жишээлбэл, хэрэв та өмнө нь оруулсан бол :ns, танд нэрийн орон зайн жагсаалт нээлттэй байна. Хэрэв тэдгээр нь хэтэрхий олон байгаа бол удаан хугацаагаар доош гүйлгэхгүйн тулд цонхонд нэрийн орон зайг оруулна уу. /mynamespace.
Шошгогоор хайхын тулд та хүссэн нэрийн талбар дахь бүх pods-ыг сонгоод, жишээ нь: / -l app=whoami. Бид энэ шошготой савны жагсаалтыг авах болно:
![]()
Хайлт нь бүртгэл, YAML манифестийг үзэх гэх мэт бүх төрлийн цонхонд ажилладаг describe нөөцийн хувьд - эдгээр боломжуудын талаар дэлгэрэнгүй мэдээллийг доороос үзнэ үү.
Навигацийн ерөнхий урсгал ямар харагдаж байна вэ?
тушаалаар :ctx Та контекстийг сонгож болно:

Нэрийн орон зайг сонгохын тулд аль хэдийн дурдсан тушаал байна :ns, дараа нь та хүссэн зайгаа хайлтыг ашиглаж болно: /test.
Хэрэв бид одоо сонирхож буй эх сурвалжаа сонговол (жишээлбэл, ижил StatefulSet) түүнд холбогдох мэдээлэл гарч ирнэ: тэдгээрийн тухай товч мэдээлэл бүхий хэдэн pods ажиллаж байна.
![]()
Зөвхөн хонхорцог нь сонирхолтой байж магадгүй - дараа нь зүгээр л оруулна уу :pod. ConfigMaps-ийн хувьд (:cm - эдгээр нөөцийн жагсаалтыг харахын тулд) та сонирхож буй объектоо сонгоод "u" дээр дарж, K9s яг хэн (энэ CM) үүнийг ашиглаж байгааг хэлэх болно.
Нөөцийг үзэх өөр нэг тохиромжтой шинж чанар нь тэдний "Рентген туяа" (рентген туяа). Энэ горимыг тушаалаар дууддаг :xray RESOURCE мөн ... тайлбарлахаас илүү хэрхэн ажилладагийг харуулах нь илүү хялбар байдаг. StatefulSets-ийн жишээ энд байна:

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

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

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

Энэ гаралтыг (эсвэл нөөцийн YAML манифестийг үзсэн гаралтыг) ердийн Ctrl + s товчлуурыг ашиглан хадгалж болно. Хаана хадгалагдах нь K9-ийн мессежээс тодорхой болно:
Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully! Та эхлээд системийн шошго болон тэмдэглэгээг устгаснаар үүсгэсэн нөөц файлуудаас нөөцийг сэргээх боломжтой. Үүнийг хийхийн тулд та тэдэнтэй хамт лавлах руу очих хэрэгтэй болно (: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).
K9-ийн өөр нэг сонирхолтой шинж чанар гэж нэрлэгддэг Попейн. Энэ нь бүх нөөцийг тодорхой шалгуур үзүүлэлтээр шалгаж, "үнэлгээ" -ийг тайлбартай харуулдаг. Жишээлбэл, та хангалттай дээж, хязгаарлалт байхгүй байгааг харж болно, зарим контейнерыг root болгон ажиллуулж болно ...

Helm-ийн үндсэн дэмжлэг байдаг. Жишээлбэл, та кластерт байрлуулсан хувилбаруудыг ингэж харж болно:
:helm all # все
:helm $namespace # в конкретном пространстве имен
Түвшин тогтоох
Тэд үүнийг K9-д хүртэл хийсэн нь HTTP серверт зориулсан энгийн ачаалал үүсгэгч бөгөөд илүү сайн мэддэг ab (ApacheBench)-ийн өөр хувилбар юм.
Үүнийг идэвхжүүлэхийн тулд та pod-д порт дамжуулахыг идэвхжүүлэх хэрэгтэй. Үүнийг хийхийн тулд pod-г сонгоод 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 ширхэг) авах боломжтой . Эдгээр арьсны нэг жишээг энд үзүүлэв (тэнгисийн цэргийн хүчинд):

Залгагч
Эцэст нь хэлэхэд 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-тай нэгтгэх, бүртгэлийг үзэх хэрэгсэл байдаг. .
дүгнэлт
Миний амтанд нийцүүлэн K9s ашиглахад маш тохиромжтой болсон: үүний тусламжтайгаар та хэрэгцээтэй бүх зүйлээ ашиглахгүйгээр хурдан хайж олох боломжтой болно. kubectl. Бүртгэлийг үзэж, хадгалах, нөөцийг хурдан засварлах, ерөнхийдөө ажлын хурд *, Popeye горим ашигтай болсонд би сэтгэл хангалуун байсан. Нэмэлт өргөтгөлүүдийг үүсгэх, програмыг өөрийн хэрэгцээнд нийцүүлэн өөрчлөх чадварыг онцгой дурдах хэрэгтэй.
* Хэдийгээр их хэмжээний логтой байсан ч би K9-ийн удаан ажиллагааг анзаарсан. Ийм үед уг хэрэгсэл нь Intel Xeon E2xx-ийн 312 цөмийг "идсэн" бөгөөд бүр хөлдөж магадгүй юм.
Одоогоор юу дутагдаж байна вэ? Лавлах руу орохгүйгээр өмнөх хувилбар руу хурдан буцах (бид RS-ийн тухай яриагүй). Нэмж дурдахад нөхөн сэргээлт нь зөвхөн зориулалтын дагуу хийгддэг нийт нөөц: хэрэв та тэмдэглэгээ эсвэл шошгыг устгасан бол нөөцийг бүхэлд нь устгаж, сэргээх шаардлагатай болно (энэ нь та лавлах руу очих шаардлагатай болно). Өөр нэг жижиг зүйл бол ийм хадгалсан "нөөцлөлтийн" огноо байхгүй байна.
PS
Мөн манай блог дээрээс уншина уу:
- «";
- «";
- «".
Эх сурвалж: www.habr.com
