من چند هفته پیش در مورد ذخیره سازی Rook نوشتم:
اما شاید شما قبلاً یک خوشه Ceph در مرکز داده خود داشته باشید.
یا ترجیح می دهید از Ceph در گره های جداگانه و بدون Kubernetes استفاده کنید
. [19659005] علاوه بر این ، Rook در حال حاضر نرم افزاری آلفا است و برای استفاده آماده نیست.
من پیشنهاد می کنم که این خوشه بزرگ Ceph ، اگر دارای آن باشد ، برای سایر خدمات در خارج از کوبنتن نیز استفاده می شود.
همانطور که ممکن است ، فقط اتصال Ceph و Kubernetes به هم برای حفظ ثابت کافی است ohms in Kubernetes.
ادغام Kubernetes و Ceph
مشتری RBD برای تعامل Kubernetes و Ceph استفاده می شود.
متأسفانه ، در محفظه رسمی kube-kontroller-manager موجود نیست.
شما می توانید تصویر کنترلر kube را تغییر دهید.
در عوض ، من از افزونه خارجی برای Ceph استفاده خواهم کرد.
این یک ارائه دهنده rbd جداگانه ایجاد می کند که در آن rbd نصب شده باشد.
خوشه تست Kubernetes من شامل احراز هویت RBAC است.
اگر این کار را نکنید ، می توانید به سادگی یک منبع استقرار ایجاد کرده و بقیه را پرش کنید.
در این مورد ، این کار را نکنید. abudte حذف حساب خدمات Deploytment
بیایید ایجاد منابع برای RBD-تدارک کننده با RBAC در فضای نام کوبه سیستم:
گربه << EOF |. kubectl ایجاد -n kube-system -f -
نوع: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1roulette19659019†metadata: موفق19459005]
نام: rbd-تأمین کننده
قوانین:
- apiGroups: [ "" ]
منابع: [ "مداوم ولوم" ]
افعال: [ "دریافت" ، "فهرست" ، "تماشا" ، "ایجاد" ، "حذف" ]
- apiGroups: [ "" ]
منابع: [ "مداوم ولومکلائم" ]
افعال: [ "get" ، "list" ، "watch" ، "update" ]
- apiGroups: [ "store.k8s.io" ]
منابع: [ "کلاسهای ذخیره سازی" ]
افعال: [ "دریافت" ، "فهرست" ، "تماشا" ]
- apiGroups: [ "" ]
منابع: [ "حوادث" ]
افعال: [ "ایجاد" ، "بروزرسانی" ، "پچ" ]
- apiGroups: [ "" ]
منابع: [ "خدمات" ]
نام منابع: [ "kube-dns" ، "coredns" ]
افعال: [ "فهرست" ، "دریافت" ]
- apiGroups: [ "" ]
منابع: [ "نقاط انتهایی" ]
افعال: [ "دریافت" ، "فهرست" ، "تماشا" ، "ایجاد" ، "به روز رسانی" ، "patch" ]
---
نوع: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1 موفق19659019†metadata: موفق19459005]
نام: rbd-تأمین کننده
موضوعات:
- نوع: ServiceAccount
نام: rbd-تأمین کننده
فضای نام: kube-system
roleRef:
نوع: ClusterRole
نام: rbd-تأمین کننده
apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1beta1 موفق19659019†kind: Role
ابرداده:
نام: rbd-تأمین کننده
قوانین:
- apiGroups: [ "" ]
منابع: [ "اسرار" ]
افعال: [ "دریافت" ]
---
apiVersion: rbac.authorization.k8s.io/v1 موفق19659019†kind: RoleBinding
ابرداده:
نام: rbd-تأمین کننده
roleRef:
apiGroup: rbac.authorization.k8s.io
نوع: نقش
نام: rbd-تأمین کننده
موضوعات:
- نوع: ServiceAccount
نام: rbd-تأمین کننده
فضای نام: kube-system
---
apiVersion: v1
kind: ServiceAccount
ابرداده:
نام: rbd-تأمین کننده
---
apiVersion: extensions / v1beta1
نوع: استقرار
ابرداده:
نام: rbd-تأمین کننده
مشخصات:
ماکت: 1
استراتژی:
نوع: ایجاد مجدد
الگوی:
ابرداده:
برچسب ها:
برنامه: rbd-provider
مشخصات:
ظروف:
- نام: rbd-تأمین کننده
تصویر: "quay.io/external_storage/rbd-provisioner:latest"
env:
- نام: PROVISIONER_NAME
مقدار: ceph.com/rbd
serviceAccount: rbd-provider
EOF
اطمینان حاصل کنید که تصویر quay.io/external_storage/rbd-provisioner:latest دارای نسخه مشابه Ceph است که در خوشه Ceph نصب شده است.
شما می توانید این را در هر دستگاهی که در حال اجرا Docker است ، بررسی کنید:
docker pull quay.io/external_storage/rbd-provisioner:latest
docker history quay.io/external_storage/rbd-provisioner:latest | grep CEPH_VERSION
15 ساعت پیش / bin / sh-c
صبر کنید تا مدیر حجم RBD فعال شود و اجرا شود:
kubectl دریافت کنید pods -l app = rbd-تأمین کننده -n kube سیستم
نام مستقل وضعیت احیاء سن
rbd-Provider -77 d75fdc5b-mpbpn 1 / 1 Running 1 1 [1945905] m [1965905] m [مدیرکلیدی
برای گرفتن کلید سرپرست از خوشه Ceph ، از این دستور استفاده کنید:
sudo ceph --cluster ceph auth get -key client.admin
توجه. تمام دستورات را شروع کنید ، با شروع sudo ، بر روی گره Ceph MON. من همچنین از نسخه Jewel Ceph استفاده می کنم ، و rbd-Provider نیز مبتنی بر Jewel است.
سپس این کلید را به اسرار Kubernetes اضافه کنید:
kubectl ایجاد مخفی عمومی ceph-secret
--type = "kubernetes.io/rbd"
- از -literal = key = 'AQBwruNY / lEmCxAAKS7tzZHSforkUE85htnA / g =='
- namespace = kube-system
من همچنین یک استخر جداگانه Ceph برای Kubernetes و یک کلید جدید مشتری ایجاد می کنم ، زیرا تأیید cephx در این خوشه Ceph فعال است:
sudo ceph --cluster ceph osd pool ایجاد کوبه 1024 1024
sudo ceph - cluster ceph auth get -or-ایجاد klient.kube دوشنبه 'اجازه r' osd 'اجازه rwx pool = kube'
sudo ceph --cluster ceph auth get -key client.kube
یک راز مشتری جدید برای استخر کوببه به اسرار Kubernetes اضافه کنید:
kubectl generic secret ceph-secret-kube
--type = "kubernetes.io/rbd"
- از -literal = key = 'AQC / c + dYsXNUNBAAMTEW1 / WnzXdmDZIBhcw6ug =='
- namespace = kube-system
هنگام حضور هر دو راز ، یک کلاس جدید ذخیره سازی ایجاد کنید.
بیایید آنرا سریع بنامیم:
cat << EOF | kubectl ایجاد -f -
ApiVersion
نام: سریع-rbd
ارائه دهنده: ceph.com/rbdociation19659019-03parameters:roulette19459005]
مانیتور: : 6789 ، : 6789، : 6789
مدیر: مدیر
adminSecretName: ceph-secret
adminSecretNamespace: kube-system
استخر: کوب
userId: kube
userSecretName: ceph-secret-kube
userSecretNamespace: kube-system
imageFormat: "2"
ویژگی ها: لایه بندی
EOF
و آخرین مرحله ایجاد یک پی وی سی ساده برای آزمایش ارائه دهنده حجم RBD است:
cat << EOF | kubectl ایجاد -f -
نوع: persistentVolumeClaim
apiVersion: v1
ابرداده:
نام: myclaim
مشخصات:
دسترسی به حالت ها:
- ReadWriteOnce
منابع:
درخواست ها:
ذخیره سازی: 8Gi
storageClassName: سریع-rbd
EOF
این ، جلد جدید ایجاد شده در خوشه Ceph است:
kubectl دریافت pvc myclaim
نامگذاری وضعیت دسترسی به شرایط عملکرد STORAGECLASS AGE
myclaim Bound pvc -11559e19 -2541 -11e8 -94 dc -525400474652 8 [1945905] Gi RWO
to troublesh توضیحات pvc برای یک PVC خاص.
نتیجه گیری
این یک راهنمایی ساده در مورد چگونگی اتصال Ceph و Kubernetes با هم بود.
RBD Volume Manager برای استفاده آسان است ، اما به هر حال می توانم ایجاد کنم نمودار هل کمی بعد.
با ما باشید!