এটি এই বিভাগটির বহু পৃষ্ঠার মুদ্রণযোগ্য দর্শন। মুদ্রণ করতে এখানে ক্লিক করুন.

এই পৃষ্ঠার নিয়মিত দৃশ্যে ফিরে আসুন.

শিডিউলিং, প্রিএম্পশন এবং ইভিকশন (Scheduling, Preemption and Eviction)

কুবারনেটিস, শিডিউলিং মানে হল নিশ্চিত করা যে পডগুলি নোডগুলির সাথে মিলিত হয়েছে কিনা যাতে kubelet তাদের রান করতে পারে। প্রিএম্পশন হল স্বল্প অগ্রাধিকার পডগুলি বাতিল করার প্রক্রিয়া যাতে উচ্চ অগ্রাধিকার পডগুলি নোডগুলিতে শিডিউল করতে পারে। ইভিকশন হল রিসোর্স-ক্ষুধার্ত নোডগুলিতে এক বা একাধিক পডগুলি প্রত্যাহার করার প্রক্রিয়া।

কুবারনেটিসে, শিডিউলিং মানে হল নিশ্চিত করা যে পডগুলি নোডগুলির সাথে মিলিত হয়েছে কিনা যাতে kubelet তাদের রান করতে পারে। প্রিএম্পশন হল স্বল্প অগ্রাধিকার পডগুলি বাতিল করার প্রক্রিয়া যাতে উচ্চ অগ্রাধিকার পডগুলি নোডগুলিতে শিডিউল করতে পারে। ইভিকশন হল রিসোর্স-ক্ষুধার্ত নোডগুলিতে এক বা একাধিক পডগুলি প্রত্যাহার করার প্রক্রিয়া।

শিডিউলিং

পডস এর ভাঙ্গন

পড-ব্যঘাত হলো সেই প্রক্রিয়া যার
মাধ্যমে নোডের পডগুলো স্বেচ্ছায় বা অনিচ্ছাকৃতভাবে বন্ধ করা হয়।

অ্যাপ্লিকেশন মালিক বা ক্লাস্টার অ্যাডমিনিস্ট্রেটররা ইচ্ছাকৃতভাবে স্বেচ্ছায় ব্যাঘাত শুরু করে। অনিচ্ছাকৃত ব্যাঘাতগুলি অনিচ্ছাকৃত এবং নোডের রিসোর্স ফুরিয়ে যাওয়ার মতো অনিবার্য সমস্যার কারণে বা দুর্ঘটনাবশত মুছে ফেলার কারণে ট্রিগার হতে পারে।

1 - কুবারনেটিস শিডিউলার

কুবারনেটিসে, শিডিউলিং বলতে পড গুলিকে নোড এর সাথে মিলিয়ে দেওয়া বোঝায়, যেন Kubelet সেগুলি চালাতে পারে।

শিডিউলিং এর সংক্ষিপ্ত বিবরণ

একটি শিডিউলার নতুন তৈরি হওয়া এমন পড গুলিকে নজরে রাখে যাদের কোন নোড বরাদ্দ করা হয়নি। প্রতিটি পডের জন্য যা শিডিউলার আবিষ্কার করে, শিডিউলার সেই পডের জন্য সেরা নোড খুঁজে বের করার দায়িত্ব নেয়। শিডিউলার নিম্নলিখিত শিডিউলিং নীতিগুলি বিবেচনা করে এই স্থান নির্ধারণের সিদ্ধান্তে পৌঁছায়।

আপনি যদি বুঝতে চান কেন পডগুলি একটি নির্দিষ্ট নোডে রাখা হয়েছে, অথবা আপনি যদি নিজে একটি কাস্টম শিডিউলার তৈরি করতে চান, এই পৃষ্ঠাটি আপনাকে শিডিউলিং সম্পর্কে জানতে সাহায্য করবে।

kube-scheduler

kube-scheduler কুবারনেটিসের ডিফল্ট শিডিউলার এবং এটি কন্ট্রোল প্লেন এর অংশ হিসেবে চলে। kube-scheduler এমনভাবে ডিজাইন করা হয়েছে যে, আপনি যদি চান এবং প্রয়োজন হয়, আপনি আপনার নিজস্ব শিডিউলিং কম্পোনেন্ট লিখতে পারেন এবং তার পরিবর্তে সেটি ব্যবহার করতে পারেন।

