Persistent Volume (PV) এবং Persistent Volume Claim (PVC) হলো Kubernetes এবং OpenShift-এর গুরুত্বপূর্ণ স্টোরেজ অবজেক্ট, যা ডেটা পারসিস্টেন্স এবং স্টোরেজ ম্যানেজমেন্ট নিশ্চিত করতে ব্যবহৃত হয়। এগুলোর মাধ্যমে অ্যাপ্লিকেশন ডেটা সংরক্ষণ করা যায়, যা পড বা কন্টেইনার রিস্টার্টের পরেও স্থিতিশীল থাকে।
১. Persistent Volume (PV)
Persistent Volume (PV) হলো Kubernetes-এর একটি স্টোরেজ রিসোর্স, যা ক্লাস্টারের স্টোরেজ অবজেক্ট হিসেবে কাজ করে। এটি একটি ফিজিক্যাল স্টোরেজ স্পেস (যেমন, ক্লাউড প্রোভাইডার, নেটওয়ার্ক ফাইল সিস্টেম, বা লোকাল ডিস্ক) থেকে তৈরি করা হয় এবং Kubernetes ক্লাস্টারে অ্যাপ্লিকেশন ডেটা সংরক্ষণের জন্য ব্যবহৃত হয়। PV একবার তৈরি হলে এটি ক্লাস্টারের জন্য একটি স্টোরেজ রিসোর্স হিসেবে রেজিস্টার করা হয়, এবং পরে পড বা কন্টেইনারগুলো তা ব্যবহার করতে পারে।
PV-এর বৈশিষ্ট্য:
- স্ট্যাটিক এবং ডাইনামিক:
- PV স্ট্যাটিকভাবে তৈরি হতে পারে, যেখানে অ্যাডমিন ম্যানুয়ালি PV তৈরি করে।
- অথবা এটি ডাইনামিকভাবে প্রভিশন হতে পারে, যেখানে স্টোরেজ ক্লাস ব্যবহার করে Kubernetes স্বয়ংক্রিয়ভাবে PV তৈরি করে।
- স্টোরেজ টাইপ:
- Kubernetes বিভিন্ন ধরনের স্টোরেজ সাপোর্ট করে, যেমন NFS (Network File System), AWS EBS (Elastic Block Store), GCE Persistent Disk, বা Local Storage।
- অ্যাক্সেস মোড:
- PV বিভিন্ন অ্যাক্সেস মোড সমর্থন করে, যেমন:
- ReadWriteOnce (RWO): একটি নোডে রিড এবং রাইট অ্যাক্সেস।
- ReadOnlyMany (ROX): অনেক নোডে শুধুমাত্র রিড অ্যাক্সেস।
- ReadWriteMany (RWX): একাধিক নোডে রিড এবং রাইট অ্যাক্সেস।
- PV বিভিন্ন অ্যাক্সেস মোড সমর্থন করে, যেমন:
PV তৈরি করার YAML ফাইলের উদাহরণ:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-demo
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
nfs:
path: /mnt/data
server: 192.168.1.100
ব্যাখ্যা:
- capacity:
5Giস্টোরেজ স্পেস বরাদ্দ করা হয়েছে। - accessModes: এখানে
ReadWriteOnceমোড ব্যবহার করা হয়েছে, যা এক নোডে রিড এবং রাইট এক্সেস দেয়। - persistentVolumeReclaimPolicy: এটি
Retainহিসেবে নির্ধারণ করা হয়েছে, যার ফলে PV এর মালিকানা পরিবর্তন হলে বা PV অনমাউন্ট হলে এটি সংরক্ষণ করে রাখা হবে। - nfs: একটি NFS শেয়ার ব্যবহার করা হয়েছে, যেখানে
/mnt/dataপাথটি NFS সার্ভার থেকে এসেছে।
২. Persistent Volume Claim (PVC)
Persistent Volume Claim (PVC) হলো Kubernetes-এ একটি অবজেক্ট, যা PV-এর স্টোরেজ স্পেস দাবি করে। যখন একটি পড বা কন্টেইনার একটি স্টোরেজ প্রয়োজন হয়, তখন এটি PVC ব্যবহার করে একটি নির্দিষ্ট পরিমাণ স্টোরেজ দাবি করে। PVC স্টোরেজ স্পেসের ধরন (যেমন, ReadWriteMany, ReadWriteOnce), পরিমাণ, এবং স্টোরেজ ক্লাস উল্লেখ করে, যা Kubernetes ক্লাস্টারে PV থেকে সংযুক্ত করা হয়।
PVC তৈরি হলে Kubernetes একটি উপযুক্ত PV খুঁজে বের করে এবং PVC-কে সেই PV-এর সাথে সংযুক্ত করে। যদি উপযুক্ত PV পাওয়া না যায়, তাহলে এটি একটি নতুন PV তৈরি করতে পারে (যদি স্টোরেজ ক্লাস সেট করা থাকে)।
PVC-এর বৈশিষ্ট্য:
- স্টোরেজ সাইজ: PVC নির্দিষ্ট স্টোরেজ সাইজ দাবি করে, যেমন ৫GiB, ১০GiB ইত্যাদি।
- অ্যাক্সেস মোড: PVC নির্দিষ্ট করে কোন মোডে এটি স্টোরেজ অ্যাক্সেস করতে চায়, যেমন ReadWriteOnce বা ReadWriteMany।
- স্টোরেজ ক্লাস: যদি ক্লাস্টারে ডাইনামিক প্রভিশনিং সেটআপ করা থাকে, তাহলে PVC স্টোরেজ ক্লাস উল্লেখ করতে পারে, যা একটি উপযুক্ত PV তৈরি করতে সাহায্য করে।
PVC তৈরি করার YAML ফাইলের উদাহরণ:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-demo
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
ব্যাখ্যা:
- accessModes: এখানে
ReadWriteOnceঅ্যাক্সেস মোড ব্যবহার করা হয়েছে, যা এক নোডে রিড এবং রাইট এক্সেস দেয়। - resources:
5Giস্টোরেজ সাইজ দাবি করা হয়েছে।
৩. PV এবং PVC-এর মধ্যে সম্পর্ক
- PV: Kubernetes-এ স্টোরেজ সরবরাহ করে এবং ক্লাস্টারে সংরক্ষণযোগ্য রিসোর্স হিসেবে কাজ করে।
- PVC: PV-এর স্টোরেজ স্পেস দাবি করে এবং পড বা কন্টেইনারের জন্য একটি স্টোরেজ ভলিউম সংযুক্ত করে। PVC তৈরি হলে Kubernetes একটি উপযুক্ত PV খুঁজে বের করে এবং PVC-কে সেই PV-এর সাথে সংযুক্ত করে।
উদাহরণ: পডে PVC সংযুক্ত করা
PVC তৈরি করার পরে, এটি একটি পডে সংযুক্ত করা যায়, যাতে পডটি স্টোরেজ ব্যবহার করতে পারে।
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx
image: nginx
volumeMounts:
- mountPath: /usr/share/nginx/html
name: storage
volumes:
- name: storage
persistentVolumeClaim:
claimName: pvc-demo
ব্যাখ্যা:
- volumeMounts: Nginx কন্টেইনারে
/usr/share/nginx/htmlডিরেক্টরিতে PVC মাউন্ট করা হয়েছে। - volumes:
pvc-demoনামে PVC ব্যবহার করা হয়েছে।
সংক্ষেপে
| বৈশিষ্ট্য | Persistent Volume (PV) | Persistent Volume Claim (PVC) |
|---|---|---|
| কাজ | Kubernetes ক্লাস্টারে স্টোরেজ স্পেস প্রদান করে | একটি নির্দিষ্ট পরিমাণ স্টোরেজ দাবি করে এবং পডে সংযুক্ত করে |
| ধরণ | বিভিন্ন ধরনের স্টোরেজ, যেমন NFS, AWS EBS, GCE PD | স্টোরেজ স্পেসের পরিমাণ এবং অ্যাক্সেস মোড উল্লেখ করে |
| অ্যাক্সেস মোড | ReadWriteOnce, ReadOnlyMany, ReadWriteMany | ReadWriteOnce, ReadWriteMany |
| প্রভিশনিং | স্ট্যাটিক বা ডাইনামিক প্রভিশন হতে পারে | শুধুমাত্র ডাইনামিক প্রভিশনিংয়ের জন্য স্টোরেজ ক্লাস উল্লেখ করে |
উপসংহার
Persistent Volume (PV) এবং Persistent Volume Claim (PVC) Kubernetes এবং OpenShift-এ স্টোরেজ ব্যবস্থাপনার জন্য খুবই গুরুত্বপূর্ণ। PV ক্লাস্টারের স্টোরেজ সরবরাহ করে এবং PVC সেই স্টোরেজ স্পেস দাবি করে এবং পড বা কন্টেইনারের জন্য সংযুক্ত করে। এগুলো ব্যবহার করে অ্যাপ্লিকেশন ডেটা পারসিস্টেন্স এবং স্টোরেজ ম্যানেজমেন্ট সহজে নিশ্চিত করা যায়।
Read more