Skip to content

[bn] Localize controller.md #50079

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: dev-1.31-bn.1
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions content/bn/docs/concepts/architecture/controller.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
title: কন্ট্রোলার
content_type: ধারণা
weight: 30
---

<!-- overview -->

রোবোটিক্স এবং অটোমেশনে, একটি _কন্ট্রোল লুপ_ হল একটি অবিরাম লুপ যা একটি সিস্টেমের অবস্থা নিয়ন্ত্রণ করে।

এখানে একটি কন্ট্রোল লুপের উদাহরণ দেওয়া হল: একটি ঘরের থার্মোস্ট্যাট।

যখন আপনি তাপমাত্রা সেট করেন, তখন এটি থার্মোস্ট্যাটকে আপনার *কাঙ্ক্ষিত অবস্থা* সম্পর্কে জানায়। ঘরের প্রকৃত তাপমাত্রা হল *বর্তমান অবস্থা*। থার্মোস্ট্যাট বর্তমান অবস্থাকে কাঙ্ক্ষিত অবস্থার কাছাকাছি নিয়ে আসার জন্য যন্ত্রপাতি চালু বা বন্ধ করে।

{{< glossary_definition term_id="controller" length="short">}}

<!-- body -->

## কন্ট্রোলার প্যাটার্ন

একটি কন্ট্রোলার কমপক্ষে একটি Kubernetes রিসোর্স টাইপ ট্র্যাক করে। এই {{< glossary_tooltip text="অবজেক্টগুলি" term_id="object" >}} । এর একটি `spec` ফিল্ড রয়েছে যা কাঙ্ক্ষিত অবস্থা নির্দেশ করে। সেই রিসোর্সের কন্ট্রোলার(গুলি) বর্তমান অবস্থাকে কাঙ্ক্ষিত অবস্থার কাছাকাছি আনার জন্য দায়ী।

কন্ট্রোলার নিজেই এই কাজটি সম্পাদন করতে পারে; তবে Kubernetes-এ সাধারণত, একটি কন্ট্রোলার {{< glossary_tooltip text="API সার্ভার" term_id="kube-apiserver" >}}-এ বার্তা পাঠায়, যার মাধ্যমে উপকারী পার্শ্বপ্রতিক্রিয়া তৈরি হয়। আপনি নীচে এর উদাহরণ দেখতে পাবেন।

{{< comment >}} কিছু অন্তর্নির্মিত কন্ট্রোলার, যেমন নেমস্পেস কন্ট্রোলার, এমন অবজেক্টের উপর কাজ করে যেগুলির কোনো `spec` ফিল্ড নেই। সরলতার জন্য, এই পৃষ্ঠায় সেই বিস্তারিত ব্যাখ্যা বাদ দেওয়া হয়েছে। {{< /comment >}}

### API সার্ভারের মাধ্যমে নিয়ন্ত্রণ

{{< glossary_tooltip term_id="job" >}} কন্ট্রোলারটি একটি কুবারনেটস বিল্ট-ইন কন্ট্রোলারের উদাহরণ। বিল্ট-ইন কন্ট্রোলারগুলি ক্লাস্টার API সার্ভারের সাথে ইন্টারঅ্যাক্ট করে
স্টেট (অবস্থা) পরিচালনা করে।

জব হলো একটি কুবারনেটস রিসোর্স যা একটি {{< glossary_tooltip term_id="pod" >}}, অথবা সম্ভবত বেশ কয়েকটি পড চালায়, একটি কাজ সম্পন্ন করার জন্য এবং তারপর বন্ধ করার জন্য।

(একবার [শিডিউল](/docs/concepts/scheduling-eviction/) করা হলে, পড অবজেক্টগুলি একটি কিউবলেটের জন্য কাঙ্ক্ষিত অবস্থার অংশ হয়ে যায়)।

যখন জব কন্ট্রোলার একটি নতুন টাস্ক দেখে, তখন এটি নিশ্চিত করে যে, আপনার ক্লাস্টারে কোথাও, নোডগুলির একটি সেটের কিউবলেটগুলি কাজটি সম্পন্ন করার জন্য সঠিক সংখ্যক পড চালাচ্ছে। জব কন্ট্রোলার নিজে থেকে কোনো পড বা কন্টেইনার চালায় না। পরিবর্তে, জব কন্ট্রোলার API সার্ভারকে পড তৈরি বা অপসারণ করার নির্দেশ দেয়। {{< glossary_tooltip text="কন্ট্রোল প্লেন" term_id="control-plane" >}} এর অন্যান্য উপাদানগুলি নতুন তথ্যের উপর ভিত্তি করে কাজ করে (শিডিউল এবং চালানোর জন্য নতুন পড রয়েছে), এবং অবশেষে কাজটি সম্পন্ন হয়।

