Kubernetes'te Otomatik Ölçeklendirmenin Üç Düzeyi: Bunları Etkili Bir Şekilde Kullanma

Kubernetes'te Otomatik Ölçeklendirmenin Üç Düzeyi: Bunları Etkili Bir Şekilde Kullanma
Kubernetes'te tam anlamıyla uzmanlaşmak için küme kaynaklarını ölçeklendirmenin farklı yollarını bilmeniz gerekir: sistem geliştiricilerine göreBu, Kubernetes'in ana görevlerinden biridir. Yatay ve dikey otomatik ölçeklendirme ve küme yeniden boyutlandırma mekanizmalarına ilişkin üst düzey bir genel bakışın yanı sıra bunların nasıl etkili bir şekilde kullanılacağına ilişkin öneriler sunduk.

makale Kubernetes Otomatik Ölçeklendirme 101: Küme Otomatik Ölçekleyici, Yatay Otomatik Ölçekleyici ve Dikey Pod Otomatik Ölçekleyici otomatik ölçeklendirmeyi uygulayan ekip tarafından çevrildi Mail.ru'dan Kubernetes aaS.

Ölçeklendirmeyi düşünmek neden önemlidir?

Kubernetes - kaynak yönetimi ve düzenleme için bir araç. Elbette, bölmeleri dağıtmanın, izlemenin ve yönetmenin harika özelliklerini (bir bölme, bir isteğe yanıt olarak başlatılan bir grup kapsayıcıdır) değiştirmek güzel bir şeydir.

Ancak aşağıdaki soruları da düşünmelisiniz:

  1. Modüller ve uygulamalar nasıl ölçeklendirilir?
  2. Konteynerleri nasıl operasyonel ve verimli tutabiliriz?
  3. Kullanıcılardan gelen kod ve iş yükündeki sürekli değişikliklere nasıl yanıt verilir?

Kubernetes kümelerini kaynakları ve performansı dengeleyecek şekilde yapılandırmak zorlu olabilir ve Kubernetes'in iç işleyişine ilişkin uzman bilgisi gerektirir. Uygulamanızın veya hizmetlerinizin iş yükü gün boyunca, hatta bir saat içinde değişiklik gösterebilir; bu nedenle dengelemeyi devam eden bir süreç olarak düşünmek en iyisidir.

Kubernetes otomatik ölçeklendirme seviyeleri

Etkili otomatik ölçeklendirme, iki düzey arasında koordinasyon gerektirir:

  1. Yatay (Yatay Pod Otomatik Ölçekleyici, HPA) ve dikey otomatik ölçekleyici (Dikey Pod Otomatik Ölçekleyici, VPA) dahil olmak üzere bölme düzeyi. Bu, kapsayıcılarınız için mevcut kaynakların ölçeklendirilmesidir.
  2. Küme içindeki düğümlerin sayısını artıran veya azaltan, Küme Otomatik Ölçekleyicisi (CA) tarafından yönetilen küme düzeyi.

Yatay Otomatik Ölçekleyici (HPA) modülü

Adından da anlaşılacağı gibi HPA, kapsül kopyalarının sayısını ölçeklendirir. Çoğu devop, kopya sayısını değiştirmek için tetikleyici olarak CPU ve bellek yükünü kullanır. Ancak sistemi buna göre ölçeklendirmek mümkündür. özel metrikleronların kombinasyonlar veya harici ölçümler.

Yüksek seviye HPA çalışma şeması:

  1. HPA, kurulum sırasında belirtilen metrik değerleri varsayılan 30 saniye aralıklarla sürekli olarak kontrol eder.
  2. HPA, belirtilen eşiğe ulaşılması durumunda modül sayısını artırmaya çalışır.
  3. HPA, dağıtım/çoğaltma denetleyicisindeki kopyaların sayısını günceller.
  4. Dağıtım/çoğaltma denetleyicisi daha sonra gerekli ek modülleri dağıtır.

Kubernetes'te Otomatik Ölçeklendirmenin Üç Düzeyi: Bunları Etkili Bir Şekilde Kullanma
HPA, bir metrik eşiğe ulaşıldığında modül dağıtım sürecini başlatır

