- Kubernetes ortamında, etkin olmayan container'ların kaynak israfını azaltmak için geliştirilmiş bir çalışma zamanı aracı
- Belirli bir süre boyunca TCP bağlantısı olmazsa container'ı otomatik olarak diske checkpoint olarak kaydeder
- containerd shim biçiminde çalışır; container'ın bellek durumunu kaydedip kapatır, ardından ilk bağlantıda birkaç milisaniye içinde geri yükler
- Geri yükleme sırasında uygulamanın tüm durumu aynen geri getirilir, böylece kullanıcı açısından gecikme neredeyse yoktur
- TCP paketlerini proxy'ye iletmek için eBPF tabanlı yönlendirme kullanır ve geri yükleme tamamlandıktan sonra doğrudan bağlantıya geçer
- Checkpoint alma ve geri yükleme işlemleri için CRIU - Checkpoint and Restore in Userspace kullanılır
- Aktivasyon dizisi (activation sequence) sayesinde ilk istekte otomatik geri yükleme akışı sunar
- Son TCP etkinliğini izleyerek, sık durdurma ve geri yüklemeyi önleyen akıllı bir bekleme mantığı içerir
- Kubernetes üzerinde container hâlâ çalışıyormuş gibi algılandığından çalışma zamanı yeniden başlatması engellenir
kubectl exec komutu verildiğinde otomatik olarak geri yüklenir ve normal bir container gibi erişilebilir
- Her shim süreci metrik toplar ve düğüm düzeyindeki zeropod-manager bunları birleştirerek HTTP endpoint'i üzerinden sunar
- Küme destekliyorsa, kaynak isteklerini dinamik olarak ayarlayan in-place scaling özelliği sunar
- Düğüm drain işlemi sırasında ölçeği küçültülmüş Pod'ları başka bir düğüme taşıyabilir
- Deneysel bir özellik olarak live migration da destekler
- Düşük trafikli servisler, geliştirme ve staging ortamları, Heroku benzeri platformların düşük maliyetli katmanları, statik sitelerin backend bileşenleri gibi kullanım senaryolarına uygundur
- Programların çoğu ek değişiklik olmadan çalışır; ayrıca containerd logları üzerinden CRIU hataları analiz edilebilir
4 yorum
inetd'nin yeniden icadı mı? (şaka)
Geçen yıl AWS re:Invent'te gördüğüm Platform 9'un Elastic Machine Pool'u o zamanlar B2B'ye özel olduğu için şöyle bir denemek bile biraz göz korkutucuydu; ama bunun kurulumu da basit, çalışma şekli de sezgisel olduğu için hoşuma gitti. Geliştirme ortamında kullanıcı deneyimini bozmadan kaynakları agresif şekilde tahsis etmek istiyordum; bir PoC yapıp iyi sonuç verirse değerlendirmeye alınabilecek gibi görünüyor.
KNative'den farkı ne diye merak etmiştim; anlaşılan aşağıdaki iki cümle işin özü.
lambda. . .. ?