আপনি একটি নতুন জব তৈরি করার পর, সেই জবটি সম্পন্ন হওয়াটাই কাঙ্ক্ষিত অবস্থা। জব কন্ট্রোলার সেই জবের বর্তমান অবস্থাকে আপনার কাঙ্ক্ষিত অবস্থার কাছাকাছি নিয়ে আসে: এমন পড তৈরি করে যা সেই জবের জন্য আপনি যে কাজটি চেয়েছিলেন তা সম্পন্ন করে, যাতে জবটি সমাপ্তির কাছাকাছি হয়।

কন্ট্রোলারগুলি তাদের দ্বারা কনফিগার করা অবজেক্টগুলিকেও আপডেট করে। উদাহরণস্বরূপ: একবার কোনো জবের কাজ শেষ হয়ে গেলে, জব কন্ট্রোলার সেই জব অবজেক্টটিকে `Finished` হিসাবে চিহ্নিত করার জন্য আপডেট করে।

(এটি কিছুটা এমন যে কিছু থার্মোস্ট্যাট আলো নিভিয়ে দেয় যাতে বোঝা যায় যে আপনার ঘর এখন আপনার সেট করা তাপমাত্রায় পৌঁছেছে)।

### সরাসরি নিয়ন্ত্রণ

জবের বিপরীতে, কিছু কন্ট্রোলারকে আপনার ক্লাস্টারের বাইরের জিনিসগুলিতে পরিবর্তন আনতে হয়।

উদাহরণস্বরূপ, যদি আপনি একটি কন্ট্রোল লুপ ব্যবহার করে নিশ্চিত করেন যে আপনার ক্লাস্টারে পর্যাপ্ত {{< glossary_tooltip text="নোড" term_id="node" >}} রয়েছে,
তাহলে প্রয়োজনে নতুন নোড সেট আপ করার জন্য সেই কন্ট্রোলারের বর্তমান ক্লাস্টারের বাইরের কিছু সিস্টেমের প্রয়োজন হয়।

যেসব কন্ট্রোলার বাহ্যিক অবস্থার সাথে ইন্টারঅ্যাক্ট করে, তারা API সার্ভার থেকে তাদের কাঙ্ক্ষিত অবস্থা খুঁজে বের করে, তারপর বর্তমান অবস্থাকে কাঙ্ক্ষিত অবস্থার কাছাকাছি আনতে সরাসরি একটি বাহ্যিক সিস্টেমের সাথে যোগাযোগ করে।

