OpenShift এ Container এবং Pod ব্যবস্থাপনা গুরুত্বপূর্ণ একটি দিক, যেটি কনটেইনারাইজড অ্যাপ্লিকেশনগুলির পরিচালনা ও অর্কেস্ট্রেশন নিশ্চিত করে। এখানে Containers এবং Pods এর ধারণা, তাদের ব্যবস্থাপনা, এবং OpenShift CLI ব্যবহার করে তাদের সাথে কাজ করার প্রক্রিয়া আলোচনা করা হলো।
Container এবং Pod এর ধারণা
Container
- সংজ্ঞা: একটি Container হলো একটি লাইটওয়েট, সঠিকভাবে প্যাকেজ করা পরিবেশ যেখানে একটি অ্যাপ্লিকেশন এবং এর সমস্ত নির্ভরশীলতা অন্তর্ভুক্ত থাকে। এটি ভার্চুয়ালাইজেশন প্রযুক্তির মাধ্যমে একাধিক অ্যাপ্লিকেশনকে আলাদা আলাদা পরিবেশে চালানোর সুবিধা দেয়।
- বৈশিষ্ট্য:
- দ্রুত এবং সহজে চালানো যায়।
- বিভিন্ন পরিবেশে সঙ্গতিপূর্ণ কার্যকারিতা প্রদান করে।
- ডেভেলপমেন্ট থেকে প্রোডাকশনে স্থানান্তর সহজতর করে।
Pod
- সংজ্ঞা: একটি Pod হল Kubernetes এবং OpenShift এর একটি মৌলিক ইউনিট, যা একটি বা একাধিক কনটেইনারকে একসাথে গ্রুপ করে। Pods একসাথে কাজ করে এবং একটি কমন স্টোরেজ এবং নেটওয়ার্ক সপ্লাই করে।
- বৈশিষ্ট্য:
- Pods সাধারণত একটি অ্যাপ্লিকেশনের একটি বিশেষ অংশ হিসাবে কাজ করে।
- Pods এর মধ্যে কনটেইনারগুলি একটি কমিউন ক্যাশ, লোড ব্যালেন্সিং, এবং যোগাযোগের সুবিধা পায়।
- Pods একই নেটওয়ার্ক namespace শেয়ার করে, তাই তারা সহজে একে অপরের সাথে যোগাযোগ করতে পারে।
Container এবং Pod ব্যবস্থাপনা
OpenShift এ Container এবং Pod ব্যবস্থাপনার জন্য কিছু মৌলিক কার্যকলাপ এবং কমান্ড নিম্নরূপ:
১. Pod তৈরি এবং পরিচালনা
নতুন Pod তৈরি করা:
oc run <pod-name> --image=<image-name>
Pods এর তালিকা দেখা:
oc get pods
একটি নির্দিষ্ট Pod এর তথ্য দেখা:
oc describe pod <pod-name>
Pod ডিলিট করা:
oc delete pod <pod-name>
২. Container পরিচালনা
Container এর তালিকা দেখা: Pods এর মধ্যে কনটেইনারগুলি থাকে, তাই Pods এর তালিকা দেখার মাধ্যমে কনটেইনারগুলির অবস্থান জানা যায়।
একটি Pod এর Logs দেখা:
oc logs <pod-name>
একটি Pod এ Shell এ প্রবেশ করা:
oc rsh <pod-name>
৩. Deployment এবং ReplicaSets
নতুন Deployment তৈরি করা:
oc create deployment <deployment-name> --image=<image-name>
Deployment এর Pods দেখার জন্য:
oc get pods -l app=<deployment-name>
ReplicaSet তৈরি করা:
oc scale --replicas=<number-of-replicas> deployment/<deployment-name>
Pods এর সাথে Networking এবং Storage
Networking: Pods একই নেটওয়ার্ক namespace শেয়ার করে, যা তাদের মধ্যে সহজ যোগাযোগের অনুমতি দেয়। OpenShift এ, সার্ভিস তৈরি করে Pods এর মধ্যে লোড ব্যালেন্সিং এবং ডাটা শেয়ারিং করা যায়।
Storage: OpenShift এ Persistent Volumes (PV) এবং Persistent Volume Claims (PVC) ব্যবহার করে Pods এর জন্য স্টোরেজ ব্যবস্থাপনা করা হয়।
সারসংক্ষেপ
OpenShift এ Container এবং Pod ব্যবস্থাপনা একটি গুরুত্বপূর্ণ দিক যা কনটেইনারাইজড অ্যাপ্লিকেশনগুলির কার্যকরী পরিচালনা নিশ্চিত করে। Pods কনটেইনারগুলির একটি গ্রুপ, যা একসাথে কাজ করে এবং একটি সাধারণ পরিবেশ তৈরি করে। OpenShift CLI ব্যবহার করে Pods এবং Containers এর সঠিক পরিচালনা নিশ্চিত করা যায়, যা ডেভেলপমেন্ট থেকে প্রোডাকশনে স্থানান্তর এবং স্কেলিং প্রক্রিয়াকে সহজ করে। OpenShift এ Container এবং Pod ব্যবস্থাপনা একটি কার্যকরী এবং ব্যবস্থাপনার জন্য শক্তিশালী প্ল্যাটফর্ম হিসেবে কাজ করে।
Container এবং Pod হলো কন্টেইনারাইজড অ্যাপ্লিকেশন ডেপ্লয়মেন্টে অত্যন্ত গুরুত্বপূর্ণ উপাদান, বিশেষ করে Kubernetes এবং OpenShift-এর মতো কন্টেইনার অর্কেস্ট্রেশন প্ল্যাটফর্মে। নিচে কন্টেইনার এবং পডের ভূমিকা ও তাদের সম্পর্ক বিশদভাবে ব্যাখ্যা করা হলো:
Container: সংজ্ঞা এবং ভূমিকা
Container হলো একটি হালকা এবং বিচ্ছিন্ন এনভায়রনমেন্ট যেখানে একটি অ্যাপ্লিকেশন এবং তার সমস্ত নির্ভরশীলতা একসাথে প্যাকেজ করা থাকে। কন্টেইনারগুলো মূলত ভার্চুয়ালাইজড সফটওয়্যার এনভায়রনমেন্ট যা একটি হোস্ট অপারেটিং সিস্টেমের ওপর ভিত্তি করে তৈরি হয়, কিন্তু তারা ভার্চুয়াল মেশিনের তুলনায় অনেক হালকা এবং দ্রুত।
Container-এর বৈশিষ্ট্য এবং ভূমিকা:
- বিচ্ছিন্নতা: কন্টেইনারগুলো তাদের হোস্ট মেশিন থেকে বিচ্ছিন্ন হয়, তাই তারা স্বাধীনভাবে চলতে পারে এবং একটি কন্টেইনারে কোনো সমস্যা অন্য কন্টেইনার বা হোস্ট সিস্টেমকে প্রভাবিত করে না।
- পোর্টেবল এবং রিপ্রোডিউসেবল: কন্টেইনারগুলো সহজেই পোর্টেবল, তাই একবার একটি কন্টেইনার তৈরি হলে, সেটি যেকোনো পরিবেশে (লোকাল, ক্লাউড, বা অন-প্রিমাইস) একইভাবে চলতে পারে।
- দ্রুত স্টার্টআপ: কন্টেইনারগুলো ভার্চুয়াল মেশিনের তুলনায় দ্রুত শুরু হয়, কারণ তারা একটি সম্পূর্ণ অপারেটিং সিস্টেম চালানোর পরিবর্তে শুধুমাত্র প্রয়োজনীয় সফটওয়্যার এবং নির্ভরশীলতাগুলো প্যাকেজ করে।
- অ্যাপ্লিকেশন প্যাকেজিং: একটি কন্টেইনারে সাধারণত অ্যাপ্লিকেশন কোড, লাইব্রেরি, এবং কনফিগারেশন ফাইল থাকে, যা একসাথে প্যাকেজ করে একটি সামগ্রিক ইউনিট তৈরি করা হয়, যা ডেভেলপমেন্ট থেকে প্রোডাকশনে সহজে ডেপ্লয় করা যায়।
উদাহরণ:
ডকার (Docker) হলো একটি জনপ্রিয় কন্টেইনারাইজেশন টুল, যা কন্টেইনার তৈরি, ডেপ্লয়, এবং পরিচালনা করতে ব্যবহৃত হয়। আপনি docker run কমান্ড ব্যবহার করে একটি কন্টেইনার রান করতে পারেন, যা নির্দিষ্ট ইমেজের ওপর ভিত্তি করে একটি কোড বা সার্ভিস চালাতে পারে।
docker run -d -p 8080:80 nginx
এই কমান্ড একটি nginx কন্টেইনার চালাবে এবং এটিকে পোর্ট 8080 এ অ্যাক্সেসযোগ্য করবে।
Pod: সংজ্ঞা এবং ভূমিকা
Pod হলো Kubernetes-এর মধ্যে কন্টেইনার চালানোর একটি মূল ইউনিট। Pod হলো একটি লজিক্যাল গ্রুপ যা এক বা একাধিক কন্টেইনারের সমন্বয়ে গঠিত হয়। একটি Pod-এর মধ্যে থাকা কন্টেইনারগুলো একটি সাধারণ নেটওয়ার্কিং এবং স্টোরেজ শেয়ার করে, যাতে তারা একে অপরের সাথে সহজে যোগাযোগ করতে পারে।
Pod-এর বৈশিষ্ট্য এবং ভূমিকা:
একক বা একাধিক কন্টেইনার:
- একটি Pod-এর মধ্যে একটি কন্টেইনার থাকতে পারে বা একাধিক কন্টেইনার একসাথে চলতে পারে। একাধিক কন্টেইনার সাধারণত একে অপরের ওপর নির্ভরশীল এবং একসাথে কাজ করে। উদাহরণস্বরূপ, একটি Pod-এর মধ্যে একটি অ্যাপ্লিকেশন কন্টেইনার এবং একটি লগ ম্যানেজমেন্ট কন্টেইনার থাকতে পারে।
শেয়ারড নেটওয়ার্ক এবং স্টোরেজ:
- একটি Pod-এর মধ্যে থাকা কন্টেইনারগুলো একটি সাধারণ IP অ্যাড্রেস এবং নেটওয়ার্ক ইন্টারফেস শেয়ার করে, যা তাদের সহজে যোগাযোগ করতে সহায়তা করে। Pod-এর মধ্যে থাকা কন্টেইনারগুলো সরাসরি
localhostব্যবহার করে একে অপরের সাথে যোগাযোগ করতে পারে। - Pod-এর মধ্যে শেয়ারড ভলিউম থাকতে পারে, যা Pod-এর সব কন্টেইনার ব্যবহার করতে পারে। এটি ডেটা শেয়ারিং এবং পারসিস্টেন্সের জন্য প্রয়োজনীয়।
লজিক্যাল ইউনিট:
- Pod হলো Kubernetes-এর মধ্যে ডেপ্লয়মেন্ট এবং ম্যানেজমেন্টের লজিক্যাল ইউনিট। Kubernetes সাধারণত Pod-কে স্কেল করে এবং পুনরায় চালু করে, কন্টেইনারগুলোকে সরাসরি ম্যানেজ করার পরিবর্তে।
উদাহরণ:
Kubernetes-এ একটি Pod তৈরি করতে YAML ফাইল ব্যবহার করা যেতে পারে:
apiVersion: v1
kind: Pod
metadata:
name: my-nginx-pod
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80
এই YAML ফাইলটি একটি my-nginx-pod তৈরি করবে, যেখানে একটি nginx কন্টেইনার চলবে যা পোর্ট ৮০ এ অ্যাক্সেসযোগ্য হবে।
Container এবং Pod-এর সম্পর্ক
- Pod হলো কন্টেইনারের জন্য একটি হোস্ট: একটি Pod মূলত একটি বা একাধিক কন্টেইনারের জন্য একটি লজিক্যাল গ্রুপ, যেখানে কন্টেইনারগুলো একই নেটওয়ার্ক এবং স্টোরেজ শেয়ার করে। Pod-এর মাধ্যমে Kubernetes সহজে কন্টেইনার ম্যানেজ করতে পারে।
- Kubernetes-এর ম্যানেজমেন্ট ইউনিট: Kubernetes সরাসরি কন্টেইনার ম্যানেজ করার পরিবর্তে Pod-কে ম্যানেজ করে, কারণ Pod-এ থাকা কন্টেইনারগুলো একসাথে ডেপ্লয় এবং স্কেল করা যায়।
- স্কেলিং এবং অর্কেস্ট্রেশন: Pod স্কেলিং-এর মাধ্যমে Kubernetes সহজে অ্যাপ্লিকেশন স্কেল করতে পারে। উদাহরণস্বরূপ, Kubernetes একটি Pod-এর কপি তৈরি করে (রিপ্লিকা সেট ব্যবহার করে) অ্যাপ্লিকেশন স্কেল করতে পারে।
সংক্ষেপে
| বৈশিষ্ট্য | Container | Pod |
|---|---|---|
| কাজ | একটি হালকা ও বিচ্ছিন্ন এনভায়রনমেন্টে অ্যাপ্লিকেশন চালানো | এক বা একাধিক কন্টেইনারের জন্য একটি লজিক্যাল গ্রুপ |
| পরিবেশ | কন্টেইনারে সফটওয়্যার, লাইব্রেরি এবং নির্ভরশীলতা থাকে | Pod একটি শেয়ারড নেটওয়ার্ক এবং স্টোরেজ শেয়ার করে |
| ম্যানেজমেন্ট | Docker বা অন্য কন্টেইনার টুল ব্যবহার করে চালানো হয় | Kubernetes Pod-কে ম্যানেজ করে এবং স্কেল করে |
উপসংহার
Container হলো অ্যাপ্লিকেশন রান করার একটি হালকা এবং বিচ্ছিন্ন ইউনিট, যেখানে Pod হলো Kubernetes-এর মধ্যে কন্টেইনার ম্যানেজ এবং ডেপ্লয় করার জন্য একটি লজিক্যাল গ্রুপ। Pod-এর মাধ্যমে Kubernetes সহজে কন্টেইনার স্কেল, ডেপ্লয়, এবং পরিচালনা করতে পারে, যা অ্যাপ্লিকেশন ডেপ্লয়মেন্টের জন্য অত্যন্ত কার্যকরী।
Pod তৈরি এবং Deployment এর ধারণা
OpenShift এবং Kubernetes এ Pod এবং Deployment উভয়ই কনটেইনারাইজড অ্যাপ্লিকেশন পরিচালনার জন্য গুরুত্বপূর্ণ উপাদান। তাদের ধারণা, ফিচার, এবং ব্যবহারের পদ্ধতি সম্পর্কে বিস্তারিত আলোচনা করা হলো।
Pod
সংজ্ঞা
Pod হল Kubernetes এবং OpenShift এর একটি মৌলিক ইউনিট, যা একটি বা একাধিক কনটেইনারকে একত্রে গোষ্ঠীভুক্ত করে। Pods সাধারণত একটি অ্যাপ্লিকেশনের বিভিন্ন অংশ যা একসাথে কাজ করে।
বৈশিষ্ট্য
- একাধিক কনটেইনার: একটি Pod একাধিক কনটেইনার ধারণ করতে পারে, যা একসাথে চালিত হয় এবং একটি সাধারণ নেটওয়ার্ক স্ট্যাক শেয়ার করে।
- স্থানীয় সংরক্ষণ: Pods একটি সংযোগিত স্টোরেজ সমাধান ব্যবহার করে, যা কনটেইনারগুলির মধ্যে ডাটা শেয়ার করতে সাহায্য করে।
- কনটেইনারের জীবনচক্র: Pods কনটেইনারের জীবনচক্রের সাথে যুক্ত থাকে। যখন একটি Pod স্থির হয়, তখন তার মধ্যে সমস্ত কনটেইনারও স্থির হয়।
Pod তৈরি
OpenShift CLI (oc) ব্যবহার করে Pod তৈরি করতে পারেন:
oc run <pod-name> --image=<image-name>
এখানে <pod-name> হল Pods এর নাম এবং <image-name> হল সেই কনটেইনার ইমেজ যা Pods এ চলবে।
Deployment
সংজ্ঞা
Deployment হল একটি Kubernetes অবকাঠামো উপাদান যা একটি অ্যাপ্লিকেশনের একটি নির্দিষ্ট সংস্করণের কনটেইনারের ইনস্ট্যান্সগুলিকে পরিচালনা এবং স্কেল করতে ব্যবহৃত হয়। এটি Pods এর জীবনচক্র এবং প্রয়োজনীয়তা স্বয়ংক্রিয়ভাবে পরিচালনা করে।
বৈশিষ্ট্য
- অটোমেটেড স্কেলিং: Deployment আপনাকে Pods এর সংখ্যা সহজেই বাড়ানোর এবং কমানোর সুযোগ দেয়।
- Rolling Updates: নতুন সংস্করণগুলিকে হালনাগাদ করার সময়, Deployment রোলিং আপডেট প্রদান করে, যাতে পুরানো Pods ধীরে ধীরে নতুন Pods দ্বারা প্রতিস্থাপিত হয়, যা ডাউনটাইম কমায়।
- Rollback সুবিধা: যদি নতুন সংস্করণে সমস্যা হয়, তবে সহজে পূর্ববর্তী সংস্করণে ফিরে যাওয়ার সুযোগ দেয়।
Deployment তৈরি
OpenShift CLI (oc) ব্যবহার করে Deployment তৈরি করতে পারেন:
oc create deployment <deployment-name> --image=<image-name>
এখানে <deployment-name> হল Deployment এর নাম এবং <image-name> হল সেই কনটেইনার ইমেজ যা Deployment এ চলবে।
Pod এবং Deployment এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Pod | Deployment |
|---|---|---|
| সংজ্ঞা | একটি বা একাধিক কনটেইনারের একটি ইউনিট | Pods এর জীবনচক্র এবং স্কেলিং পরিচালনা করে |
| সংখ্যা | একটি Pod এককভাবে থাকে | Deployment একাধিক Pods তৈরি এবং পরিচালনা করে |
| জীবনচক্র | Pods স্বয়ংক্রিয়ভাবে ব্যবস্থাপিত হয় | Deployment Pods এর জীবনচক্র পরিচালনা করে |
| আপডেট | Pods এর আপডেট ম্যানুয়াল | Deployment রোলিং আপডেট সরবরাহ করে |
| স্কেলিং | Pods স্কেলিং করতে ম্যানুয়াল করতে হয় | Deployment এর মাধ্যমে অটোমেটিক স্কেলিং |
সারসংক্ষেপ
OpenShift এবং Kubernetes এ Pods এবং Deployments হল কনটেইনারাইজড অ্যাপ্লিকেশনগুলির প্রধান উপাদান। Pods কনটেইনারের গ্রুপ, যেখানে Deployment Pods এর জীবনচক্র এবং স্কেলিং পরিচালনা করে। Pods এবং Deployments ব্যবহারের মাধ্যমে ডেভেলপাররা তাদের অ্যাপ্লিকেশনগুলি দ্রুত এবং কার্যকরভাবে ডিপ্লয় এবং পরিচালনা করতে সক্ষম হন। OpenShift CLI (oc) ব্যবহার করে সহজেই Pods এবং Deployments তৈরি এবং পরিচালনা করা যায়।
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 সাধারণত সাইডকার, অ্যাম্বাসেডর, বা অ্যাডাপ্টার প্যাটার্নে ব্যবহৃত হয়, যেখানে একাধিক কন্টেইনার একসাথে কাজ করে একটি সামগ্রিক অ্যাপ্লিকেশন বা সার্ভিস প্রদান করে।
OpenShift এবং Kubernetes-এ Pod এবং Deployment Configuration সেটআপ করার জন্য YAML ফাইল ব্যবহার করা হয়। এই YAML ফাইলগুলি অ্যাপ্লিকেশনের বিভিন্ন বৈশিষ্ট্য এবং সেটিংস কনফিগার করে। নিচে উদাহরণসহ Pod এবং Deployment Configuration দেওয়া হলো।
১. Pod Configuration
উদাহরণ YAML ফাইল
apiVersion: v1
kind: Pod
metadata:
name: example-pod
labels:
app: example
spec:
containers:
- name: example-container
image: nginx:latest
ports:
- containerPort: 80
বিশ্লেষণ
- apiVersion: Pod এর API সংস্করণ নির্দেশ করে।
- kind: এখানে
Podনির্দেশ করে যে এটি একটি Pod কনফিগারেশন। - metadata: Pod এর তথ্য, যেমন নাম এবং লেবেল।
- spec: Pod এর বিশেষ উল্লেখ, যেখানে কনটেইনারের নাম, ইমেজ এবং পোর্ট উল্লেখ করা হয়েছে।
২. Deployment Configuration
উদাহরণ YAML ফাইল
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-deployment
labels:
app: example
spec:
replicas: 3
selector:
matchLabels:
app: example
template:
metadata:
labels:
app: example
spec:
containers:
- name: example-container
image: nginx:latest
ports:
- containerPort: 80
বিশ্লেষণ
- apiVersion: Deployment এর API সংস্করণ নির্দেশ করে।
- kind: এখানে
Deploymentনির্দেশ করে যে এটি একটি Deployment কনফিগারেশন। - metadata: Deployment এর তথ্য, যেমন নাম এবং লেবেল।
- spec: Deployment এর বিশেষ উল্লেখ, যেখানে:
- replicas: এখানে ৩টি কপি (replicas) নির্দেশ করা হয়েছে, অর্থাৎ ৩টি Pod তৈরি হবে।
- selector: Pods নির্বাচন করার জন্য লেবেল।
- template: Pod এর কনফিগারেশন যা Deployment এর মাধ্যমে তৈরি হবে।
Pod এবং Deployment তৈরি করা
YAML ফাইল ব্যবহার করে Pod তৈরি করা
oc apply -f pod-config.yaml
YAML ফাইল ব্যবহার করে Deployment তৈরি করা
oc apply -f deployment-config.yaml
সারসংক্ষেপ
Pod এবং Deployment Configuration এর YAML ফাইল ব্যবহার করে OpenShift এবং Kubernetes-এ অ্যাপ্লিকেশন পরিচালনা করা সহজ। উপরের উদাহরণগুলো নির্দেশ করে কিভাবে YAML ফাইল তৈরি করে Pod এবং Deployment সেটআপ করা যায়। YAML ফাইলের মাধ্যমে আপনি Pods এবং Deployments এর বৈশিষ্ট্য কাস্টমাইজ করতে পারেন এবং সেগুলো সহজেই ক্লাস্টারে ডিপ্লয় করতে পারেন।
Read more