Kubernetes Scheduler কী?
Kubernetes scheduler হল ওপেন সোর্স Kubernetes কন্টেইনার অর্কেস্ট্রেশন প্ল্যাটফর্মের একটি অংশ যা পলিসি এবং টপোলজি অবেয়ারনেসের মাধ্যমে পারফরম্যান্স, ক্যাপাসিটি এবং অভেইলেবিলিটি নিয়ন্ত্রণ করে।
আর্কিটেকচার
- Scheduler হল Kubernetes-এর একটি মনোলিথিক কম্পোনেন্ট, API সার্ভার থেকে ডিকাপল্ড যা ক্লাস্টার ম্যানেজ করে। এটি একটি অ্যাডমিশন কন্ট্রোলার নয়, যা আসলে প্লাগ-ইন কোড যা Kubernetes API-এ রিকোয়েস্ট ইন্টারসেপ্ট করে।
- ভার্চুয়ালাইজেশন অ্যাডমিনিস্ট্রেটররা Kubernetes শিডিউলিংকে VM শিডিউলিংর কন্টেইনারাইজেশন সমতুল্য হিসেবে দেখবেন, যেমন VMware Distributed Resource Scheduler।
কিভাবে কাজ করে
- Kubernetes কন্টেইনার ডিপ্লয় করে Pod-এ সংগঠিত করে যারা লজিক্যাল রিসোর্স গ্রুপিং који Nodes-এ বসবাস করে।
- ওয়ার্কলোড-স্পেসিফিক প্রয়োজনীয়তা API-তে সেট করা হয়। Kubernetes scheduler চেষ্টা করে Kubernetes দ্বারা তৈরি প্রতিটি Pod-কে একটি Node-এ উপযুক্ত IT রিসোর্সের সাথে ম্যাচ করতে। এটি Pod-র কপি বিভিন্ন Node-এ বিতরণ করতে পারে হাই অভেইলেবিলিটির জন্য, যদি वो ফিচার ডিজায়ারড হয়।
- যদি Kubernetes scheduler কোনো Pod-এর প্রয়োজনীয়তা ও স্পেসিফিকেশন উপযুক্ত হার্ডওয়্যার খুঁজে পায় না (affinity এবং anti-affinity নিয়ম থেকে কোয়ালিটি অফ সার্ভিস সেটিংস পর্যন্ত), সেই Pod-अনশিডিউলড থাকে, এবং শিডিউলার এটি রিট্রাই করে যতক্ষণ না একটি মেশিন উপলব্ধ হয়।
কনফিগারেশন
Kubernetes scheduler দুটি ভিন্ন পলিসি দিয়ে কনফিগারযোগ্য: PriorityFunction এবং FitPredicate। এটি একটি Node যাদুকরভাবে পিক করতে পারে, যা কন্টেইনারকে রিসোর্সের সাথে অ্যাসাইন করার একটি মেথড ন্যূনতম কম্পিউটেশনাল ওভারহেডের সাথে।
- FitPredicate পলিসি: প্রয়োজনীয় নিয়মগুলি মেনে চলে, Kubernetes Node-এ লেবেল ডিটেক্ট করার চেষ্টা করে, বা একটি মেশিনে ইতিমধ্যে চলমান কন্টেইনারগুলোর অনুরোধকৃত রিসোর্সের সংখ্যা ডিটেক্ট করে। FitPredicate কন্টেইনারগুলো দেওয়া হার্ডওয়্যার রিসোর্সের ক্যাপাসিটি অতিক্রম করেছে কিনা তা ডিটেক্ট করতে সাহায্য করে। যদি ব্যবহারকারী শূন্য রিসোর্স সিলেক্ট করে, শিডিউলার সবসময় Node-এ আরেকটি Pod যোগ করতে পারে।
- PriorityFunction: লাগু হয় যখন শিডিউলার ইতিমধ্যে একাধিক সিস্টেম চেক করে সেরা ফিটের জন্য। যদি শিডিউলার বেশ কিছু অপশন পায় যা Pod সাপোর্ট করতে পারে, PriorityFunction শিডিউলারকে নির্দেশ দেয় মেশিনগুলোকে সেরা ফিটের ভিত্তিতে র্যাঙ্ক করার জন্য। উদাহরণস্বরূপ, তিনটি Node নতুন Pod-এর প্রয়োজনীয়তা পূরণ করে, কিন্তু একটি অন্যদের চেয়ে বেশি ফ্রি রিসোর্স রাখে, এবং সেটিই সেরা ফিট।
Kubernetes এনভায়রনমেন্টে এই দুটি পলিসি কন্টেইনার ওয়ার্কলোড একাধিক মেশিন জুড়ে লোড ব্যালেন্স করতে সাহায্য করে যাতে একটি মেশিনকে ইনটেন্স এক্টিভিটি দেওয়া না হয়, অন্যদের আইডল থাকতে দেয়।