Buluttaki Kubernetes'te para tasarrufu için Kubecost incelemesi

Buluttaki Kubernetes'te para tasarrufu için Kubecost incelemesi

Şu anda giderek daha fazla şirket altyapılarını donanım sunucularından ve kendi sanal makinelerinden buluta aktarıyor. Bu çözümün açıklanması kolaydır: Donanım konusunda endişelenmenize gerek yoktur, küme birçok farklı yolla kolayca yapılandırılabilir... ve en önemlisi, mevcut teknolojiler (Kubernetes gibi), yüke bağlı olarak bilgi işlem gücünü basit bir şekilde ölçeklendirmeyi mümkün kılar .

Mali yönü her zaman önemlidir. Bu makalede ele alınan araç, Kubernetes ile bulut altyapısını kullanırken bütçelerin azaltılmasına yardımcı olmak için tasarlanmıştır.

Giriş

Kubecost Bulut hizmetlerinde (Kubernetes kümesi + paylaşılan kaynaklar dahilinde) altyapı maliyetlerini hesaplamak, küme ayarlarındaki darboğazları aramak ve Slack'e uygun bildirimler göndermek için bir çözüm üreten Google'ın Kaliforniyalı bir girişimidir.

Hem tanıdık AWS hem de GCP bulutlarında ve daha nadiren Linux topluluğu için Azure'da (genel olarak Kubecost tarafından desteklenen tüm platformlarda) Kubernetes'e sahip müşterilerimiz var. Bazıları için küme içi hizmetlerin maliyetlerini kendimiz hesaplıyoruz (Kubecost'un kullandığı yönteme benzer bir yöntem kullanarak), ayrıca altyapı maliyetlerini de takip edip optimize etmeye çalışıyoruz. Bu nedenle, bu tür görevleri otomatikleştirme olasılığıyla ilgilenmemiz mantıklı.

Ana Kubecost modülünün kaynak kodu, Açık Kaynak lisansının (Apache Lisansı 2.0) koşulları kapsamında açıktır. Serbestçe kullanılabilir ve mevcut özelliklerin küçük projeler için yeterli olması gerekir. Ancak iş iştir: Ürünün geri kalanı kapalıdır, tarafından kullanılabilir. ücretli aboneliklerBu aynı zamanda ticari desteği de ima eder. Ayrıca yazarlar, küçük kümeler için ücretsiz bir lisans (1 düğümlü 10 küme - bu makalenin yazıldığı sırada bu sınır 20 düğüme kadar genişletilmiştir) veya 1 aylık tam özellikli bir deneme süresi sunmaktadır.

Her şey nasıl çalışıyor?

Yani Kubecost'un ana kısmı uygulamadır maliyet modeli, Go'da yazılmıştır. Sistemin tamamını açıklayan Helm şemasına ne ad verilir? maliyet analizörü ve özünde Prometheus, Grafana ve çeşitli gösterge panolarından oluşan bir maliyet modelinden oluşan bir montaj yer alıyor.

Genel olarak konuşursak, maliyet modelinin, maliyetlere ilişkin grafikleri ve ayrıntılı istatistikleri tablo halinde gösteren ve elbette maliyetleri optimize etmeye yönelik ipuçlarını gösteren kendi web arayüzü vardır. Grafana'da sunulan kontrol panelleri, Kubecost'un geliştirilmesinde daha erken bir aşamadır ve maliyet modeliyle hemen hemen aynı verileri içerir ve bunları kümedeki ve bileşenlerindeki CPU/bellek/ağ/disk alanı tüketimine ilişkin olağan istatistiklerle tamamlar. .

Kubecost nasıl çalışır?

  • Maliyet modeli, bulut sağlayıcıların API'si aracılığıyla hizmetlerin fiyatlarını alır.
  • Ayrıca düğüm noktasının demir tipine ve bölgeye bağlı olarak düğüm başına maliyet hesaplanır.
  • Düğüm çalıştırma maliyetine bağlı olarak, her yaprak pod, üzerinde çalıştığı düğüme veya depolama sınıfına bağlı olarak saat başına CPU kullanımı, tüketilen gigabayt bellek başına ve depolanan gigabayt veri başına saat başına maliyet alır.
  • Ödeme, bireysel bölmelerin işletim maliyetine bağlı olarak ad alanları, hizmetler, Dağıtımlar ve StatefulSet'ler için hesaplanır.
  • İstatistikler, kube-state-metrics ve node-exporter tarafından sağlanan ölçümler kullanılarak hesaplanır.

Kubecost'un dikkate alınması önemlidir. varsayılan olarak yalnızca Kubernetes'te bulunan kaynakları sayar. Kümede olmayan harici veritabanları, GitLab sunucuları, S3 depoları ve diğer hizmetler (aynı bulutta bulunsalar bile) ona görünmez. GCP ve AWS için hizmet hesaplarınızın anahtarlarını ekleyebilir ve her şeyi birlikte hesaplayabilirsiniz.

Montaj

Kubecost şunları gerektirir:

  • Kubernetes sürüm 1.8 ve üzeri;
  • kube-durum-metrikleri;
  • Prometheus;
  • düğüm ihracatçısı.

Öyle oldu ki kümelerimizde tüm bu koşullar önceden karşılandı ve Prometheus'a erişim için yalnızca doğru uç noktayı belirtmenin yeterli olduğu ortaya çıktı. Ancak resmi kubecost Helm grafiği, çıplak bir kümede çalıştırmak için ihtiyacınız olan her şeyi içerir.

Kubecost'u kurmanın birkaç yolu vardır:

  1. bölümünde açıklanan standart kurulum yöntemi talimatlar geliştiricinin web sitesinde.Gerekli maliyet analizörü deposunu Helm'e ekleyin ve ardından grafiği yükleyin. Geriye kalan tek şey bağlantı noktanızı iletmek ve ayarları manuel olarak (kubectl aracılığıyla) ve/veya maliyet modeli web arayüzünü kullanarak istenen duruma ayarlamaktır.

    Üçüncü taraf hazır konfigürasyonları kullanmadığımız için bu yöntemi denemedik bile, ancak iyi bir "sadece kendiniz deneyin" seçeneği gibi görünüyor. Sistem bileşenlerinden bazıları zaten kuruluysa veya daha fazla ince ayar yapmak istiyorsanız ikinci yolu düşünmek daha iyidir.

  2. Esas olarak kullanın aynı grafikancak kendiniz yapılandırıp yükleyin herhangi bir uygun şekilde.

    Daha önce de belirtildiği gibi bu grafik, kubecost'un yanı sıra isteğe göre özelleştirilebilen Grafana ve Prometheus grafiklerini de içerir.

    Grafikte mevcut values.yaml maliyet analizörü için şunları yapılandırmanıza olanak tanır:

    • dağıtılması gereken maliyet analizörü bileşenlerinin bir listesi;
    • Prometheus için son noktanız (zaten bir tane varsa);
    • maliyet modeli ve Grafana için alanlar ve diğer giriş ayarları;
    • bölmeler için ek açıklamalar;
    • kalıcı depolama kullanma ihtiyacı ve boyutu.

    Mevcut yapılandırma seçeneklerinin açıklamalarıyla birlikte tam listesi şu adreste mevcuttur: belgeleme.

    Kubecost'un temel sürümü erişimi kısıtlayamayacağından, web paneli için hemen temel kimlik doğrulamasını yapılandırmanız gerekecektir.

  3. kurmak yalnızca sistem çekirdeği - maliyet modeli. Bunu yapmak için, kümede Prometheus'un kurulu olması ve adresinin karşılık gelen değerini değişkende belirtmeniz gerekir. prometheusEndpoint Helm için. Bundan sonra - uygula YAML yapılandırmaları kümesi kümede.

    Yine, Ingress'i temel kimlik doğrulamasıyla manuel olarak eklemeniz gerekecek. Son olarak, maliyet modeli metriklerini toplamak için bir bölüm eklemeniz gerekecektir. extraScrapeConfigs Prometheus yapılandırmasında:

    - job_name: kubecost
      honor_labels: true
      scrape_interval: 1m
      scrape_timeout: 10s
      metrics_path: /metrics
      scheme: http
      dns_sd_configs:
      - names:
        - <адрес вашего сервиса kubecost>
        type: 'A'
        port: 9003

Ne alıyoruz?

Tam kurulumla birlikte kubecost ve Grafana web panelini ve bir dizi gösterge panosunu elimizde tutuyoruz.

ToplamAna ekranda görüntülenen, aslında o ay için kaynakların tahmini maliyetini gösterir. Bu tahmin edilebilir mevcut kaynak tüketimi düzeyinde kümeyi kullanmanın maliyetini (aylık) yansıtan fiyat.

Bu ölçüm daha çok harcamaları analiz etmek ve optimize etmek içindir. Temmuz ayı özetinin toplam maliyetine kubecost'ta bakmak pek uygun değil: bunu yapmanız gerekecek faturalandırmaya git. Ancak maliyetlerin 1/2/7/30/90 gün boyunca ad alanlarına, etiketlere ve kapsüllere göre kırılımını görebilirsiniz; faturalandırma bunları size hiçbir zaman göstermeyecektir.

Buluttaki Kubernetes'te para tasarrufu için Kubecost incelemesi

Bahsederken etiketler. Hemen ayarlara gitmeli ve maliyetleri gruplamak için ek kategoriler olarak kullanılacak etiketlerin adlarını ayarlamalısınız:

Buluttaki Kubernetes'te para tasarrufu için Kubecost incelemesi

Üzerlerine istediğiniz etiketi asabilirsiniz; zaten kendi etiketleme sisteminiz varsa kullanışlıdır.

Ayrıca burada, maliyet modelinin bağlandığı API uç noktasının adresini değiştirebilir, GCP'deki indirim boyutunu ayarlayabilir ve ölçümleri için kaynaklar ve para birimi için kendi fiyatlarınızı belirleyebilirsiniz (bazı nedenlerden dolayı bu özellik Toplam maliyeti etkilemez).

Kubecost çeşitli gösterebilir kümedeki sorunlar (ve hatta tehlike durumunda uyarıda bulunun). Maalesef bu seçenek yapılandırılamaz ve bu nedenle geliştiricilere yönelik ortamlarınız varsa ve bunları kullanıyorsanız, sürekli olarak şunun gibi bir şey göreceksiniz:

Buluttaki Kubernetes'te para tasarrufu için Kubecost incelemesi

Önemli bir araç - Küme Tasarrufları. Bölmelerin etkinliğini (ağdakiler de dahil olmak üzere kaynak tüketimini) ölçer ve ayrıca ne kadar para ve nelerden tasarruf edebileceğinizi de hesaplar.

Optimizasyon ipuçları oldukça açık gibi görünebilir, ancak deneyimler hala bakılacak bir şeyin olduğunu gösteriyor. Özellikle, bölmelerin ağ etkinliği izlenir (Kubecost, etkin olmayanlara dikkat edilmesini önerir), istenen ve gerçek bellek ve CPU tüketiminin yanı sıra küme düğümleri tarafından kullanılan CPU (birkaç düğümün bir araya getirilmesini önerir) karşılaştırılır, disk yük ve birkaç düzine daha fazla parametre.

Her optimizasyon sorununda olduğu gibi, Kubecost verilerine göre kaynakları optimize etmek şunları gerektirir: dikkatli davran. Örneğin, Küme Tasarrufları, güvenli olduğunu iddia ederek düğümlerin silinmesini önerir, ancak düğüm seçicilerin ve üzerlerine konuşlandırılan bölmelerdeki diğer düğümlerde bulunmayan kusurların varlığını hesaba katmaz. Ve genel olarak, ürünün yazarları bile kendi son makale (bu arada, projenin konusuyla ilgilenenler için çok faydalı olabilir), maliyet optimizasyonu konusunda acele etmemeniz, konuya düşünceli bir şekilde yaklaşmanız önerilir.

sonuçlar

Birkaç projede bir ay boyunca kubecost'u kullandıktan sonra, bunun Kubernetes kümeleri için kullanılan bulut sağlayıcılarının hizmetlerinin maliyetlerini analiz etmek ve optimize etmek için ilginç (ve ayrıca öğrenmesi ve kurulumu kolay) bir araç olduğu sonucuna varabiliriz. Hesaplamaların çok doğru olduğu ortaya çıktı: deneylerimizde sağlayıcıların gerçekte ihtiyaç duyduğu şeylerle örtüştüler.

Bazı dezavantajları da var: Kritik olmayan hatalar var ve bazı yerlerde işlevsellik, bazı projelere özgü ihtiyaçları karşılamıyor. Ancak, bulut hizmetleri faturasını tutarlı bir şekilde %5-30 oranında azaltmak için paranın nereye gittiğini ve neyin "kesilebileceğini" hızlı bir şekilde anlamanız gerekiyorsa (bizim durumumuzda olan buydu), bu harika bir seçenektir .

PS

Blogumuzda da okuyun:

Kaynak: habr.com

Yorum ekle