HPA'yı kullanırken aşağıdakileri göz önünde bulundurun:

  • Varsayılan HPA kontrol aralığı 30 saniyedir. Bayrak tarafından belirlenir yatay bölme-otomatik ölçekleyici-senkronizasyon dönemi denetleyici yöneticisinde.
  • Varsayılan göreceli hata %10'dur.
  • Modül sayısındaki son artışın ardından HPA, ölçümlerin üç dakika içinde stabil hale gelmesini bekliyor. Bu aralık bayrak tarafından belirlenir yatay-pod-otomatik ölçekleyici-yükseltme-gecikmesi.
  • Modül sayısındaki son azalmanın ardından HPA, stabil hale gelmesi için beş dakika bekler. Bu aralık bayrak tarafından belirlenir yatay-pod-otomatik ölçekleyici-ölçek küçültme-gecikmesi.
  • HPA, çoğaltma denetleyicileri yerine dağıtım nesneleriyle en iyi şekilde çalışır. Yatay otomatik ölçeklendirme, çoğaltma denetleyicilerini doğrudan yöneten sürekli güncellemeyle uyumlu değildir. Dağıtımda kopya sayısı doğrudan dağıtım nesnelerine bağlıdır.

Bölmelerin dikey otomatik ölçeklendirilmesi

Dikey otomatik ölçeklendirme (VPA), mevcut bölmelere daha fazla (veya daha az) CPU zamanı veya bellek ayırır. Durum bilgisi olan veya durum bilgisi olmayan bölmeler için uygundur, ancak esas olarak durum bilgisi olan hizmetler için tasarlanmıştır. Ancak başlangıçta tahsis edilen kaynakların miktarını otomatik olarak ayarlamanız gerekiyorsa, durum bilgisi olmayan modüller için VPA'yı da kullanabilirsiniz.

VPA ayrıca OOM (yetersiz bellek) olaylarına da yanıt verir. CPU zamanını ve belleğini değiştirmek, bölmelerin yeniden başlatılmasını gerektirir. Yeniden başlatıldığında VPA tahsis bütçesine uyar (bölme dağıtım bütçesi, PDB) gerekli minimum modül sayısını garanti etmek için.

Her modül için minimum ve maksimum kaynakları ayarlayabilirsiniz. Böylece maksimum ayrılan hafıza miktarını 8 GB ile sınırlandırabilirsiniz. Bu, mevcut düğümlerin konteyner başına kesinlikle 8 GB'tan fazla bellek ayıramaması durumunda kullanışlıdır. Ayrıntılı özellikler ve çalışma mekanizması şurada açıklanmıştır: resmi VPA wiki'si.

Ek olarak, VPA'nın ilginç bir öneri işlevi (VPA Önericisi) vardır. Geçmiş ölçümlere dayalı akıllı bir algoritmaya dayalı olarak yeni bellek ve CPU zaman değerleri önermek için tüm modüllerin kaynak kullanımını ve OOM olaylarını izler. Ayrıca bir bölme tanıtıcısını alan ve önerilen kaynak değerlerini döndüren bir API de vardır.

VPA Öneri Aracının kaynak "sınırını" izlemediğini belirtmekte fayda var. Bu, modülün düğümlerdeki kaynakları tekeline almasıyla sonuçlanabilir. Büyük bellek veya CPU tüketimini önlemek için sınırı ad alanı düzeyinde ayarlamak daha iyidir.

Üst düzey VPA çalışma şeması:

  1. VPA, kurulum sırasında belirtilen metrik değerleri varsayılan 10 saniye aralıklarla sürekli olarak kontrol eder.
  2. Belirtilen eşiğe ulaşılırsa VPA, tahsis edilen kaynak miktarını değiştirmeye çalışır.
  3. VPA, dağıtım/çoğaltma denetleyicisindeki kaynak sayısını günceller.
  4. Modüller yeniden başlatıldığında tüm yeni kaynaklar oluşturulan örneklere uygulanır.

Kubernetes'te Otomatik Ölçeklendirmenin Üç Düzeyi: Bunları Etkili Bir Şekilde Kullanma
VPA gerekli miktarda kaynak ekler

