Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

K9s 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 GitHub 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/k9s

Untuk sesetengah pengedaran Linux dan sistem pengendalian lain, terdapat juga sedia untuk dipasang pakej. 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/bin

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

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

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.

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

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 "?".

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

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:

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

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:

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

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.

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

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:

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes
(Setiap sumber ini boleh diedit, diubah, dibuat describe.)

Dan inilah Deployment dengan Ingress:

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

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

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

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

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

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

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

... dan putar semula dengan Ctrl + l. Kami sepatutnya mendapat pemberitahuan bahawa semuanya berjalan lancar:

k9s/whoami-5cfbdbb469 successfully rolled back

Dan untuk menskalakan replika, cuma klik pada "s" (skala) dan pilih bilangan kejadian yang dikehendaki:

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

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.

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

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:

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk 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 ...

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

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 hey 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".

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

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.

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes
Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

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 isu dalam projek.

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 kulit. Contoh siap sedia (7 keping) boleh didapati di sini. Berikut adalah contoh salah satu daripada kulit ini (dalam tentera laut):

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

Pemalam

Akhirnya, pemalam 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:

Gambaran keseluruhan k9s - antara muka terminal lanjutan untuk Kubernetes

Antara pemalam terdapat, sebagai contoh, penyepaduan dengan kubectl-jq dan utiliti untuk melihat log tegas.

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

Tambah komen