Kubernetes Web Görünümü Duyurusu (ve Kubernetes için diğer web kullanıcı arayüzlerine kısa bir genel bakış)

Not. tercüme: Orijinal materyalin yazarı Zalando'dan Henning Jacobs'tur. Kubernetes ile çalışmak için "web için kubectl" olarak konumlandırılan yeni bir web arayüzü oluşturdu. Neden yeni bir Açık Kaynak projesi ortaya çıktı ve mevcut çözümler hangi kriterleri karşılamadı - makalesini okuyun.

Kubernetes Web Görünümü Duyurusu (ve Kubernetes için diğer web kullanıcı arayüzlerine kısa bir genel bakış)

Bu yazıda çeşitli açık kaynaklı Kubernetes web arayüzlerini inceleyeceğim, evrensel bir kullanıcı arayüzü için gereksinimlerimi ortaya koyacağım ve neden geliştirdiğimi açıklayacağım Kubernetes Web Görünümü — Aynı anda birden fazla kümeyi desteklemeyi ve sorun gidermeyi kolaylaştırmak için tasarlanmış bir arayüz.

Kullanım örnekleri

Zalando'da çok sayıda Kubernetes kullanıcısına (900+) ve kümeye (100+) hizmet veriyoruz. Özel bir web aracından yararlanabilecek birkaç yaygın kullanım durumu vardır:

  1. destek için meslektaşlarla iletişim;
  2. olaylara müdahale ve bunların nedenlerinin araştırılması.

Destek

Deneyimlerime göre destek iletişimi genellikle şöyle görünür:

— Yardım edin, XYZ hizmetimiz kullanılamıyor!
Bunu yaptığında ne görüyorsun? kubectl describe ingress ...?

Veya CRD için benzer bir şey:

— Kimlik belirleme hizmetiyle ilgili bir sorunum var...
- Komut sorunu nedir? kubectl describe platformcredentialsset ...?

Bu tür bir iletişim genellikle komutun çeşitli varyasyonlarının girilmesiyle sonuçlanır. kubectl Sorunu tanımlamak için. Sonuç olarak, görüşmenin her iki tarafı da sürekli olarak terminal ile web sohbeti arasında geçiş yapmak zorunda kalıyor ve ayrıca farklı bir durum gözlemliyorlar.

Bu nedenle Kubernetes web ön ucunun aşağıdakilere izin vermesini istiyorum:

  • kullanıcılar yapabilir bağlantı alışverişi ve aynı şeyi gözlemleyin;
  • yardımcı olurdu insan hatasını önlemek destekte: örneğin, komut satırında yanlış kümeye giriş yapmak, CLI komutlarında yazım hataları vb.;
  • izin verirdi özel görünümler oluştur meslektaşlarınıza göndermek, yani etiket sütunları eklemek, birçok kaynak türünü tek sayfada görüntülemek;
  • ideal olarak, bu web aracı şunları koymanıza izin vermelidir: YAML'nin belirli bölümlerine derin bağlantılar (örneğin, çökmelere neden olan yanlış parametreye işaret etmek).

Olay müdahalesi ve analizi

Altyapı olaylarına müdahale etmek durumsal farkındalık, etkiyi değerlendirme yeteneği ve kümelerdeki modelleri arama becerisi gerektirir. Bazı gerçek hayattan örnekler:

  • Kritik bir üretim hizmetinde sorunlar yaşanıyor ve yapmanız gerekenler tüm kümelerdeki tüm Kubernetes kaynaklarını ada göre bulunsorun gidermek için;
  • ölçeklendirme sırasında düğümler düşmeye başlar ve ihtiyacınız olan tüm kümelerdeki "Beklemede" durumuna sahip tüm bölmeleri bulsorunun kapsamını değerlendirmek;
  • bireysel kullanıcılar tüm kümelere dağıtılan DaemonSet ile ilgili bir sorun bildiriyor ve bunu çözmeleri gerekiyor Sorun genel mi?.

Bu gibi durumlarda standart çözümüm şöyle bir şey: for i in $clusters; do kubectl ...; done. Açıkçası benzer yetenekler sağlayan bir araç geliştirmek mümkündür.

Mevcut Kubernetes web arayüzleri