VPA'yı kullanırken lütfen aşağıdaki noktaları aklınızda bulundurun:

  • Ölçeklendirme, bölmenin zorunlu olarak yeniden başlatılmasını gerektirir. Değişiklik yaptıktan sonra dengesiz çalışmayı önlemek için bu gereklidir. Güvenilirlik için modüller yeniden başlatılır ve yeni tahsis edilen kaynaklara göre düğümler arasında dağıtılır.
  • VPA ve HPA henüz birbiriyle uyumlu değildir ve aynı bölmelerde çalışamaz. Her iki ölçeklendirme mekanizmasını da aynı kümede kullanıyorsanız ayarlarınızın bunların aynı nesneler üzerinde etkinleştirilmesini engellediğinden emin olun.
  • VPA, kaynaklara yönelik kapsayıcı isteklerini yalnızca geçmiş ve mevcut kullanıma göre ayarlar. Kaynak kullanım sınırlarını belirlemez. Uygulamaların düzgün çalışmaması ve giderek daha fazla kaynağı ele geçirmeye başlamasıyla ilgili sorunlar yaşanabilir, bu durum Kubernetes'in bu pod'u kapatmasına yol açacaktır.
  • VPA hala geliştirmenin erken aşamasındadır. Yakın gelecekte sistemde bazı değişiklikler yaşanabileceğine hazırlıklı olun. Hakkında okuyabilirsiniz bilinen sınırlamalar и kalkınma planları. Bu nedenle, VPA ve HPA'nın ortak çalışmasının yanı sıra modüllerin dağıtımının yanı sıra bunlar için dikey bir otomatik ölçeklendirme politikasının (örneğin, özel bir 'VPA gerektirir' etiketi) uygulanmasına yönelik planlar bulunmaktadır.

Kubernetes kümesini otomatik ölçeklendirme

Küme Otomatik Ölçekleyicisi (CA), bekleme bölmelerinin sayısına göre düğüm sayısını değiştirir. Sistem periyodik olarak bekleyen modülleri kontrol eder ve daha fazla kaynağa ihtiyaç duyulursa ve küme belirlenen sınırları aşmazsa küme boyutunu artırır. CA, bulut hizmet sağlayıcısıyla iletişim kurar, ondan ek düğümler ister veya boşta olanları serbest bırakır. CA'nın genel olarak kullanılabilen ilk sürümü Kubernetes 1.8'de tanıtıldı.

SA operasyonunun üst düzey şeması:

  1. CA, beklemedeki modülleri varsayılan 10 saniyelik aralıklarla denetler.
  2. Bir veya daha fazla bölme, kümenin bunları tahsis etmek için yeterli kullanılabilir kaynağa sahip olmaması nedeniyle bekleme durumundaysa, bir veya daha fazla ek düğüm sağlamaya çalışır.
  3. Bulut hizmet sağlayıcısı gerekli düğümü tahsis ettiğinde kümeye katılır ve bölmelere hizmet vermeye hazır hale gelir.
  4. Kubernetes zamanlayıcı, bekleyen bölmeleri yeni bir düğüme dağıtır. Bundan sonra bazı modüller hala bekleme durumunda kalırsa işlem tekrarlanır ve kümeye yeni düğümler eklenir.

Kubernetes'te Otomatik Ölçeklendirmenin Üç Düzeyi: Bunları Etkili Bir Şekilde Kullanma
Buluttaki küme düğümlerinin otomatik sağlanması

CA kullanırken aşağıdakileri göz önünde bulundurun:

  • CA, CPU yüküne bakılmaksızın kümedeki tüm bölmelerin çalışacak alana sahip olmasını sağlar. Ayrıca kümede gereksiz düğümlerin bulunmadığından emin olmaya çalışır.
  • CA, yaklaşık 30 saniye sonra ölçeklendirme ihtiyacını kaydeder.
  • Bir düğüme artık ihtiyaç kalmadığında CA, sistemin ölçeğini genişletmeden önce varsayılan olarak 10 dakika bekler.
  • Otomatik ölçeklendirme sistemi genişletici kavramına sahiptir. Bunlar, yeni düğümlerin ekleneceği bir düğüm grubunu seçmek için farklı stratejilerdir.
  • Seçeneği sorumlu bir şekilde kullanın Cluster-autoscaler.kubernetes.io/safe-to-evict (doğru). Çok sayıda bölme kurarsanız veya birçoğu tüm düğümlere dağılmışsa, kümeyi ölçeklendirme yeteneğinizi büyük ölçüde kaybedersiniz.
  • Kullanmak Pod KesintisiBütçeleruygulamanızın bazı bölümlerinin tamamen bozulmasına neden olabilecek bölmelerin silinmesini önlemek için.

Kubernetes otomatik ölçekleyicileri birbirleriyle nasıl etkileşime giriyor?

