কুবারনেটে লিনাক্স সিসক্টলস কীভাবে ব্যবহার করবেন

Kubaranete Linaksa Sisaktalasa Kibhabe Byabahara Karabena



Kubernetes-এ Linux sysctl কী এবং এটি কুবারনেটসের একটি ক্লাস্টারের মধ্যে কীভাবে ব্যবহার করা যেতে পারে তা এই পোস্টে আলোচনা করা হবে। sysctl হল Linux অপারেটিং সিস্টেমের একটি ইন্টারফেস যা অ্যাডমিনিস্ট্রেটরকে রানটাইমে কার্নেলের পরামিতি পরিবর্তন করতে সক্ষম করে। এখানে, আমরা কুবারনেটস প্ল্যাটফর্মে কীভাবে লিনাক্স সিসকটলস ব্যবহার করতে হয় তা প্রদর্শন করব। Kubernetes-এ sysctls ব্যবহার করার জন্য kubectl কমান্ড প্রয়োগ করার সময় আপনি কী ধরনের আউটপুট আশা করতে পারেন তা বুঝতে সাহায্য করার জন্য আমরা একটি সহজ উদাহরণ প্রদর্শন করব।

sysctls কি?

sysctls হল লিনাক্সের একটি ইন্টারফেস যা একটি পাত্রে নেমস্পেসের জন্য রানটাইমে কার্নেল পরামিতি সামঞ্জস্য করতে ব্যবহৃত হয়। এই পরামিতিগুলি /proc/sys/ ভার্চুয়াল প্রসেস ফাইলে পাওয়া যেতে পারে এবং এগুলি ভার্চুয়াল মেমরি, নেটওয়ার্কিং, কার্নেল ইত্যাদির মতো বিভিন্ন সাবসিস্টেম কভার করে৷ শুধুমাত্র নেমস্পেসযুক্ত sysctls পডগুলিতে স্বাধীনভাবে সেট করা যেতে পারে এবং Kubernetes sysctl সেটিংস প্রকাশ করে৷ নোড লেভেল sysctls যেগুলি নামস্থানে নেই সেগুলি sysctls সেটিং এর অন্যান্য পদ্ধতি যেমন নোড টিউনিং অপারেটরের সাথে সেট করা দরকার। তাছাড়া, শুধুমাত্র নিরাপদ sysctls ডিফল্টরূপে হোয়াইটলিস্ট করা হয় যখন অনিরাপদ sysctls নোডে ম্যানুয়ালি সক্ষম করা প্রয়োজন যাতে সেগুলি ব্যবহারকারীর কাছে উপলব্ধ হতে পারে। এখন, কুবারনেটে লিনাক্স sysctls কিভাবে ব্যবহার করতে হয় তা বোঝা যাক।







পূর্বশর্ত

আপনি Kubernetes-এ Linux sysctls কীভাবে ব্যবহার করবেন তা শিখতে শুরু করার আগে, নিশ্চিত করুন যে আপনার সিস্টেমে নিম্নলিখিত সরঞ্জামগুলি ইনস্টল করা আছে:



    • Kubernetes সংস্করণ 1.23 বা অন্য কোনো সর্বশেষ সংস্করণ
    • উবুন্টু 20.04 বা অন্য কোন সর্বশেষ সংস্করণ
    • পড সমর্থন জন্য Sysctls
    • Kubectl কমান্ড লাইন টুল
    • মিনিকুব ক্লাস্টার

ধরে নিচ্ছি যে আপনার সিস্টেম পূর্বশর্ত চাহিদা পূরণ করছে, আমরা বাস্তবায়ন বিভাগে চলে যাচ্ছি।



কুবারনেটসে লিনাক্স সিসক্টলস কীভাবে ব্যবহার করবেন?