Kubernetes'e yönelik web arayüzlerinin açık kaynak dünyası çok büyük değil*, bu yüzden kullanarak daha fazla bilgi toplamaya çalıştım. Twitter:

Kubernetes Web Görünümü Duyurusu (ve Kubernetes için diğer web kullanıcı arayüzlerine kısa bir genel bakış)

*Kubernetes için sınırlı sayıda web arayüzüne ilişkin açıklamam: bulut hizmetleri ve Kubernetes satıcıları genellikle kendi ön uçlarını sunar, bu nedenle "iyi" ücretsiz Kubernetes kullanıcı arayüzü pazarı nispeten küçüktür.

Bir tweet sayesinde şunu öğrendim K8Dash, Kubernator и Oktant. Gelin bunlara ve mevcut diğer Açık Kaynak çözümlerine bakalım, ne olduklarını anlamaya çalışalım.

K8Dash

"K8Dash, Kubernetes kümesini yönetmenin en basit yoludur."

Kubernetes Web Görünümü Duyurusu (ve Kubernetes için diğer web kullanıcı arayüzlerine kısa bir genel bakış)

K8Dash İyi görünüyor ve hızlı hissettiriyor ancak yukarıda listelenen kullanım durumlarında bir takım dezavantajlara sahiptir:

  • Yalnızca bir kümenin sınırları içinde çalışır.
  • Sıralama ve filtreleme mümkündür ancak kalıcı bağlantılara sahip değildir.
  • Özel Kaynak Tanımları (CRD'ler) desteği yoktur.

Kubernator

“Kubernator, Kubernetes için alternatif bir kullanıcı arayüzü. Üst düzey Kubernetes Dashboard'un aksine, yenilerini oluşturma, bunları düzenleme ve çakışmaları çözme yeteneğiyle birlikte düşük düzeyde kontrol ve kümedeki tüm nesnelere ilişkin harika bir genel bakış sağlar. Tamamen bir istemci uygulaması olduğundan (kubectl gibi), Kubernetes API sunucusu dışında herhangi bir arka uca ihtiyaç duymuyor ve ayrıca kümeye erişim kurallarına da uyuyor.”

Kubernetes Web Görünümü Duyurusu (ve Kubernetes için diğer web kullanıcı arayüzlerine kısa bir genel bakış)

Bu oldukça doğru bir açıklama. Kubernator. Ne yazık ki bazı özelliklerden yoksun:

  • Yalnızca bir kümeye hizmet eder.
  • Liste görünümü modu yoktur (yani "Beklemede" durumundaki tüm bölmeleri görüntüleyemezsiniz).

Kubernetes Kontrol Paneli

“Kubernetes Dashboard, Kubernetes kümeleri için evrensel bir web arayüzüdür. Kullanıcıların bir kümede çalışan uygulamaları yönetmesine ve sorunlarını gidermesinin yanı sıra kümenin kendisini yönetmesine olanak tanır."

Kubernetes Web Görünümü Duyurusu (ve Kubernetes için diğer web kullanıcı arayüzlerine kısa bir genel bakış)

Ne yazık ki, Kubernetes Kontrol Paneli destek ve olay müdahale faaliyetlerime pek yardımcı olmuyor çünkü:

  • örneğin kaynakları filtrelediğimde veya sıralama düzenini değiştirdiğimde kalıcı bağlantılar yok;
  • duruma göre filtrelemenin kolay bir yolu yoktur; örneğin, durumu "Beklemede" olan tüm bölmeleri görün;
  • yalnızca bir küme desteklenir;
  • CRD'ler desteklenmez (bu özellik geliştirilme aşamasındadır);
  • özel sütun yok (türe göre etiketlenmiş sütunlar gibi) kubectl -L).

Kubernetes Operasyonel Görünümü (kube-ops-view)

"K8s küme alanının sistem paneli gözlemcisi".

Kubernetes Web Görünümü Duyurusu (ve Kubernetes için diğer web kullanıcı arayüzlerine kısa bir genel bakış)

У Kubernetes Operasyonel Görünümü Tamamen farklı bir yaklaşım: Bu araç, herhangi bir metinsel nesne ayrıntısı olmadan yalnızca WebGL kullanan küme düğümlerini ve bölmeleri gösterir. Kümenin durumuna hızlı bir genel bakış için harikadır (kapsüller düşüyor mu?)*, ancak yukarıda açıklanan destek ve olay müdahalesi kullanım senaryoları için uygun değildir.

