
menyediakan antara muka pengguna terminal untuk berinteraksi dengan kelompok Kubernetes. Matlamat projek Sumber Terbuka ini adalah untuk memudahkan menavigasi, memantau dan mengurus aplikasi dalam K8s. K9s sentiasa memantau perubahan dalam Kubernetes dan menyediakan arahan pantas untuk bekerja dengan sumber yang dipantau.
Projek ini ditulis dalam Go dan telah wujud selama lebih daripada satu setengah tahun: komitmen pertama dibuat pada 1 Februari 2019. Pada masa penulisan, terdapat 9000+ bintang dan kira-kira 80 penyumbang. Jom tengok apa yang k9s boleh buat?
Pemasangan dan pelancaran
Ini ialah aplikasi klien (berkaitan dengan kluster Kubernetes) yang paling mudah dijalankan sebagai imej Docker:
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9sUntuk sesetengah pengedaran Linux dan sistem pengendalian lain, terdapat juga sedia untuk dipasang . Secara umum, untuk sistem Linux, anda boleh memasang fail binari:
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/binTiada keperluan khusus untuk kluster K8s itu sendiri. Berdasarkan ulasan, aplikasi ini juga berfungsi dengan versi Kubernetes yang lebih lama seperti 1.12.
Aplikasi ini dilancarkan menggunakan konfigurasi standard .kube/config - serupa dengan cara ia berlaku kubectl.
Navigasi
Secara lalai, tetingkap dibuka dengan ruang nama lalai yang ditentukan untuk konteks. Iaitu, jika anda menulis kubectl config set-context --current --namespace=test, maka ruang nama akan dibuka test. (Lihat di bawah untuk menukar konteks/ruang nama.)

Pergi ke mod arahan dilakukan dengan menekan ":". Selepas itu, anda boleh mengawal operasi k9s menggunakan arahan - contohnya, untuk melihat senarai StatefulSets (dalam ruang nama semasa), anda boleh memasukkan :sts.
![]()
Untuk beberapa sumber Kubernetes lain:
-
:ns— ruang nama; -
:deploy- Kerahan; -
:ing- Masuk; -
:svc- Perkhidmatan.
Untuk memaparkan senarai lengkap jenis sumber yang tersedia untuk dilihat, terdapat arahan :aliases.
Ia juga mudah untuk melihat senarai arahan yang tersedia oleh kombinasi kekunci panas dalam tetingkap semasa: untuk melakukan ini, hanya klik pada "?".

Juga dalam k9s ada mod carian, untuk pergi ke mana ia cukup untuk memasukkan "/". Dengan itu, carian dilakukan pada kandungan "tetingkap" semasa. Katakan jika anda pernah masuk :ns, anda mempunyai senarai ruang nama yang terbuka. Sekiranya terdapat terlalu banyak, maka untuk tidak menatal ke bawah untuk masa yang lama, masukkan sahaja dalam tetingkap dengan ruang nama /mynamespace.
Untuk mencari mengikut label, anda boleh memilih semua pod dalam ruang nama yang diingini, kemudian masukkan, sebagai contoh, / -l app=whoami. Kami akan mendapat senarai pod dengan label ini:
![]()
Carian berfungsi dalam semua jenis tetingkap, termasuk log, melihat manifes YAML dan describe untuk sumber - lihat di bawah untuk butiran lanjut tentang ciri ini.
Apakah rupa keseluruhan aliran navigasi?
Dengan arahan :ctx anda boleh memilih konteks:

