Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes
K9s nyadiakeun antarbeungeut pamaké terminal pikeun interaksi jeung klaster Kubernetes. Tujuan proyék Open Source ieu nyaéta pikeun ngagampangkeun navigasi, ngawas, sareng ngatur aplikasi dina K8s. K9s terus-terusan ngawas parobahan dina Kubernetes sareng nawiskeun paréntah gancang pikeun dianggo sareng sumber anu diawaskeun.
Proyék ieu ditulis dina Go sareng parantos sakitar langkung ti satengah taun: komitmen munggaran dilakukeun dina 1 Pebruari 2019. Dina waktu nulis, aya 9000+ béntang on GitHub sarta ngeunaan 80 kontributor. Hayu urang tingali naon k9s tiasa ngalakukeun?
Pamasangan sareng peluncuran
Ieu mangrupikeun aplikasi klien (kaitan sareng klaster Kubernetes) anu paling gampang dijalankeun salaku gambar Docker:
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s
Pikeun sababaraha distribusi Linux sareng sistem operasi anu sanés, aya ogé anu siap dipasang bungkusan. Sacara umum, pikeun sistem Linux, anjeun tiasa masang file binér:
Aya sarat husus pikeun K8s klaster sorangan. Ditilik ku ulasan, aplikasi ogé tiasa dianggo sareng versi Kubernetes anu langkung lami sapertos 1.12.
Aplikasi diluncurkeun nganggo konfigurasi standar .kube/config - sarupa kumaha eta kubectl.
Napigasi
Sacara standar, jandela muka kalayan ngaranspasi standar dieusian pikeun konteks. Nyaéta, upami anjeun nyerat kubectl config set-context --current --namespace=test, teras ngaranspasi bakal muka test. (Tingali di handap pikeun ngarobah kontéks/spasi ngaran.)
Pindah ka modeu paréntah dilakukeun ku mencét ":". Saatos éta, anjeun tiasa ngontrol operasi k9s nganggo paréntah - contona, pikeun ningali daptar StatefulSets (dina rohangan ngaran ayeuna), anjeun tiasa ngalebetkeun :sts.
Pikeun sababaraha sumber Kubernetes séjén:
:ns - spasi ngaran;
:deploy - Deployments;
:ing - asupan;
:svc - jasa.
Pikeun mintonkeun daptar lengkep tipe sumberdaya sadia pikeun nempo, aya paréntah :aliases.
Éta ogé merenah pikeun nempo daptar paréntah sadia ku kombinasi konci panas dina jandela ayeuna: pikeun ngalakukeun ieu, ngan klik dina "?".
Ogé di k9s aya modeu pilarian, Pikeun buka mana éta cukup pikeun nuliskeun "/". Kalayan éta, panéangan dilaksanakeun dina eusi "jandela" ayeuna. Sebutkeun upami anjeun kantos lebet :ns, anjeun gaduh daptar ngaranspasi muka. Upami seueur teuing di antarana, maka supados henteu ngagulung ka handap kanggo waktos anu lami, cukup pikeun lebet kana jandela sareng rohangan ngaran. /mynamespace.
Pikeun milarian ku labél, anjeun tiasa milih sadaya pods dina rohangan ngaran anu dipikahoyong, teras lebetkeun, contona, / -l app=whoami. Urang bakal meunang daptar pods kalawan labél ieu:
Pilarian tiasa dianggo dina sagala jinis windows, kalebet log, ningali manifes YAML, sareng describe pikeun sumber - tingali di handap pikeun langkung rinci ngeunaan fitur ieu.
Naon rupa aliran navigasi sakabéh?
Kalayan paréntah :ctx Anjeun tiasa milih konteks:
Pikeun milih namespace, aya paréntah anu parantos disebatkeun :ns, teras anjeun tiasa nganggo milarian rohangan anu dipikahoyong: /test.
Upami urang ayeuna milih sumber anu dipikaresep ku urang (contona, StatefulSet anu sami), inpormasi anu saluyu bakal muncul pikeun éta: sabaraha pod anu dijalankeun kalayan inpormasi ringkes ngeunaan aranjeunna.
Ngan polong tiasa dipikaresep - maka cukup pikeun asup :pod. Dina kasus ConfigMaps (:cm - pikeun daptar sumberdaya ieu), anjeun tiasa milih obyék dipikaresep teras klik dina "u", nu satutasna K9s ngabejaan Anjeun saha husus ngagunakeun eta (CM ieu).
Fitur gunana séjén pikeun ningali sumber nyaéta aranjeunna "X-ray" (Xray view). Modeu ieu disebut ku paréntah :xray RESOURCE jeung ... leuwih gampang pikeun némbongkeun kumaha gawéna ti ngajelaskeun. Ieu mangrupikeun ilustrasi pikeun StatefulSets:
(Unggal sumber ieu tiasa diédit, dirobih, didamel describe.)
Sareng ieu Deployment sareng Ingress:
Gawe sareng sumberdaya
Anjeun tiasa nampi inpormasi ngeunaan unggal sumber dina YAML atanapi na describe ku mencét potong kompas keyboard anu saluyu ("y" sareng "d", masing-masing). Tangtosna, aya operasi anu langkung dasar: daptar sareng potong kompas keyboard na sok katingali berkat "header" anu merenah dina antarmuka (disumputkeun ku mencét Ctrl + e).
Nalika ngédit sumber daya naon waé ("e" saatos dipilihna), pangropéa téksu anu didefinisikeun dina variabel lingkungan dibuka (export EDITOR=vim).
Sareng ieu mangrupikeun pedaran rinci ngeunaan sumber daya (describe):
Kaluaran ieu (atanapi kaluaran ningali sumber daya YAML) tiasa disimpen nganggo potong kompas keyboard akrab Ctrl + s. Dimana éta bakal disimpen bakal dipikanyaho tina pesen K9s:
Anjeun oge bisa mulangkeun sumberdaya ti payel cadangan dijieun, sanggeus miceun labél sistem jeung annotations. Jang ngalampahkeun ieu, anjeun kedah angkat ka diréktori sareng aranjeunna (:dir /tmp), teras pilih file anu dipikahoyong sareng nerapkeun apply.
Ku jalan kitu, iraha waé anjeun tiasa ngagulung deui ka ReplicaSet sateuacana upami aya masalah sareng anu ayeuna. Jang ngalampahkeun ieu, pilih RS nu dipikahoyong (:rs pikeun daptar maranéhanana):
... sarta rollback kalawan Ctrl + l. Urang kedah nampi béwara yén sadayana lancar:
k9s/whoami-5cfbdbb469 successfully rolled back
Sareng pikeun skala réplika, klik dina "s" (skala) sareng pilih jumlah instansi anu dipikahoyong:
Anjeun tiasa ngalebetkeun salah sahiji wadah nganggo cangkang: pikeun ngalakukeun ieu, angkat ka pod anu dipikahoyong, klik "s" (cangkang) sareng pilih wadahna.
fitur sejenna
Tangtosna, log ningali ogé dirojong ("l" kanggo sumber anu dipilih). Sareng pikeun ningali log énggal, henteu kedah terus pencét Enter: cukup pikeun nyirian ("m"), teras ngan ukur ngalacak pesen énggal.
Ogé dina jandela anu sami, anjeun tiasa milih rentang waktos pikeun kaluaran log:
konci "1" - pikeun 1 menit;
"2" - 5 menit;
"3" - 15 menit;
"4" - 30 menit;
"5" - 1 jam;
"0" - pikeun sakabéh umur pod.
Modeu operasi husus Pulsa (command :pulse) nembongkeun informasi umum ngeunaan klaster Kubernetes:
Di jerona anjeun tiasa ningali jumlah sumber sareng statusna (héjo nunjukkeun jalma anu ngagaduhan status Running).
fitur cool sejen tina K9s disebut Popeye. Éta mariksa sadaya sumber pikeun kritéria kabeneran anu tangtu sareng ningalikeun "peunteun" anu hasilna sareng panjelasan. Salaku conto, anjeun tiasa ningali yén teu aya cukup conto atanapi wates, sareng sababaraha wadah tiasa dijalankeun salaku akar ...
Aya rojongan Helm dasar. Salaku conto, ieu kumaha anjeun tiasa ningali sékrési anu dipasang dina kluster:
:helm all # все
:helm $namespace # в конкретном пространстве имен
patokan
Malah diwangun kana K9s hey mangrupakeun generator beban server HTTP basajan, alternatif pikeun ab hadé dipikawanoh (ApacheBench).
Pikeun ngaktifkeunana, anjeun kedah ngaktipkeun port-forward dina pod. Jang ngalampahkeun ieu, pilih pod terus pencét Shift + f, buka submenu port-maju ngagunakeun landian "pf".
Saatos milih port sareng mencét Ctrl + b, patokan sorangan bakal ngamimitian. Hasil karyana disimpen di /tmp sarta sadia pikeun nempo engké di K9s.
Pikeun ngarobih konfigurasi patokan, anjeun kedah nyiptakeun file $HOME/.k9s/bench-<my_context>.yml (ditangtukeun pikeun tiap klaster).
NB: Kadé ekstensi sadaya file YAML dina diréktori a .k9s éta persis .yml (.yaml teu jalan bener).
Conto konfigurasi:
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
interface
Penampilan kolom pikeun daptar sumber dirobih ku nyiptakeun file $HOME/.k9s/views.yml. Conto eusina:
k9s:
views:
v1/pods:
columns:
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services:
columns:
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
Asihan dumasar kolom dilaksanakeun ku potong kompas keyboard:
Shift + n - ku ngaran;
Shift + o - ku titik;
Shift + i - ku IP;
Shift + a - ku umur wadahna;
Shift + t - ku jumlah restart;
Shift + r - ku status kesiapan;
Shift + c - ku konsumsi CPU;
Shift + m - ku konsumsi memori.
Lamun batur teu resep skéma warna standar, K9s malah ngarojong samak. conto siap-dijieun (7 lembar) sadia di dieu. Ieu conto salah sahiji kulit ieu (dina angkatan laut):
Plugins
Tungtungna plugins ngidinan Anjeun pikeun dilegakeun kamampuhan K9s. Kuring sorangan ngan ukur nganggo salah sahijina dina padamelan kuring - kubectl get all -n $namespace.
Sigana mah kieu. Jieun file $HOME/.k9s/plugin.yml kalayan eusi sapertos kieu:
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"
Ayeuna anjeun tiasa angkat ka namespace sareng pencét "g" pikeun ngaéksekusi paréntah anu saluyu:
Diantara plugins aya, contona, integrasi sareng kubectl-jq sareng utilitas pikeun ningali log. bentang.
kacindekan
Pikeun rasa kuring, K9s tétéla pisan merenah pikeun digawekeun ku: anjeun bisa gancang meunang dipaké pikeun néangan sagalana nu peryogi tanpa ngagunakeun eta. kubectl. Abdi gumbira sareng panempoan log sareng nyimpenna, ngédit sumber daya gancang, laju damel sacara umum *, mode Popeye tétéla mangpaat. Sebutan khusus nyaéta kamampuan nyiptakeun plugins sareng ngarobih aplikasi pikeun nyocogkeun ka kabutuhan anjeun.
* Sanajan, kalawan volume badag tina log, Kuring ogé noticed operasi slow K9s. Dina momen sapertos kitu, utilitas "dahar" 2 inti tina Intel Xeon E312xx bahkan tiasa beku.
Naon anu leungit ayeuna? Rollback gancang ka versi saméméhna (urang teu ngawangkong ngeunaan RS) tanpa buka diréktori. Sajaba ti éta, recovery lumangsung ngan pikeun ngan sumberdaya: lamun ngahapus annotation atawa labél, anjeun bakal kudu ngahapus tur malikkeun sakabéh sumberdaya (ieu dimana anjeun kudu indit ka diréktori). trifle sejen - aya teu cukup tanggal pikeun disimpen sapertos "cadangan".