در حال رشد.
راهاندازی Rook Ceph بر روی کوبرنتیز

در راهاندازی و نگهداری کلاسترهای on premise همیشه یکی از دغدغههای مدیر سیستمها و توسعهدهندگان، داشتن فضای ذخیرهسازیای بوده که هم قابل اطمینان باشه هم اون پرفورمنس خوبی که مد نظرشونه رو فراهم کنه. برای رفع این نیاز، راهکارهای خیلی متوعی ارائه شده برای مثال OpenEBS یا GlusterFS و البته موضوع مورد بحث ما، Rook!
به طور خلاصه کاری که Rook برای شما انجام میده اینه که حافظه توزیع شده خامی که روی نودهای کلاستر قابل شناساییه رو به یک سرویس ذخیرهسازی تبدیل میکنه که بار مدیریت، اشکالیابی و scaling رو به شکل زیادی از دوش شما بر میداره.
پیشنیازها
برای گام به گام پیش رفتن با من فقط نیازه یه کلاستر کوبرنتیز با دسترسی ادمین و توانای اضافه کردن بلاک استوریج به نودهای کلاستر خودتون رو داشته باشید؛ درباره تفاوتهای Block Storage و Object Storage در دانشنامه عمومی ابر آروان صحبت شده است.
فرض میکنم شما هم مثل ما کلاستر کوبرنتیز خودتون روی سرویس IaaS راهاندازی کردید.
- در اولین قدم باید در بخش فضای ابرکی به تعداد نودهای کلاستر خود فضای ابری بسازید و با گزینه اتصال به ابرک اونها رو به ابرکها وصل کنید؛ البته توجه داشته باشید فقط برای نودهایی نیازه فضای ابری بسازید که پادهای rook قراره روی اونها schedule بشه، برای مثال اگر کلاستر شما در کل ۵ نود داره ولی فقط ۲ نود از اونها قراره worker باشه و بقیه فقط control-plane شما هستند، فقط باید به نودهای worker فضای ابری متصل کنید.
حالا میبینید که اگر روی ابرکها دستور lsblk را بگیرید فضای ذخیرهسازی جدیدی به نامهای vdb یا vdc (بسته به استفاده شما از فضاهای ابری دیگر به ترتیب نامگذاری میشود) روی ابرک قابل دسترسی است.

هیچنیازی به فرمتکردن این فضا یا ایجاد mount point برای آن نیست، اینکار را rook بطور خودکار برای ما انجام میده.
خب! میریم سراغ نصب rook
- اول مخزن گیت روک که حاوی مانیفستهای نصب آن روی کوبرنتیز است رو کلون میکنیم
git clone --single-branch -b release-1.7 https://github.com/rook/rook.git
- به مسیر زیر برید و چهار مانیفست زیر رو پشت سر هم دپلوی کنید
cd rook/cluster/examples/kubernetes/ceph
# deploy...
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
kubectl create -f cluster.y
- بهتره در این مرحله بررسی کنیم و ببینیم پادها به درستی کار میکنند یا نه؛ البته ممکنه برای دانلود اولیه ایمیجهای روک دقایقی این فرایند طول بکشه پس منتظر بمونید همه پادها به حالت Running در بیان!
kubectl -n rook-ceph get pod
- حتی اگه استوریج شما آماده استفاده باشه، بدون ریسورس storageclass امکان استفاده ازش وجود نداره، پس با دپلوی کردن این مانیفست از مخزن گیتی که کلون کردیم اینکار رو انجام میدیم
kubectl apply -f ./csi/rbd/storageclass.yaml
حالا اگه همینطور که در تصویر میبینید تمام پادها بدون مشکل درحال اجرا بود و کلاستر ceph بدون مشکل راهندازی و provision شد شما باید بتونید فقط با افزودن storageclass: rook-ceph-block به pvcهای خود از فضای ابری مدیریت شده توسط rook استفاده کنید.
تست و بنچمارک
برای تست کارایی و پرفورمنس rook از مانیفستهای زیر و ایمیج sotoaster/dbench استفاده میکنیم، و دوتا ریسورس هم نیاز داریم یک pvc که روی rook دپلوی میکنیم و یک job که وظیفه انجام بنچمارکهای مختلف روی این pvc رو انجام میده.
PersistentVolumeClaim
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: dbench-rook
spec:
storageClassName: rook-ceph-block
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
Job
apiVersion: batch/v1
kind: Job
metadata:
name: dbench-rook
spec:
template:
spec:
containers:
- name: dbench-rook
image: sotoaster/dbench:latest
imagePullPolicy: IfNotPresent
env:
- name: DBENCH_MOUNTPOINT
value: /data
- name: FIO_SIZE
value: 1G
volumeMounts:
- name: dbench-pv-rook
mountPath: /data
restartPolicy: Never
volumes:
- name: dbench-pv-rook
persistentVolumeClaim:
claimName: dbench-rook
backoffLimit: 4
حالا با استفاده از دستور kubectl logs و سپس نام پاد در حال اجرا میتوان مراحل بنچمارک را مشاهده کرد. در انتهای بنچمارک یک نمای کلی از پرفورمنس زیرساخت ذخیرهسازی شما، نشان داده میشه که به این صورت خواهد بود:
==================
= Dbench Summary =
==================
Random Read/Write IOPS: 1738/473. BW: 121MiB/s / 42.1MiB/s
Average Latency (usec) Read/Write: 6237.10/47.07
Sequential Read/Write: 135MiB/s / 81.8MiB/s
Mixed Random Read/Write IOPS: 798/266
استفاده از rook بسیار راحته و خیلی از دردسرهای مدیریت block storage رو برای ما کم میکنه، امیدوارم شما هم بتوانید به راحتی از این ابزار استفاده کنید.
مطلبی دیگر از این نویسنده
نیمفومانیاک، آنچه قاب هایپررئالیسم نشانم داد!
مطلبی دیگر در همین موضوع
حسابفان (انگولار دوست نداشتنی)
بر اساس علایق شما
این نکته رمز ¿¡