ProHoster > Blog > yönetim > Kubernetes için gelişmiş bir terminal arabirimi olan k9s'ye genel bakış
Kubernetes için gelişmiş bir terminal arabirimi olan k9s'ye genel bakış
K9'lar Kubernetes kümeleriyle etkileşim için bir terminal kullanıcı arabirimi sağlar. Bu Açık Kaynak projesinin amacı, K8'lerde uygulamalarda gezinmeyi, izlemeyi ve yönetmeyi kolaylaştırmaktır. K9s, Kubernetes'teki değişiklikleri sürekli olarak izler ve izlenen kaynaklarla çalışmak için hızlı komutlar sunar.
Proje Go'da yazılmıştır ve bir buçuk yılı aşkın süredir kullanılmaktadır: ilk taahhüt 1 Şubat 2019'da yapılmıştır. Yazma sırasında, üzerinde 9000'den fazla yıldız var GitHub ve yaklaşık 80 katılımcı. Bakalım k9'lar neler yapabiliyor?
Kurulum ve başlatma
Bu, Docker görüntüsü olarak çalıştırılması en kolay olan bir istemci (Kubernetes kümesiyle ilişkili olarak) uygulamasıdır:
docker run --rm -it -v $KUBECONFIG:/root/.kube/config quay.io/derailed/k9s
Bazı Linux dağıtımları ve diğer işletim sistemleri için ayrıca kuruluma hazır пакеты. Genel olarak, Linux sistemleri için bir ikili dosya kurabilirsiniz:
K8s kümesinin kendisi için özel gereksinimler yoktur. İncelemelere bakılırsa uygulama, Kubernetes'in 1.12 gibi eski sürümleriyle de çalışıyor.
Uygulama, standart yapılandırma kullanılarak başlatılır .kube/config - nasıl yaptığına benzer kubectl.
Navigasyon
Varsayılan olarak, bağlam için belirtilen varsayılan ad alanıyla bir pencere açılır. yani sen yazsaydın kubectl config set-context --current --namespace=test, ardından ad alanı açılır test. (Bağlamları/ad alanlarını değiştirmek için aşağıya bakın.)
git komut modu ":" tuşuna basılarak yapılır. Bundan sonra, komutları kullanarak k9'ların çalışmasını kontrol edebilirsiniz - örneğin, StatefulSets listesini görüntülemek için (geçerli ad alanında), girebilirsiniz. :sts.
Diğer bazı Kubernetes kaynakları için:
:ns — ad alanları;
:deploy — Dağıtımlar;
:ing — Girişler;
:svc - Hizmetler.
Görüntülemeye uygun kaynak türlerinin tam listesini görüntülemek için bir komut vardır. :aliases.
Geçerli pencerede kısayol tuş kombinasyonlarıyla kullanılabilen komutların listesini görüntülemek de uygundur: bunu yapmak için "?" üzerine tıklamanız yeterlidir.
Ayrıca k9s'de var Arama modu, "/" girmenin yeterli olduğu yere gitmek için. Bununla, mevcut "pencerenin" içeriği üzerinde bir arama yapılır. Diyelim ki daha önce girdiniz :ns, açık bir ad alanları listeniz var. Çok fazla varsa, uzun süre aşağı kaydırmamak için ad alanlarını içeren pencereye girmek yeterlidir. /mynamespace.
Etiketlere göre aramak için, istediğiniz ad alanındaki tüm bölmeleri seçebilir, ardından örneğin şunu girebilirsiniz: / -l app=whoami. Bu etikete sahip bölmelerin bir listesini alacağız:
Arama, günlükler, YAML bildirimlerini görüntüleme ve describe kaynaklar için - bu özellikler hakkında daha fazla ayrıntı için aşağıya bakın.
Genel gezinme akışı nasıl görünüyor?
komutu ile :ctx bir bağlam seçebilirsiniz:
Bir ad alanı seçmek için, daha önce bahsedilen komut vardır. :nsve ardından istediğiniz alan için aramayı kullanabilirsiniz: /test.
Şimdi ilgilendiğimiz kaynağı seçersek (örneğin, aynı StatefulSet), bunun için ilgili bilgi görünecektir: onlar hakkında kısa bilgilerle kaç bölme çalışıyor.
Yalnızca bölmeler ilgi çekici olabilir - o zaman girmek yeterlidir :pod. ConfigMaps durumunda (:cm - bu kaynakların listesi için), ilgilenilen nesneyi seçebilir ve "u" üzerine tıklayabilirsiniz, ardından K9'lar size onu özellikle kimin kullandığını söyleyecektir (bu CM).
Kaynakları görüntülemek için başka bir kullanışlı özellik, "x-ray" (Xray görünümü). Bu mod komut tarafından çağrılır. :xray RESOURCE ve ... nasıl çalıştığını göstermek, açıklamaktan daha kolaydır. İşte StatefulSets için bir örnek:
(Bu kaynakların her biri düzenlenebilir, değiştirilebilir, describe.)
Ve işte Ingress ile Dağıtım:
Kaynaklarla çalışma
YAML'deki her kaynak veya onun hakkında bilgi alabilirsiniz. describe karşılık gelen klavye kısayollarına (sırasıyla “y” ve “d”) basarak. Tabii ki, daha da temel işlemler var: bunların listesi ve klavye kısayolları, arayüzdeki uygun bir "başlık" sayesinde her zaman görünür durumdadır (Ctrl + e tuşlarına basarak gizlenir).
Herhangi bir kaynağı düzenlerken (seçiminden sonra "e"), ortam değişkenlerinde tanımlanan metin düzenleyici açılır (export EDITOR=vim).
Ve işte kaynağın ayrıntılı açıklaması şöyle görünüyor (describe):
Bu çıktı (veya YAML kaynak bildirimini görüntüleme çıktısı), bilinen Ctrl + s klavye kısayolu kullanılarak kaydedilebilir. Nereye kaydedileceği K9s mesajından bilinecektir:
Sistem etiketlerini ve ek açıklamaları kaldırdıktan sonra, kaynakları oluşturulan yedekleme dosyalarından da geri yükleyebilirsiniz. Bunu yapmak için, onlarla dizine gitmeniz gerekir (:dir /tmp), ardından istediğiniz dosyayı seçin ve uygulayın apply.
Bu arada, mevcut olanla ilgili sorunlar varsa, istediğiniz zaman önceki ReplicaSet'e geri dönebilirsiniz. Bunu yapmak için istenen RS'yi seçin (:rs onların listesi için):
... ve Ctrl + l ile geri alma. Her şeyin yolunda gittiğine dair bir bildirim almalıyız:
k9s/whoami-5cfbdbb469 successfully rolled back
Kopyaları ölçeklendirmek için "s" (ölçek) üzerine tıklamanız ve istediğiniz örnek sayısını seçmeniz yeterlidir:
Kabuğu kullanarak herhangi bir kapsayıcıya girebilirsiniz: bunu yapmak için, istenen bölmeye gidin, "s" (kabuk) üzerine tıklayın ve kabı seçin.
Diğer özellikleri
Elbette günlüklerin görüntülenmesi de desteklenir (seçilen kaynak için "l"). Ve yeni günlükleri izlemek için sürekli olarak Enter tuşuna basmaya gerek yoktur: ("m") işaretlemek ve ardından yalnızca yeni mesajları izlemek yeterlidir.
Ayrıca aynı pencerede günlüklerin çıktısı için zaman aralığını seçebilirsiniz:
"1" tuşu - 1 dakika için;
"2 dakika;
"3 dakika;
"4 dakika;
"5" - 1 saat;
"0" - bölmenin tüm kullanım ömrü boyunca.
Özel çalışma modu Darbe (komut :pulse), Kubernetes kümesi hakkında genel bilgileri gösterir:
İçinde kaynakların sayısını ve durumlarını görebilirsiniz (yeşil, duruma sahip olanları gösterir. Running).
K9'ların bir başka harika özelliği de Popeye. Belirli doğruluk kriterleri için tüm kaynakları kontrol eder ve ortaya çıkan "derecelendirmeyi" açıklamalarla birlikte görüntüler. Örneğin, yeterli sample veya limit olmadığını ve bazı container'ların root olarak çalışabildiğini görebilirsiniz...
Temel Helm desteği var. Örneğin, kümede dağıtılan sürümleri şu şekilde görebilirsiniz:
:helm all # все
:helm $namespace # в конкретном пространстве имен
kıyaslama
K9'larda bile yerleşik hey basit bir HTTP sunucusu yük üreteci, daha iyi bilinen ab'ye (ApacheBench) bir alternatiftir.
Etkinleştirmek için bölmede bağlantı noktası iletmeyi etkinleştirmeniz gerekir. Bunu yapmak için bölmeyi seçin ve Shift + f tuşlarına basın, "pf" takma adını kullanarak bağlantı noktası iletme alt menüsüne gidin.
Bağlantı noktasını seçtikten ve Ctrl + b'ye bastıktan sonra, kıyaslamanın kendisi başlayacaktır. Çalışmalarının sonuçları depolanır. /tmp ve daha sonra K9'larda görüntülenebilir.
Kıyaslama yapılandırmasını değiştirmek için bir dosya oluşturmanız gerekir. $HOME/.k9s/bench-<my_context>.yml (her küme için belirlenir).
Not: Bir dizindeki tüm YAML dosyalarının uzantısının .k9s tam olarak öyleydi .yml (.yaml düzgün çalışmıyor).
Yapılandırma örneği:
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
Arayüz.
Kaynak listeleri için sütunların görünümü, bir dosya oluşturularak değiştirilir. $HOME/.k9s/views.yml. İçeriğine bir örnek:
k9s:
views:
v1/pods:
columns:
- AGE
- NAMESPACE
- NAME
- IP
- NODE
- STATUS
- READY
v1/services:
columns:
- AGE
- NAMESPACE
- NAME
- TYPE
- CLUSTER-IP
Sütunlara göre sıralama, klavye kısayollarıyla gerçekleştirilir:
Shift + n - ada göre;
Shift + o - düğümlere göre;
Shift + i - IP'ye göre;
Shift + a - kabın kullanım ömrüne göre;
Shift + t - yeniden başlatma sayısına göre;
Shift + r - hazırlık durumuna göre;
Shift + c - CPU tüketimine göre;
Shift + m - bellek tüketimine göre.
Birisi varsayılan renk düzenini beğenmezse, K9s bile destekler deriler. Hazır örnekler (7 adet) mevcuttur burada. İşte bu derilerden birine bir örnek (donanmada):
Eklentiler
Son olarak, eklentiler K9'ların yeteneklerini genişletmenize izin verir. Ben kendim işimde bunlardan sadece birini kullandım - kubectl get all -n $namespace.
Bu gibi görünüyor. dosya oluştur $HOME/.k9s/plugin.yml bunun gibi içerikle:
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"
Artık ad alanına gidebilir ve ilgili komutla yürütmek için "g" tuşuna basabilirsiniz:
Eklentiler arasında, örneğin, kubectl-jq ile entegrasyonlar ve günlükleri görüntülemek için bir yardımcı program vardır. star.
Sonuç
Benim zevkime göre, K9'larla çalışmanın çok uygun olduğu ortaya çıktı: ihtiyacınız olan her şeyi kullanmadan aramaya çabucak alışabilirsiniz. kubectl. Günlüklerin görünümünden ve kaydedilmesinden, kaynakların hızlı düzenlenmesinden, genel olarak iş hızından * memnun kaldım, Temel Reis modunun faydalı olduğu ortaya çıktı. Özel bir söz, eklentiler oluşturma ve uygulamayı ihtiyaçlarınıza göre değiştirme yeteneğidir.
* Bununla birlikte, büyük hacimli günlüklerle K9'ların yavaş çalıştığını da fark ettim. Böyle anlarda, yardımcı program Intel Xeon E2xx'ten 312 çekirdeği "yedi" ve hatta donabilirdi.
Şu anda eksik olan nedir? Dizine gitmeden önceki sürüme hızlı geri dönüş (RS'den bahsetmiyoruz). Ayrıca, kurtarma yalnızca sadece kaynak: Bir açıklamayı veya etiketi silerseniz, tüm kaynağı silmeniz ve geri yüklemeniz gerekir (dizine gitmeniz gereken yer burasıdır). Başka bir önemsiz şey - bu tür kaydedilmiş "yedeklemeler" için yeterli tarih yok.