Multi-container Pod হলো একটি Pod যা একাধিক কন্টেইনার ধারণ করে এবং তাদের মধ্যে নির্দিষ্ট কাজ ভাগ করে। Kubernetes-এ Multi-container Pod ব্যবহার করা হয় যখন একাধিক কন্টেইনারকে একসাথে কাজ করতে হয় বা তাদের মধ্যে সংহত কাজ ভাগ করতে হয়।
Multi-container Pod-এর বৈশিষ্ট্য এবং তাদের ভূমিকা
একটি Multi-container Pod-এর মধ্যে কন্টেইনারগুলো একসাথে কাজ করে এবং সাধারণত কিছু বিশেষ কাজ সম্পন্ন করতে একে অপরের সাথে যোগাযোগ করে। তারা একটি সাধারণ নেটওয়ার্ক এবং ভলিউম শেয়ার করে, যা তাদের মধ্যে ডেটা শেয়ারিং এবং সহজে যোগাযোগ করতে সাহায্য করে।
Multi-container Pod-এর সাধারণ ব্যবহার:
- Helper বা Sidecar Pattern:
- একটি প্রধান কন্টেইনারের পাশে একটি বা একাধিক কন্টেইনার থাকে, যেগুলো নির্দিষ্ট কাজ সম্পন্ন করতে সহায়ক হিসেবে কাজ করে। যেমন, লগ সংগ্রহ করা, কনফিগারেশন ফাইল আপডেট করা, বা সার্ভিসগুলোর মধ্যে প্রয়োজনীয় কমিউনিকেশন প্রদান করা।
- Ambassador Pattern:
- একটি কন্টেইনারের পাশে আরেকটি কন্টেইনার থাকে, যেটি প্রধান কন্টেইনারের জন্য প্রক্সি হিসেবে কাজ করে। এটি মূলত একটি সার্ভিসের জন্য যোগাযোগ ব্যবস্থা তৈরি করে, যাতে প্রধান কন্টেইনার সরাসরি ইন্টারনাল সার্ভিস বা অন্য সার্ভিসের সাথে যোগাযোগ করতে পারে।
- Adapter Pattern:
- একটি কন্টেইনার ইনপুট ডেটা সংগ্রহ করে এবং আরেকটি কন্টেইনার সেই ডেটাকে প্রক্রিয়া করে। এই প্যাটার্নে, দুই কন্টেইনার একসাথে কাজ করে এবং তাদের মধ্যে ডেটা শেয়ার করে।
Multi-container Pod-এর মধ্যে যোগাযোগ
Multi-container Pod-এর মধ্যে থাকা কন্টেইনারগুলো একটি সাধারণ নেটওয়ার্ক এবং শেয়ার্ড স্টোরেজ ব্যবহার করে। এই কারণে তারা একে অপরের সাথে সহজেই যোগাযোগ করতে পারে। Pod-এর মধ্যে কন্টেইনারগুলোর যোগাযোগের প্রধান দুটি উপায় হলো:
localhost ব্যবহার করে যোগাযোগ:
- Pod-এর মধ্যে থাকা কন্টেইনারগুলো একটি সাধারণ নেটওয়ার্ক শেয়ার করে, যার ফলে তারা
localhostবা127.0.0.1ব্যবহার করে সরাসরি একে অপরের সাথে যোগাযোগ করতে পারে। - উদাহরণস্বরূপ, যদি একটি কন্টেইনার একটি HTTP সার্ভার রান করে এবং আরেকটি কন্টেইনার সেই সার্ভারে রিকোয়েস্ট পাঠায়, তাহলে তারা
localhost:<port>ব্যবহার করে সহজেই যোগাযোগ করতে পারে।
শেয়ার্ড ভলিউম ব্যবহার করে ডেটা শেয়ারিং:
- Pod-এর মধ্যে থাকা কন্টেইনারগুলো একটি শেয়ার্ড ভলিউম ব্যবহার করতে পারে, যাতে তারা ডেটা শেয়ার করতে পারে। একটি কন্টেইনার ডেটা লিখতে পারে এবং অন্য কন্টেইনার সেই ডেটা পড়তে পারে।
- এটি সাধারণত লগ শেয়ারিং বা কনফিগারেশন ফাইল আপডেট করার জন্য ব্যবহৃত হয়।
উদাহরণ: Multi-container Pod YAML ফাইল
নিচে একটি Multi-container Pod-এর উদাহরণ দেওয়া হলো, যেখানে একটি প্রধান কন্টেইনার (Nginx) এবং একটি সাইডকার কন্টেইনার (লগ সংগ্রহকারী) একসাথে কাজ করে।
apiVersion: v1
kind: Pod
metadata:
name: multi-container-pod
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: shared-logs
mountPath: /var/log/nginx
- name: log-sidecar
image: busybox
command: ["/bin/sh", "-c", "tail -f /var/log/nginx/access.log"]
volumeMounts:
- name: shared-logs
mountPath: /var/log/nginx
volumes:
- name: shared-logs
emptyDir: {}
ব্যাখ্যা:
- Nginx কন্টেইনার:
- এটি একটি HTTP সার্ভার হিসেবে কাজ করে এবং পোর্ট
80এ চালানো হয়। - এটি
/var/log/nginxডিরেক্টরিতে লগ ফাইলগুলো সংরক্ষণ করে, যা একটি শেয়ার্ড ভলিউমে মাউন্ট করা হয়েছে।
- এটি একটি HTTP সার্ভার হিসেবে কাজ করে এবং পোর্ট
- Log-sidecar কন্টেইনার:
- এটি একটি সাইডকার কন্টেইনার, যা মূলত লগ সংগ্রহের কাজ করে। এটি
busyboxইমেজ ব্যবহার করে এবং/var/log/nginx/access.logফাইল মনিটর করে। - এটি একই শেয়ার্ড ভলিউমে মাউন্ট করা হয়েছে, যাতে Nginx কন্টেইনারের লগ ফাইল পড়া যায়।
- এটি একটি সাইডকার কন্টেইনার, যা মূলত লগ সংগ্রহের কাজ করে। এটি
কন্টেইনারগুলোর মধ্যে যোগাযোগের প্রক্রিয়া
- localhost ব্যবহার: এই উদাহরণে, যদিও কন্টেইনারগুলো সরাসরি HTTP রিকোয়েস্ট এক্সচেঞ্জ করছে না, কিন্তু যদি তারা চায়, তারা
localhostবা127.0.0.1ব্যবহার করে করতে পারবে, কারণ তারা একই Pod-এর মধ্যে আছে এবং একটি সাধারণ নেটওয়ার্ক শেয়ার করে। - শেয়ার্ড ভলিউম ব্যবহার: এখানে Nginx কন্টেইনার লগ ফাইল
/var/log/nginxডিরেক্টরিতে লিখে, এবং Log-sidecar কন্টেইনার সেই একই শেয়ার্ড ডিরেক্টরি থেকে সেই ফাইল পড়ে। এটি শেয়ার্ড ভলিউম ব্যবহার করে কন্টেইনারগুলোর মধ্যে ডেটা শেয়ারিংয়ের একটি উদাহরণ।
সংক্ষেপে
Multi-container Pod হলো Kubernetes-এর মধ্যে এমন একটি কনসেপ্ট, যেখানে একাধিক কন্টেইনার একসাথে কাজ করে এবং একটি সাধারণ নেটওয়ার্ক এবং স্টোরেজ শেয়ার করে। তাদের মধ্যে যোগাযোগের জন্য localhost ব্যবহার করা হয়, এবং শেয়ার্ড ভলিউমের মাধ্যমে তারা ডেটা শেয়ার করতে পারে। Multi-container Pod সাধারণত সাইডকার, অ্যাম্বাসেডর, বা অ্যাডাপ্টার প্যাটার্নে ব্যবহৃত হয়, যেখানে একাধিক কন্টেইনার একসাথে কাজ করে একটি সামগ্রিক অ্যাপ্লিকেশন বা সার্ভিস প্রদান করে।
Read more