Untuk memilih ruang nama terdapat arahan yang telah disebutkan :ns, dan kemudian anda boleh menggunakan carian untuk ruang yang dikehendaki: /test.
Jika kami kini memilih sumber yang kami minati (contohnya, StatefulSet yang sama), maklumat yang sepadan akan muncul untuknya: berapa banyak pod sedang berjalan dengan maklumat ringkas tentangnya.
![]()
Hanya pod mungkin menarik - maka ia sudah cukup untuk masuk :pod. Dalam kes ConfigMaps (:cm - untuk senarai sumber ini) anda boleh memilih objek yang diminati dan klik pada "u", selepas itu K9s akan memberitahu anda siapa sebenarnya (CM ini) menggunakannya.
Satu lagi ciri berguna untuk melihat sumber ialah mereka "x-ray" (pandangan Xray). Mod ini dipanggil oleh arahan :xray RESOURCE dan ... lebih mudah untuk menunjukkan cara ia berfungsi daripada menerangkan. Berikut ialah ilustrasi untuk StatefulSets:

(Setiap sumber ini boleh diedit, diubah, dibuat describe.)
Dan inilah Deployment dengan Ingress:

Bekerja dengan sumber
Anda boleh mendapatkan maklumat tentang setiap sumber dalam YAML atau sumbernya describe dengan menekan pintasan papan kekunci yang sepadan (“y” dan “d”, masing-masing). Sudah tentu, terdapat lebih banyak operasi asas: senarai dan pintasan papan kekunci mereka sentiasa kelihatan terima kasih kepada "pengepala" yang mudah dalam antara muka (disembunyikan dengan menekan Ctrl + e).

Apabila mengedit sebarang sumber ("e" selepas pemilihannya), editor teks yang ditakrifkan dalam pembolehubah persekitaran dibuka (export EDITOR=vim).
Dan inilah rupa huraian terperinci sumber (describe):

Output ini (atau output melihat manifes YAML sumber) boleh disimpan menggunakan pintasan papan kekunci biasa Ctrl + s. Di mana ia akan disimpan akan diketahui daripada mesej K9:
Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully! Anda juga boleh memulihkan sumber daripada fail sandaran yang dibuat, selepas mengalih keluar label dan anotasi sistem. Untuk melakukan ini, anda perlu pergi ke direktori dengan mereka (:dir /tmp), kemudian pilih fail yang dikehendaki dan gunakan apply.
Dengan cara ini, pada bila-bila masa anda boleh kembali ke ReplicaSet sebelumnya jika terdapat masalah dengan yang semasa. Untuk melakukan ini, pilih RS yang dikehendaki (:rs untuk senarai mereka):

... dan putar semula dengan Ctrl + l. Kami sepatutnya mendapat pemberitahuan bahawa semuanya berjalan lancar:
k9s/whoami-5cfbdbb469 successfully rolled backDan untuk menskalakan replika, cuma klik pada "s" (skala) dan pilih bilangan kejadian yang dikehendaki:

Anda boleh memasukkan mana-mana bekas menggunakan shell: untuk melakukan ini, pergi ke pod yang dikehendaki, klik pada "s" (shell) dan pilih bekas.
Ciri-ciri lain
Sudah tentu, melihat log juga disokong ("l" untuk sumber yang dipilih). Dan untuk menonton log baharu, tidak perlu sentiasa menekan Enter: cukup untuk menandakan (“m”), dan kemudian hanya menjejaki mesej baharu.

Juga dalam tetingkap yang sama anda boleh memilih julat masa untuk mengeluarkan log:
- kunci "1" - dalam 1 minit;
- "2" - 5 minit;
- "3" - 15 minit;
- "4" - 30 minit;
- "5" - 1 jam;
- “0” — untuk sepanjang hayat pod.
Mod pengendalian khas Pulse (arahan :pulse) menunjukkan maklumat umum tentang kelompok Kubernetes:

Di dalamnya anda boleh melihat bilangan sumber dan statusnya (hijau menunjukkan mereka yang mempunyai status Running).
Satu lagi ciri hebat K9 dipanggil Popeye. Ia menyemak semua sumber untuk kriteria ketepatan tertentu dan memaparkan "penilaian" yang terhasil dengan penjelasan. Sebagai contoh, anda dapat melihat bahawa sampel atau had tidak mencukupi, dan beberapa bekas boleh dijalankan sebagai akar ...