লিনাক্স অপারেটিং সিস্টেম হল একটি প্ল্যাটফর্ম যা আপনাকে নেটওয়ার্ক স্ট্যাকে sysctls knobs এর মাধ্যমে কার্নেলগুলিকে টিউন করতে দেয়। কিছু sysctls নিজস্ব কনফিগারেশন সহ একটি পডের জন্য নামস্থানে রাখা হয় এবং অন্যগুলি সম্পূর্ণ সিস্টেমের জন্য বৈধ। Kubernetes sysctls ইন্টারফেসটিকে দুটি বিভাগে গোষ্ঠীবদ্ধ করেছে:





    • নামস্থান বনাম নোড-স্তরের sysctls
    • নিরাপদ বনাম অনিরাপদ sysctls

নেমস্পেস বনাম নোড-লেভেল sysctls:

লিনাক্স কার্নেলে, বেশিরভাগ sysctls নামস্থানে থাকে যা আপনাকে একটি নোডে বিভিন্ন পডের মধ্যে স্বাধীনভাবে সেট করতে সক্ষম করে। কুবারনেটস পডে নেমস্পেসযুক্ত sysctls সহজে অ্যাক্সেসযোগ্য। কিছু নামস্থানে sysctls নিম্নরূপ:



    • fs.mqueue.*
    • kernel .msg*
    • kernel.shm*
    • kernel.sem

নোড স্তরের sysctls নামস্থানে নেই এবং ক্লাস্টার অ্যাডমিনিস্ট্রেটরকে সেগুলি ম্যানুয়ালি সেট করতে হবে। ক্লাস্টার অ্যাডমিনিস্ট্রেটর হয় একটি বিশেষ সুবিধাপ্রাপ্ত ধারক সহ একটি দানব সেট ব্যবহার করে বা /etc/sysctls.conf নোডের লিনাক্স বিতরণ পরিবর্তন করতে পারে। নোড টিউনিং অপারেটর নোড স্তর sysctls সেট করতে ব্যবহার করা যেতে পারে।

নিরাপদ বনাম অনিরাপদ sysctls:

sysctls দুটি গ্রুপ আছে: নিরাপদ এবং অনিরাপদ। নিরাপদ sysctls সঠিকভাবে নামস্থান এবং তারা সম্পূর্ণরূপে একই নোডের পড মধ্যে বিচ্ছিন্ন করা হয়. নিরাপদ sysctls ডিফল্টরূপে সক্রিয় করা হয় এবং পড স্পেসিফিকেশন পরিবর্তন করে একটি পডে ব্যবহার করা যেতে পারে। যাইহোক, অনিরাপদ sysctls ডিফল্টরূপে নিষ্ক্রিয় করা হয় এবং ক্লাস্টার অ্যাডমিনিস্ট্রেটর দ্বারা ম্যানুয়ালি সক্রিয় করা প্রয়োজন। নিরাপদ sysctls তাদের প্রতিবেশীদের প্রভাবিত করে না যেহেতু তারা সঠিকভাবে নামস্থানে রয়েছে। যদিও অনিরাপদ sysctls অপ্রত্যাশিতভাবে একটি সিস্টেম ওভারলোড করার মত তাদের প্রতিবেশীদের প্রভাবিত করতে পারে। sysctls এর নিরাপদ সেট নিম্নরূপ:

    • net.ipv4.ping_group_range
    • net.ipv4.ip_local_port_range
    • kernel.shm_rmid_forced
    • net.ipv4.tcp_syncookies

এখানে লক্ষণীয় বিষয় হল যে sysctl কে নিরাপদ বলে ধরে নেওয়ার জন্য শুধুমাত্র নামস্থান রাখা যথেষ্ট নয়।

এখন যেহেতু আমরা sysctls-এর উভয় বিভাগই বুঝতে পেরেছি, আসুন কুবারনেটসে এই sysctls কীভাবে ব্যবহার করতে হয় তা শিখে নেওয়া যাক। এখানে, আমরা আপনাকে গাইড করব কিভাবে নিরাপদ এবং অনিরাপদ sysctls উভয়ই ব্যবহার করতে হয় এবং কীভাবে কুবারনেটসে অনিরাপদ sysctls ম্যানুয়ালি সক্ষম করা যায়।

