Лоиҳа дар Go навишта шудааст ва дар тӯли зиёда аз якуним сол мавҷуд аст: аввалин ӯҳдадорӣ 1 феврали соли 2019 дода шуда буд. Дар замони навиштан, 9000+ ситораҳо мавҷуданд
Насб ва ба кор андохтан
Ин як барномаи муштарӣ (нисбат ба кластери 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
Барои худи кластери 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), барои он маълумоти мувофиқ пайдо мешавад: чанд поддон бо маълумоти мухтасар дар бораи онҳо кор мекунанд.
Танҳо pods метавонад шавқовар бошад - пас ворид шудан кофӣ аст :pod
. Дар мавриди ConfigMaps (:cm
- барои рӯйхати ин захираҳо), шумо метавонед объекти таваҷҷӯҳро интихоб кунед ва "u" -ро клик кунед, пас аз он K9s ба шумо мегӯяд, ки онро кӣ махсус истифода мебарад (ин CM).
Хусусияти дигари муфид барои дидани захираҳо онҳост "рентген" (намоиши рентгенӣ). Ин режим тавассути фармон даъват карда мешавад :xray RESOURCE
ва ... нишон додани он, ки чӣ тавр кор мекунад, аз шарҳ додан осонтар аст. Ин аст як мисол барои StatefulSets:
(Ҳар яке аз ин захираҳоро таҳрир кардан, тағир додан ва сохтан мумкин аст describe
.)
Ва ин ҷо ҷойгиркунӣ бо воридшавӣ аст:
Кор бо захираҳо
Шумо метавонед дар бораи ҳар як манбаъ дар YAML ё он маълумот гиред describe
бо пахш кардани миёнабурҳои мувофиқи клавиатура («y» ва «d»). Албатта, амалиёти боз ҳам асосӣ вуҷуд дорад: рӯйхат ва миёнабурҳои клавиатураи онҳо ба шарофати "сарлавҳаи" қулай дар интерфейс (бо пахшкунии Ctrl + e пинҳон) ҳамеша намоёнанд.
Ҳангоми таҳрири ҳама гуна манбаъ ("e" пас аз интихоби он), муҳаррири матнии дар тағирёбандаҳои муҳити зист муайяншуда кушода мешавад (export EDITOR=vim
).
Ва ин аст, ки тавсифи муфассали манбаъ чӣ гуна аст (describe
):
Ин баромад (ё натиҷаи дидани манифести YAML-и манбаъ) мумкин аст бо истифода аз миёнабурҳои шиноси Ctrl + s захира карда шавад. Дар куҷо захира кардани он аз паёми K9s маълум мешавад:
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" - барои тамоми умри pod.
Реҷаи махсуси корӣ Пулс (фармон :pulse
) маълумоти умумиро дар бораи кластери Kubernetes нишон медиҳад:
Дар он шумо метавонед шумораи захираҳо ва ҳолати онҳоро бинед (сабз онҳоеро, ки мақоми доранд, нишон медиҳад Running
).
Хусусияти дигари ҷолиби K9s номида мешавад Пуре. Он тамоми захираҳоро барои меъёрҳои муайяни дурустӣ тафтиш мекунад ва "рейтинг" -и натиҷаро бо шарҳҳо нишон медиҳад. Масалан, шумо мебинед, ки намунаҳо ё маҳдудиятҳо кофӣ нестанд ва баъзе контейнерҳо метавонанд ҳамчун реша кор кунанд ...
Дастгирии асосии Helm мавҷуд аст. Масалан, ин тавр шумо метавонед релизҳои дар кластер ҷойгиршударо бубинед:
:helm all # все
:helm $namespace # в конкретном пространстве имен
рањнамо
Ҳатто дар K9s сохта шудааст
Барои фаъол кардани он, шумо бояд порт-форвардро дар подкаст фаъол созед. Барои ин кор, подкастро интихоб кунед ва 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 ҳатто дастгирӣ мекунад
Плагинҳо
Дар охир, 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-хоро низ мушохида кардам. Дар чунин лаҳзаҳо, утилит 2 ядрои Intel Xeon E312xx "хӯрд" ва ҳатто метавонад ях кунад.
Дар айни замон чӣ намерасад? Бозгашти зуд ба версияи қаблӣ (мо дар бораи RS гап намезанем) бидуни рафтан ба директория. Илова бар ин, барқарорсозӣ танҳо барои рух медиҳад умумӣ манбаъ: агар шумо эзоҳ ё тамғаро нест кунед, шумо бояд тамоми захираро нест кунед ва барқарор кунед (дар ин ҷо шумо бояд ба директория равед). Боз як чизи дигар - барои чунин "нусхаҳои эҳтиётӣ" санаи кофӣ нест.
PS
Инчунин дар блоги мо хонед:
- «
Шарҳи GUI барои Kubernetes »; - «
Эълони Web View Kubernetes (ва шарҳи мухтасари дигар интерфейсҳои веб барои Kubernetes) »; - «
kubebox ва дигар снарядҳо барои Kubernetes ".
Манбаъ: will.com