Terdapat sokongan asas untuk Helm. Sebagai contoh, ini ialah cara anda boleh melihat keluaran yang digunakan dalam kelompok:
:helm all # все
:helm $namespace # в конкретном пространстве имен
penanda aras
Malah dibina ke dalam K9 ialah penjana beban pelayan HTTP yang mudah, alternatif kepada ab yang lebih dikenali (ApacheBench).
Untuk mendayakannya, anda perlu mendayakan port-forward dalam pod. Untuk melakukan ini, pilih pod dan tekan Shift + f, pergi ke submenu port-forward menggunakan alias "pf".

Selepas memilih port dan menekan Ctrl + b, penanda aras itu sendiri akan dilancarkan. Hasil kerjanya disimpan dalam /tmp dan tersedia untuk tontonan kemudian dalam K9s.


Untuk menukar konfigurasi penanda aras anda perlu membuat fail $HOME/.k9s/bench-<my_context>.yml (ditentukan untuk setiap kelompok).
NB: Adalah penting bahawa sambungan semua fail YAML dalam direktori .k9s ia betul-betul .yml (.yaml tidak berfungsi dengan betul).
Contoh 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
antara muka
Kemunculan lajur untuk senarai sumber diubah suai dengan mencipta fail $HOME/.k9s/views.yml. Contoh kandungannya:
k9s:
views:
v1/pods:
columns:
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services:
columns:
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
Benar, tidak ada lajur yang mencukupi untuk label, yang mana terdapatnya .
Isih mengikut lajur dijalankan dengan pintasan papan kekunci:
- Shift + n - mengikut nama;
- Shift + o - mengikut nod;
- Shift + i - mengikut IP;
- Shift + a - mengikut jangka hayat bekas;
- Shift + t - mengikut bilangan mula semula;
- Shift + r - mengikut status kesediaan;
- Shift + c - mengikut penggunaan CPU;
- Shift + m - mengikut penggunaan memori.
Jika seseorang tidak menyukai skema warna lalai, K9s juga menyokong . Contoh siap sedia (7 keping) boleh didapati . Berikut adalah contoh salah satu daripada kulit ini (dalam tentera laut):

Pemalam
Akhirnya, membolehkan anda mengembangkan keupayaan K9. Saya sendiri telah menggunakan hanya satu daripada mereka dalam kerja saya - kubectl get all -n $namespace.
Ia kelihatan seperti ini. Buat fail $HOME/.k9s/plugin.yml dengan kandungan seperti ini:
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"Kini anda boleh pergi ke ruang nama dan tekan "g" untuk melaksanakan arahan yang sepadan:

Antara pemalam terdapat, sebagai contoh, penyepaduan dengan kubectl-jq dan utiliti untuk melihat log .
Kesimpulan
Untuk citarasa saya, K9 ternyata sangat mudah digunakan: dengan itu anda boleh dengan cepat membiasakan diri untuk mencari semua yang anda perlukan tanpa menggunakan kubectl. Saya gembira dengan pandangan log dan penjimatan mereka, penyuntingan cepat sumber, kelajuan kerja secara umum *, mod Popeye ternyata berguna. Sebutan khusus ialah keupayaan untuk mencipta pemalam dan mengubah suai aplikasi untuk memenuhi keperluan anda.
* Walaupun, dengan jumlah log yang besar, saya juga perasan operasi perlahan K9. Pada saat sedemikian, utiliti "memakan" 2 teras Intel Xeon E312xx dan bahkan boleh membeku.
Apa yang hilang pada masa ini? Kembalikan cepat ke versi sebelumnya (kita tidak bercakap tentang RS) tanpa pergi ke direktori. Di samping itu, pemulihan berlaku hanya untuk sahaja sumber: jika anda memadamkan anotasi atau label, anda perlu memadam dan memulihkan keseluruhan sumber (di sinilah anda perlu pergi ke direktori). Satu lagi perkara kecil - tidak ada tarikh yang mencukupi untuk "sandaran" yang disimpan sedemikian.
PS
Baca juga di blog kami:
- «»;
- «»;
- «'.
Sumber: www.habr.com