(আসলে একটি [কন্ট্রোলার](https://github.com/kubernetes/autoscaler/) রয়েছে যা আপনার ক্লাস্টারের নোডগুলিকে অনুভূমিকভাবে স্কেল করে।)

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

থার্মোস্ট্যাটের উদাহরণে, যদি ঘরটি খুব ঠান্ডা থাকে, তাহলে একটি ভিন্ন কন্ট্রোলার একটি ফ্রস্ট প্রোটেকশন হিটারও চালু করতে পারে। Kubernetes ক্লাস্টারে, কন্ট্রোল প্লেন পরোক্ষভাবে IP ঠিকানা ব্যবস্থাপনা সরঞ্জাম, স্টোরেজ পরিষেবা,
ক্লাউড প্রদানকারী API এবং অন্যান্য পরিষেবাগুলির সাথে কাজ করে [Kubernetes-কে প্রসারিত করে](/docs/concepts/extend-kubernetes/) এটি বাস্তবায়নের জন্য।

## কাঙ্ক্ষিত বনাম বর্তমান অবস্থা {#desired-vs-current}

কুবারনেটস সিস্টেমগুলির একটি ক্লাউড-নেটিভ দৃষ্টিভঙ্গি গ্রহণ করে এবং ধ্রুবক পরিবর্তন পরিচালনা করতে সক্ষম।

কাজ চলাকালীন যেকোনো সময় আপনার ক্লাস্টার পরিবর্তিত হতে পারে, এবং কন্ট্রোল লুপগুলি স্বয়ংক্রিয়ভাবে ব্যর্থতাগুলি ঠিক করে। এর অর্থ হল, সম্ভবত, আপনার ক্লাস্টার কখনই স্থিতিশীল অবস্থায় পৌঁছাবে না।

যতক্ষণ আপনার ক্লাস্টারের কন্ট্রোলারগুলি চলমান থাকে এবং কার্যকর পরিবর্তন আনতে সক্ষম হয়, ততক্ষণ সামগ্রিক অবস্থা স্থিতিশীল কিনা তা বিবেচ্য নয়।

## ডিজাইন

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

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

{{< note >}} একই ধরনের অবজেক্ট তৈরি বা আপডেট করার জন্য একাধিক কন্ট্রোলার থাকতে পারে। পর্দার আড়ালে, কুবারনেটস কন্ট্রোলারগুলি নিশ্চিত করে যে তারা শুধুমাত্র তাদের নিয়ন্ত্রণকারী রিসোর্সের সাথে সংযুক্ত রিসোর্সগুলির দিকে মনোযোগ দেয়।

উদাহরণস্বরূপ, আপনার কাছে ডিপ্লয়মেন্ট এবং জব থাকতে পারে; উভয়ই পড তৈরি করে। জব কন্ট্রোলার আপনার ডিপ্লয়মেন্ট দ্বারা তৈরি পডগুলি মুছে ফেলে না, কারণ সেখানে তথ্য ({{< glossary_tooltip term_id="label" text="লেবেল" >}}) রয়েছে যা কন্ট্রোলারগুলি পডগুলিকে আলাদা করতে ব্যবহার করতে পারে। {{< /note >}}

## কন্ট্রোলার চালানোর উপায় {#running-controllers}

কুবারনেটস এক সেট বিল্ট-ইন কন্ট্রোলার নিয়ে আসে যা {{< glossary_tooltip term_id="kube-controller-manager" >}} এর ভিতরে চলে। এই বিল্ট-ইন কন্ট্রোলারগুলি গুরুত্বপূর্ণ মূল আচরণ প্রদান করে।

ডিপ্লয়মেন্ট কন্ট্রোলার এবং জব কন্ট্রোলার হল এমন কন্ট্রোলারের উদাহরণ যা কুবারনেটসের অংশ হিসাবে আসে ("বিল্ট-ইন" কন্ট্রোলার)। কুবারনেটস আপনাকে একটি স্থিতিস্থাপক কন্ট্রোল প্লেন চালাতে দেয়, যাতে যদি কোনো বিল্ট-ইন কন্ট্রোলার ব্যর্থ হয়, তাহলে কন্ট্রোল প্লেনের অন্য একটি অংশ কাজটি দখল করে নেবে।

আপনি এমন কন্ট্রোলার খুঁজে পেতে পারেন যা কন্ট্রোল প্লেনের বাইরে চলে, যাতে কুবারনেটসকে প্রসারিত করা যায়। অথবা, যদি আপনি চান, আপনি নিজেই একটি নতুন কন্ট্রোলার লিখতে পারেন। আপনি পডের একটি সেট হিসাবে আপনার নিজস্ব কন্ট্রোলার চালাতে পারেন, অথবা কুবারনেটসের বাইরে চালাতে পারেন। কোনটি সবচেয়ে ভালো ফিট করবে তা নির্ভর করবে সেই নির্দিষ্ট কন্ট্রোলার কী করে তার উপর।

## {{% heading "whatsnext" %}}

* [কুবারনেটস কন্ট্রোল প্লেন](/docs/concepts/architecture/#control-plane-components) সম্পর্কে পড়ুন
* কিছু মৌলিক [কুবারনেটস অবজেক্ট](/docs/concepts/overview/working-with-objects/) আবিষ্কার করুন
* [কুবারনেটস API](/docs/concepts/overview/kubernetes-api/) সম্পর্কে আরও জানুন
* আপনি যদি নিজের কন্ট্রোলার লিখতে চান, তাহলে
[কুবারনেটস এক্সটেনশন প্যাটার্ন](/docs/concepts/extend-kubernetes/#extension-patterns)
এবং [sample-controller](https://github.com/kubernetes/sample-controller) সংগ্রহস্থল দেখুন।