* Not. tercüme: Bu anlamda eklentimiz de ilginizi çekebilir grafana durum haritasıdaha ayrıntılı olarak tartıştığımız Bu makalede.

Kubernetes Kaynak Raporu (kube-kaynak-raporu)

"Pod ve Kubernetes kümesi kaynak isteklerini toplayın, bunları kaynak tüketimiyle karşılaştırın ve statik HTML oluşturun."

Kubernetes Web Görünümü Duyurusu (ve Kubernetes için diğer web kullanıcı arayüzlerine kısa bir genel bakış)

Kubernetes Kaynak Raporu kümelerdeki ekipler/uygulamalar arasında kaynak kullanımı ve maliyet dağılımı hakkında statik HTML raporları oluşturur. Rapor, uygulamanın dağıtıldığı kümeyi hızlı bir şekilde bulmanızı sağladığı için destek ve olay müdahalesi açısından oldukça faydalıdır.

Not. tercüme: Bir hizmet ve araç, kaynakların bulut sağlayıcıları arasında tahsisi ve maliyetleri hakkındaki bilgilerin görüntülenmesinde de yararlı olabilir. Kubecostincelediğimiz yakın zamanda yayınlandı.

Oktant

"Geliştiriciler için Kubernetes kümelerinin karmaşıklığının daha iyi anlaşılmasını sağlamak üzere tasarlanmış genişletilebilir bir web platformu."

Kubernetes Web Görünümü Duyurusu (ve Kubernetes için diğer web kullanıcı arayüzlerine kısa bir genel bakış)

OktantVMware tarafından oluşturulan, nispeten yakın zamanda öğrendiğim yeni bir üründür. Onun yardımıyla kümeyi yerel bir makinede keşfetmek uygundur (hatta görselleştirmeler bile vardır), ancak destek ve olaya müdahale konularını yalnızca sınırlı bir ölçüde ele alır. Octant'ın dezavantajları:

  • Küme araması yok.
  • Yalnızca yerel makinede çalışır (bir kümeye dağıtılmaz).
  • Nesneler sıralanamıyor/filtrelenemiyor (yalnızca etiket seçici desteklenir).
  • Özel sütunlar ayarlayamazsınız.
  • Nesneleri ad alanına göre listeleyemezsiniz.

Octant'ın Zalando kümeleriyle olan istikrarı konusunda da sorunlar yaşadım: bazı CRD'lerde O düştü.

Kubernetes Web Görünümüyle Tanışın

"web için kubectl".

Kubernetes Web Görünümü Duyurusu (ve Kubernetes için diğer web kullanıcı arayüzlerine kısa bir genel bakış)