Mükemmel uyum için hem pod düzeyinde (HPA/VPA) hem de küme düzeyinde otomatik ölçeklendirme uygulanmalıdır. Birbirleriyle nispeten basit bir şekilde etkileşime girerler:

  1. HPA'lar veya VPA'lar, bölme kopyalarını veya mevcut bölmelere tahsis edilen kaynakları günceller.
  2. Planlanan ölçeklendirme için yeterli düğüm yoksa CA, bekleme durumundaki bölmelerin varlığını fark eder.
  3. CA yeni düğümleri tahsis eder.
  4. Modüller yeni düğümlere dağıtılır.

Kubernetes'te Otomatik Ölçeklendirmenin Üç Düzeyi: Bunları Etkili Bir Şekilde Kullanma
İşbirliğine dayalı Kubernetes genişletme sistemi

Kubernetes otomatik ölçeklendirmesinde sık karşılaşılan hatalar

Otomatik ölçeklendirmeyi uygulamaya çalışırken devops'un karşılaştığı birkaç yaygın sorun vardır.

HPA ve VPA, ölçümlere ve bazı geçmiş verilere bağlıdır. Yetersiz kaynak tahsis edilirse modüller küçültülecek ve metrikler oluşturulamayacaktır. Bu durumda otomatik ölçeklendirme asla gerçekleşmez.

Ölçeklendirme işleminin kendisi zamana duyarlıdır. Kullanıcılar herhangi bir sorunu veya arızayı fark etmeden önce modüllerin ve kümenin hızlı bir şekilde ölçeklenmesini istiyoruz. Bu nedenle pod'lar ve küme için ortalama ölçeklendirme süresi dikkate alınmalıdır.

İdeal senaryo - 4 dakika:

  1. 30 saniye. Hedef metrikleri güncelleme: 30−60 saniye.
  2. 30 saniye. HPA metrik değerleri kontrol eder: 30 saniye.
  3. 2 saniyeden az. Pod'lar oluşturulur ve bekleme durumuna geçer: 1 saniye.
  4. 2 saniyeden az. CA, bekleyen modülleri görür ve hazırlık düğümlerine çağrılar gönderir: 1 saniye.
  5. 3 dakika. Bulut sağlayıcısı düğümleri tahsis eder. K8'ler hazır olana kadar bekler: 10 dakikaya kadar (çeşitli faktörlere bağlı olarak).

En kötü durum (daha gerçekçi) senaryosu - 12 dakika:

  1. 30 saniye. Hedef metriklerini güncelleyin.
  2. 30 saniye. HPA metrik değerleri kontrol eder.
  3. 2 saniyeden az. Bölmeler oluşturulur ve bekleme durumuna girer.
  4. 2 saniyeden az. CA bekleyen modülleri görür ve düğümlerin hazırlığını yapmak için çağrılar yapar.
  5. 10 dakika. Bulut sağlayıcısı düğümleri tahsis eder. K8'ler hazır olana kadar bekler. Bekleme süresi satıcı gecikmesi, işletim sistemi gecikmesi ve destek araçları gibi çeşitli faktörlere bağlıdır.

Bulut sağlayıcılarının ölçeklendirme mekanizmalarını CA'mızla karıştırmayın. İkincisi bir Kubernetes kümesinin içinde çalışırken, bulut sağlayıcı motoru düğüm dağıtımı esasına göre çalışır. Pod'larınızda veya uygulamanızda neler olup bittiğini bilmiyor. Bu sistemler paralel olarak çalışmaktadır.

Kubernetes'te ölçeklendirme nasıl yönetilir?

  1. Kubernetes bir kaynak yönetimi ve düzenleme aracıdır. Pod'ları ve küme kaynaklarını yönetmeye yönelik işlemler, Kubernetes'te uzmanlaşmanın önemli bir kilometre taşıdır.
  2. HPA ve VPA'yı dikkate alarak kapsül ölçeklenebilirliğinin mantığını anlayın.
  3. CA yalnızca kapsüllerinizin ve kaplarınızın ihtiyaçlarını iyi anlıyorsanız kullanılmalıdır.
  4. Bir kümeyi en iyi şekilde yapılandırmak için farklı ölçeklendirme sistemlerinin birlikte nasıl çalıştığını anlamanız gerekir.
  5. Ölçeklendirme süresini tahmin ederken en kötü ve en iyi durum senaryolarını aklınızda bulundurun.

Kaynak: habr.com

Yorum ekle