Küme kaynakları kısıtlı olduğunda, yüksek öncelikli görevler yetersiz kaynaklar nedeniyle çalıştırılamayabilir. Ön alım etkinleştirildiğinde, ACK Scheduler kaynak kullanılabilirliğini simüle eder ve düşük öncelikli pod'ları tahliye ederek bilgi işlem kaynaklarını boşaltır; bu sayede yüksek öncelikli görevler hızla başlatılabilir.
Başlamadan önce
PriorityClass, priorityClassName kavramlarını ve pod önceliğinin zamanlama ile tahliye sırasını nasıl etkilediğini anlamak için Pod önceliği ve ön alımı konusunu okuyun.
Ön alımın çalışma biçimi
Ön alım etkinleştirildiğinde, ACK Scheduler aşağıdaki prosedürü izler:
-
Görev önceliğini belirtin: Pod yapılandırmalarına
priorityClassNameekleyin.kube-proxy ve etcd gibi sistem bileşenleri genellikle
system-node-criticalPriorityClass değerini kullanır. Çoğu DaemonSet olarak çalışır ve varsayılan olarak tahliye edilmez. Ön alımı simüle edin: ACK Scheduler zamanlanamayan bekleyen bir pod algıladığında, düşük öncelikli pod'ların tahliye edilmesinin yeterli kaynağı boşaltıp boşaltmayacağını simüle eder.
Düşük öncelikli pod'ları güvenli bir şekilde tahliye edin: ACK Scheduler ön alımı tetikledikten sonra kubelet, belirlenen pod'ları tahliye ederek yüksek öncelikli pod için kaynakları serbest bırakır.
Tahliye edilen pod'ları yeniden zamanlayın: Deployments gibi denetleyiciler tahliye edilen pod'ları yeniden oluşturur ve bunları diğer düğümlere zamanlar. Kaynaklar hala yetersizse pod'lar beklemeye devam eder.
Ön alım ilkeleri
ACK Scheduler, PreemptionAlgorithm parametresi ile yapılandırılabilen aşağıdaki ön alım ilkelerini destekler.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Aşağıdaki şekil, ilkenin nasıl etkili olduğunu göstermektedir.
ElasticQuota ilke ayrıntıları
ElasticQuota ilkesi etkin olduğunda, ACK Scheduler ön alımı üç adımda gerçekleştirir:
Ön alım listesini belirleyin: Normal görevlerin aksine, ACK Scheduler bir gang içindeki tüm bekleyen pod'ları tek bir ön alım listesinde birleştirir. Gang, yalnızca tüm pod'lar ön alım yoluyla zamanlanabiliyorsa işlenir. Herhangi bir pod yüksek önceliğe sahipse, tüm gang yüksek öncelikli olarak kabul edilir.
-
Uygun düğümleri belirleyin: ACK Scheduler aday düğümleri belirler:
Gang içindeki birden fazla pod ön alım gerektiriyorsa, bir pod ile eşleşen herhangi bir düğüm aday havuzuna eklenir. ACK Scheduler ardından kalan pod'lar için kaynakları boşaltır.
Yalnızca bir pod ön alım gerektiriyorsa, ACK Scheduler Zamanlanamaz (Unschedulable) düğümleri filtreleyerek yetersiz veya uyumsuz kaynaklara sahip olanları belirler.
-
Ön alımı simüle edin: ACK Scheduler uygun düğümlerden ön alıma uygun pod'ları filtreler. Bir pod, aşağıdaki iki koşul da karşılandığında uygundur:
Başka bir pod veya görev tarafından ön alıma tabi tutulmuyordur.
İlgili PodKesintiBütçeleri (PDB) kurallarına göre tahliye edilebilirdir.
ACK Scheduler ardından ElasticQuotaTree kurallarını uygular:
-
Ön alımı gerçekleştiren pod bir Kota'ya aitse:
Mevcut Kota kullanımı
Mingarantisi seviyesinde veya altında ise: Pod, kendiMingarantisinin üzerindeki kaynakları kullanan diğer Kotalardan pod'ları ön alabilir.Mevcut Kota kullanımı
Mingarantisini aşıyorsa: Pod yalnızca kendi Kotası içindeki daha düşük öncelikli pod'ları ön alabilir (kota içi ön alım).
Ön alımı gerçekleştiren pod herhangi bir Kota'ya ait değilse: Ön alıma izin verilmez.
Ön alınacak pod'lar belirlendikten sonra, ACK Scheduler bunları kaldırıp ön alımı gerçekleştiren pod'u yeniden zamanlamayı simüle eder. Simülasyon başarılı olursa pod'lar tahliye edilir ve yeniden zamanlanır. Başarısız olursa ön alım sonlandırılır.
Ön alımı etkinleştirin
Zamanlayıcı parametrelerini özelleştirin ve preemptionAlgorithm değerini Default, ElasticQuota, Auto veya None olarak ayarlayın. Varsayılan değer Auto'dur.
Sonraki adımlar
Gang zamanlaması ile çalışma — Gang zamanlamasının ElasticQuota ön alımı ile nasıl etkileşime girdiği.
ElasticQuotaTree ve görev kuyrukları ile kaynak kullanımını iyileştirin — ElasticQuota ön alımı için kota sınırlarını tanımlayın.
Pod önceliği ve ön alımı — PriorityClass ve ön alım için Kubernetes referansı.
PodKesintiBütçeleri — Ön alım sırasında kritik iş yüklerinin tahliye edilmesini önleyin.