HPA ile autoscale yaptığım zaman keep-aliveden kaynaklı istekleri sadece tek bir pod üzerine yönlendirme yapıyor ve podun patlamasına sebebiyet veriyor. Bu konuyu aşmak için istio ve knative tercih ettim. Knative serverless olduğu için bazı servislerimde yetersiz kalıyor. İstio tek başına trafiği yönetiyor ama scale edemiyor.
Scaling konusunda tecrübeleriniz paylaşabilir misiniz?
Merhaba,
scale to 0 özellikle state tutan yapılarda her zaman mümkün olmuyor. her workloadu da mutlaka en ufak bir yük değişimine göre değişecek şekilde autoscale etmemiz de gerekmiyor. daha az agresif yöntemler kullanabilirsiniz. örneğin tek pod yerine birden fazla podun sürekli çalışması gibi. keep-alive nedeniyle load balancingde sıkıntı çıkıyorsa bunu uygulama bazında çözmeniz gerekir. uygulama bunu desteklemiyor mu? sadece aynı clienttan gelen istekler aynı pod’a gitsin “cookie” diğerleri dağıtılmaya devam etsin gibi?
Aslında şu an monolitik uygulamamı mikroservislere ayırıyorum. State tutan bir durum yok şu an bağımsız olabilecek parçaları bölmeye çalışıyorum. 5 replica yaptığım zaman 1 tanesi requestleri alıyor kalan 4 tanesi boş bekliyor. 1. patlıyor istekler uçuyor daha sonra 2. poda geçiyor oda patlıyor derken patladıkça yerine yenisi geliyor arada istekler kayboluyor.
İlk senaryoda metallb ile yaptım, Golang ile geliştirmiş olduğum bir servis replica sayısını min 5 max 50 veriyorum hpa ile bu sorun oldu. Daha sonra istio kullandım ama orada da scale edemedim.