Kube-scheduler নতুন তৈরি বা এখনও পর্যন্ত শিডিউল না করা (unscheduled) পডগুলি চালানোর জন্য একটি সর্বোত্তম নোড নির্বাচন করে। যেহেতু পডে থাকা কন্টেইনারগুলি - এবং পডগুলি নিজেরাই - বিভিন্ন প্রয়োজনীয়তা থাকতে পারে, শিডিউলার এমন যেকোনো নোড ফিল্টার করে বাদ দেয় যা একটি পডের নির্দিষ্ট শিডিউলিং প্রয়োজনীয়তা পূরণ করে না। বিকল্পভাবে, API আপনাকে পড তৈরি করার সময় একটি নোড নির্দিষ্ট করে দেওয়ার অনুমতি দেয়, তবে এটি অস্বাভাবিক এবং শুধুমাত্র বিশেষ ক্ষেত্রে করা হয়।

একটি ক্লাস্টারে, যে নোডগুলি একটি পডের শিডিউলিং প্রয়োজনীয়তা পূরণ করে তাদেরকে সম্ভাব্য নোড বলা হয়। যদি কোন নোড উপযুক্ত না হয়, পডটি অশিডিউলড থাকে যতক্ষণ না শিডিউলার এটিকে রাখতে সক্ষম হয়।

শিডিউলার একটি পডের জন্য সম্ভাব্য নোডগুলি খুঁজে বের করে এবং তারপর একগুচ্ছ ফাংশন চালায় যা সম্ভাব্য নোডগুলিকে স্কোর করে এবং সম্ভাব্য নোডগুলির মধ্যে সর্বোচ্চ স্কোর সহ একটি নোড বেছে নেয় পডটি চালানোর জন্য। শিডিউলার তারপর এই সিদ্ধান্ত সম্পর্কে API সার্ভারকে অবহিত করে, একটি প্রক্রিয়ায় যাকে বাইন্ডিং বলা হয়।

শিডিউলিং সিদ্ধান্তগুলির জন্য যে বিষয়গুলি বিবেচনায় নিতে হবে তার মধ্যে রয়েছে ব্যক্তিগত এবং সামষ্টিক সম্পদ প্রয়োজনীয়তা, হার্ডওয়্যার / সফটওয়্যার / নীতি সীমাবদ্ধতা, আকর্ষণ এবং বিকর্ষণ স্পেসিফিকেশন, ডাটা লোকালিটি, আন্তঃ-ওয়ার্কলোড হস্তক্ষেপ, ইত্যাদি।

kube-scheduler এ নোড নির্বাচন

kube-scheduler পডের জন্য একটি নোড নির্বাচন করে ২-ধাপের অপারেশনে:

  1. ফিল্টারিং
  2. স্কোরিং

ফিল্টারিং ধাপে নোডের সেট খুঁজে বের করা হয় যেখানে পডটি শিডিউল করা সম্ভব। উদাহরণস্বরূপ, PodFitsResources ফিল্টার যাচাই করে যে একটি ক্যান্ডিডেট নোডের পডের নির্দিষ্ট সম্পদ অনুরোধ পূরণ করার জন্য যথেষ্ট পরিমাণ উপলব্ধ সম্পদ আছে কিনা। এই ধাপের পরে, নোড তালিকায় যেকোনো উপযুক্ত নোড থাকে; প্রায়শই, একাধিক থাকবে। যদি তালিকাটি খালি হয়, সেই পডটি (এখনও) শিডিউল করা যায় না।

স্কোরিং ধাপে, শিডিউলার বাকি নোডগুলিকে র্যাঙ্ক করে সবচেয়ে উপযুক্ত পড প্লেসমেন্ট বেছে নেয়। শিডিউলার প্রতিটি নোডকে একটি স্কোর দেয় যা ফিল্টারিং পার করেছে, সক্রিয় স্কোরিং নিয়মগুলির উপর ভিত্তি করে এই স্কোর নির্ধারণ করে।

অবশেষে, kube-scheduler পডটিকে সর্বোচ্চ র্যাঙ্কিং সহ নোডে বরাদ্দ করে। যদি একাধিক নোড সমান স্কোরের সাথে থাকে, kube-scheduler এদের মধ্যে একটিকে এলোমেলোভাবে নির্বাচন করে।

শিডিউলারের ফিল্টারিং এবং স্কোরিং আচরণ কনফিগার করার দুটি সমর্থিত উপায় রয়েছে:

  1. শিডিউলিং পলিসি আপনাকে ফিল্টারিংয়ের জন্য প্রেডিকেট এবং স্কোরিংয়ের জন্য প্রায়োরিটি কনফিগার করতে দেয়।
  2. শিডিউলিং প্রোফাইল আপনাকে বিভিন্ন শিডিউলিং স্টেজ, যেমন: QueueSort, Filter, Score, Bind, Reserve, Permit, এবং অন্যান্য বাস্তবায়ন করে এমন প্লাগইন কনফিগার করতে দেয়। আপনি বিভিন্ন প্রোফাইল চালানোর জন্য kube-scheduler কেও কনফিগার করতে পারেন।

এর পরের কি