ধাপ # 1: Minikube ক্লাস্টার শুরু করুন

Kubernetes প্ল্যাটফর্মটি কিছু ক্লাস্টারের মাধ্যমে ব্যবহার করা যেতে পারে এবং আমরা এখানে মিনিকুব ক্লাস্টার ব্যবহার করছি। মিনিকুব ক্লাস্টার শুরু করতে, আপনি নীচের কমান্ডটি ব্যবহার করতে পারেন:

> মিনিকুব শুরু করুন


এটি minikube ক্লাস্টার শুরু করবে যেখানে আপনি kubectl কমান্ড চালাতে পারবেন এবং Kubernetes প্ল্যাটফর্মে Linux sysctls ব্যবহার করতে পারবেন। আপনি যখন এই কমান্ডটি চালান, আপনি নীচের একটির অনুরূপ আউটপুট পাবেন:

ধাপ # 2: sysctls এর পরামিতি পরীক্ষা করুন

sysctls ইন্টারফেস /proc/sys/ ভার্চুয়াল প্রসেস ফাইলে পাওয়া কার্নেল পরামিতিগুলি পরিবর্তন করতে ব্যবহৃত হয়। সমস্ত পরামিতি তালিকাভুক্ত করতে, নীচের কমান্ডটি ব্যবহার করা যেতে পারে:

> sudo sysctl -ক


এই কমান্ডটি /proc/sys/ ভার্চুয়াল প্রসেস ফাইল থেকে সমস্ত কার্নেল পরামিতি তালিকাভুক্ত করবে। নীচের স্ন্যাপশটে দেওয়া নমুনা আউটপুট দেখুন:

ধাপ # 3: অনিরাপদ sysctls সক্ষম করুন

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

> kubectl -অনুমোদিত-অনিরাপদ-sysctls \


এটি kubectl কমান্ড ব্যবহার করে অনিরাপদ sysctls সক্রিয় করার একটি খুব মৌলিক এবং সহজ উপায়।


তাছাড়া, minikube extra-config পতাকা ব্যবহার করে অনিরাপদ sysctls সক্ষম করা যেতে পারে। এটি নীচে দেওয়া কমান্ড ব্যবহার করে করা যেতে পারে:

> minikube start –extra-config='kubectl.allowed-unsafe-sysctls=kernel.msg * ,net.core.somaxconn'...


এই কমান্ডটি আপনাকে মিনিকুব ক্লাস্টারের মাধ্যমে অনিরাপদ sysctls সক্রিয় করতে দেয়। যাইহোক, এটি শুধুমাত্র নামস্থানযুক্ত sysctls সক্রিয় করতে পারে। নীচের স্ন্যাপশটে দেওয়া নমুনা আউটপুট দেখুন:

উপসংহার

এই নিবন্ধটি আমাদের লিনাক্স sysctls ইন্টারফেসের একটি ওভারভিউ প্রদান করেছে। আমরা আলোচনা করেছি একটি লিনাক্স sysctl কি এবং এটি কুবারনেটস পরিবেশে কীভাবে ব্যবহার করা যেতে পারে। sysctls দুটি গ্রুপ আছে: নিরাপদ এবং অনিরাপদ। sysctls-এর নিরাপদ গোষ্ঠী ডিফল্টরূপে সক্রিয় থাকে, যখন অনিরাপদ sysctls গোষ্ঠী ডিফল্টরূপে নিষ্ক্রিয় থাকে। একটি সহজ এবং সহজ উদাহরণের সাহায্যে, আমরা শিখেছি কিভাবে kubectl কমান্ড এবং minikube –extra-config পতাকা ব্যবহার করে অনিরাপদ sysctls সক্রিয় করতে হয়।