Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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:

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

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

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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.

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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:

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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:

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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.

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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:

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes
(Unggal sumber ieu tiasa diédit, dirobih, didamel describe.)

Sareng ieu Deployment sareng Ingress:

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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:

Log /tmp/k9s-screens-root/kubernetes/Describe-1601244920104133900.yml saved successfully!

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

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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.

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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:

Tinjauan k9s - panganteur terminal canggih pikeun 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 ...

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

Saatos milih port sareng mencét Ctrl + b, patokan sorangan bakal ngamimitian. Hasil karyana disimpen di /tmp sarta sadia pikeun nempo engké di K9s.

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes
Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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

Leres, teu aya cukup kolom pikeun labél, anu aya masalah dina proyék.

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

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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:

Tinjauan k9s - panganteur terminal canggih pikeun Kubernetes

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

PS

Baca ogé dina blog urang:

sumber: www.habr.com

Tambahkeun komentar