AKS – Advanced Scheduling

By | February 10, 2021

Resource intensive application’ların limitlenmesinde advanced scheduling bileşenleri önemli rol oynar. Bu özellikler sayesinde node’ların belirli iş yükleri için available olmasına olanak sağlanır.

Örnek olarak cluster üzerinde AI yada ML çalıştıracak olan iş yükleri GPU’lu node’lara ihtiyaç duyarlar. GPU’ya sahip olan resource’lar pahalı oldukları için bu tipte kaynaklara ihtiyaç duyan iş yüklerinin burada schedule olabilmeleri için bazı limitlendirme çalışmaları yapılması gerekir.

Cloud mimarilerinde bunlar node’ları gruplayarak kolaylıkla yapılabilir. Bu mantıksal gruplamalar üzerinden node’lar taint’lenebilir. Ardından sadece bu taint’leri tolere edebilecek toleration konfigürasyonuna sahip olan pod’lar bu node’lar üzerinde schedule olabilirler.

Eğer ortamda taint edilmiş bir node bulunuyorsa ve tolere edilmiş bir pod varsa bu pod taint edilmiş node üzerinde schedule edilir.

Node Selector:

Taint-Toleration mekanizması resource’ları mantıksal olarak izole eder ancak bu işlemi sert bir şekilde yapar. (Hard cut off)

Daha light olarak node selector kullanılabilir.Node selector kullanılan mekanizmalarda selector olarak hardware tipleri kullanılabilir. (SSD, ram miktarı etc.)

Node selector mekanizması pod assign etme işleminde oldukça basittir. Daha advanced senoryolar ile pod scheduling yapılmak istenirse node affinity kullanılması önerilir.

Node selector mekanizmasında node’lar belli özelliklerine göre label’lanırlar. Pod’lar ise üzerilerinde node selector konfigürasyonunu taşıyıp label’lanan node’larda schedule edilirler. Node selector’ün taint/toleration mekanizmasından farkı çok keskin şekilde scheduling’i belirlemiyor olmasıdır. Örneğin label’lanmış pod üzerinde node selector konfigürasyonu yapılmamış pod’lar da schedule edilebilir. Bu mekanizmada node selector konfigürasyonunu taşıyan pod’lar önceliklidir.

Node Affinity:

Node affinity mekanizması ile pod schedule etme işlemleri çok esnek bir hale gelir.

Inter-Pod Affinity & Anti-Affinity

Node affinity özelliği node seviyesinde konfigüre edilirken inter-pod affinity ve anti-affinity rule’ları pod seviyesinde konfigüre edilirler.

Bu configler ile scheduler’a pod schedule işlemi yapılırken schedule edilecek node üzerinde aynı pod’un çalışıp çalışmadığını kontrol etmesini söyleriz. Default olarak replicaset içerisinde bulunan pod’lar cluster içerisindeki ayrı node’lar üzerinde schedule edilme eğilimindedir. Bu affinity rule’ları ile daha complex hale getirilebilir.

Anti-affinity rule’u tam da bu görevi yapar. Replica pod’ları cluster içerisinde farklı node’lara dağıtarak schedule eder.

Fırat

Leave a Reply

Your email address will not be published. Required fields are marked *