Kubernetes için mevcut arayüz seçeneklerini analiz ettikten sonra yeni bir tane oluşturmaya karar verdim: Kubernetes Web Görünümü. Sonuçta, aslında tüm güce ihtiyacım var kubectl internette, yani:

  • kullanıcıların kubectl'i kullanmayı tercih ettiği tüm (salt okunur) işlemlerin kullanılabilirliği;
  • tüm URL'ler kalıcı olmalı ve meslektaşların bunları paylaşabilmesi ve diğer araçlarda kullanabilmesi için sayfayı orijinal biçiminde temsil etmelidir;
  • her türlü sorunu çözmenize olanak sağlayacak tüm Kubernetes nesneleri için destek;
  • kaynak listeleri daha ileri çalışmalar için indirilebilir olmalıdır (e-tablolarda, örneğin CLI araçları grep) ve depolama (örneğin ölüm sonrası işlemler için);
  • kaynakları etikete göre seçme desteği (benzer) kubectl get .. -l);
  • çeşitli kaynak türlerinin birleşik listelerini oluşturma yeteneği (benzer) kubectl get all) meslektaşlar arasında ortak bir operasyonel tablo elde etmek (örneğin bir olaya müdahale sırasında);
  • kontrol panelleri, günlükçüler, uygulama kayıtları vb. gibi diğer araçlara özel akıllı derin bağlantılar ekleme yeteneği. hataları gidermeyi/çözmeyi ve olaylara müdahale etmeyi kolaylaştırmak;
  • Dondurulmuş JavaScript gibi rastgele sorunlardan kaçınmak için ön uç mümkün olduğunca basit (saf HTML) olmalıdır;
  • uzaktan danışmanlık sırasında etkileşimi basitleştirmek için birden fazla küme desteği (örneğin, yalnızca bir URL'yi hatırlamak);
  • Mümkünse durum analizi basitleştirilmelidir (örneğin, tüm kümeler/ad alanları için kaynakların indirilmesine yönelik bağlantılar);
  • esnek bağlantılar oluşturmak ve metin bilgilerini vurgulamak için ek fırsatlar; örneğin, meslektaşlarınızı kaynak açıklamasındaki belirli bir bölüme (YAML'de bir satır) yönlendirebilirsiniz;
  • belirli bir müşterinin gereksinimlerine göre özelleştirme yeteneği; örneğin, CRD'ler için özel görüntüleme şablonları, kendi tablo görünümleriniz oluşturmanıza ve CSS stillerini değiştirmenize olanak tanır;
  • komut satırında daha fazla araştırma yapmak için araçlar (örneğin, tüm komutların gösterilmesi) kubectlkopyalanmaya hazır);

Kubernetes Web View'da çözülen görevlerin ötesinde (hedef olmayan) kaldı:

  • Kubernetes nesnelerinin soyutlanması;
  • uygulama yönetimi (örneğin dağıtım yönetimi, Dümen çizelgeleri vb.);
  • yazma işlemleri (güvenli CI/CD ve/veya GitOps araçları aracılığıyla yapılmalıdır);
  • güzel arayüz (JavaScript, temalar vb.);
  • görselleştirme (bkz. kube-ops-görünümü);
  • maliyet analizi (bkz. kube-kaynak-raporu).

Kubernetes Web View, destek ve olaylara müdahale konusunda nasıl yardımcı olur?

Destek

  • Tüm bağlantılar kalıcıdırbilgileri meslektaşlarınızla paylaşmayı kolaylaştırır.
  • Yaratabilir Onların görüşleriörneğin, tüm Dağıtımları ve Kapsülleri belirli bir etiketle iki belirli kümede görüntüleyin (bağlantıda, virgülle ayrılmış olarak birkaç küme adı ve kaynak türü belirtilebilir).
  • Başvurabilirsiniz yaml dosyasındaki belirli satırlar Nesne belirtimindeki olası sorunları gösteren nesne.

Kubernetes Web Görünümü Duyurusu (ve Kubernetes için diğer web kullanıcı arayüzlerine kısa bir genel bakış)
Kubernetes Web Görünümünde küme araması

Olay yanıtı

  • küresel arama (genel arama) tüm kümelerdeki nesneleri aramanıza olanak tanır.
  • Liste Görünümleri tüm kümelerdeki belirli bir duruma/sütuna sahip tüm nesneleri görüntüleyebilir (örneğin, “Beklemede” durumuna sahip tüm bölmeleri bulmamız gerekir).
  • Nesne listeleri indirilebilir daha sonraki analiz için sekmeyle ayrılmış değer (TSV) biçiminde.
  • Özel Harici Bağlantılar ilgili kontrol panellerine ve diğer araçlara geçiş yapmanızı sağlar.

Kubernetes Web Görünümü Duyurusu (ve Kubernetes için diğer web kullanıcı arayüzlerine kısa bir genel bakış)
Kubernetes Web Görünümü: tüm kümelerde "Beklemede" durumuna sahip bölmelerin listesi

Kubernetes Web Görünümünü denemek istiyorsanız, göz atmanızı öneririm belgeler ya da bak canlı demo.

Elbette arayüz daha iyi olabilirdi, ancak şimdilik Kubernetes Web View, gerekirse URL yollarını manuel olarak değiştirmekten çekinmeyen "ileri düzey kullanıcılar" için bir araçtır. Yorumlarınız/eklemeleriniz/önerileriniz varsa lütfen iletişime geçin beni Twitter'da takip et!

Bu makale, Kubernetes Web Görünümü'nün oluşturulmasına yol açan arka planın kısa bir tarihçesidir. Daha fazlası takip edecek! (Not. tercüme: Bunlar beklenmelidir yazarın blogu.)

PSçevirmenden

Blogumuzda da okuyun:

Kaynak: habr.com

Yorum ekle