☸️ استفاده از یک خوشه Ceph موجود برای ذخیره سازی مداوم در Kubernetes – Squad Security Security Squad

من چند هفته پیش در مورد ذخیره سازی 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 برای استفاده آسان است ، اما به هر حال می توانم ایجاد کنم نمودار هل کمی بعد.

با ما باشید!