Benteng - penyimpanan data swalayan untuk Kubernetes

Benteng - penyimpanan data swalayan untuk Kubernetes

Pada tanggal 29 Januari, komite teknis CNCF (Cloud Native Computing Foundation), organisasi di balik Kubernetes, Prometheus, dan produk Open Source lainnya dari dunia container dan cloud native, diumumkan tentang penerimaan proyek Benteng ke dalam barisan mereka. Kesempatan bagus untuk mengenal “orkestra penyimpanan terdistribusi di Kubernetes” ini.

Benteng macam apa?

Benteng adalah perangkat lunak yang ditulis dalam Go (didistribusikan oleh di bawah Lisensi Apache 2.0 gratis), dirancang untuk menyediakan gudang data dengan fungsi otomatis yang membuatnya pengelolaan diri, penskalaan diri, dan penyembuhan diri. Untuk melakukan hal ini, Rook mengotomatiskan (untuk penyimpanan data yang digunakan di lingkungan Kubernetes): penerapan, bootstrap, konfigurasi, penyediaan, penskalaan, pembaruan, migrasi, pemulihan bencana, pemantauan, dan manajemen sumber daya.

Proyek ini sedang dalam tahap alfa dan berspesialisasi dalam mengatur sistem penyimpanan terdistribusi Ceph di cluster Kubernetes. Penulis juga mengumumkan rencana untuk mendukung sistem penyimpanan lain, namun hal ini tidak akan terjadi pada rilis berikutnya.

Komponen dan perangkat teknis

Pekerjaan Benteng di dalam Kubernetes didasarkan pada operator khusus (kami menulis lebih banyak tentang Operator Kubernetes di Artikel ini), yang mengotomatiskan konfigurasi penyimpanan dan mengimplementasikan pemantauannya.

Dengan demikian, Operator benteng tampaknya merupakan wadah yang berisi semua yang diperlukan untuk penerapan dan pemeliharaan repositori selanjutnya. Tanggung jawab operator meliputi:

  • membuat daemon penyimpanan DaemonSet untuk Ceph (ceph-osd) dengan cluster RADOS sederhana;
  • membuat pod untuk pemantauan Ceph (dengan ceph-mon, memeriksa status cluster; untuk kuorum, dalam banyak kasus, tiga salinan dikerahkan, dan jika salah satu dari mereka gagal, yang baru akan muncul);
  • pengelolaan CRD (Definisi Sumber Daya Kustom) untuk dirinya sendiri gugus, kolam penyimpanan, penyimpanan objek (kumpulan sumber daya dan layanan untuk melayani permintaan HTTP yang melakukan PUT/GET pada objek - kompatibel dengan S3 dan Swift API)Dan sistem file;
  • menginisialisasi pod untuk meluncurkan semua layanan yang diperlukan;
  • penciptaan agen Benteng.

Agen Benteng diwakili oleh pod terpisah yang di-deploy pada setiap node Kubernetes. Tujuan dari agen adalah konfigurasi plugin Volume Fleksibel, yang menyediakan dukungan untuk volume penyimpanan di Kubernetes. Agen mengimplementasikan pengoperasian penyimpanan: menghubungkan perangkat penyimpanan jaringan, memasang volume, memformat sistem file, dll.

Benteng - penyimpanan data swalayan untuk Kubernetes
Tempat dan peran komponen Benteng dalam keseluruhan skema cluster Kubernetes

Benteng menawarkan tiga jenis penyimpanan:

  1. memblokir (Memblokir, StorageClass) — memasang penyimpanan ke satu perapian;
  2. obyek (obyek, ObjectStore) - tersedia di dalam dan di luar cluster Kubernetes (melalui S3 API);
  3. sistem file bersama (Sistem File Bersama, Filesystem) adalah sistem file yang dapat dipasang untuk membaca dan menulis dari beberapa pod.

Bagian dalam Benteng meliputi:

  • mons — pod untuk pemantauan Ceph (dengan ceph-mon yang telah disebutkan);
  • OSD - pod dengan daemon ceph-osd (Daemon Penyimpanan Objek);
  • MGR - pod dengan setan ceph-mgr (Ceph Manager), yang menyediakan kemampuan pemantauan tambahan dan antarmuka untuk sistem eksternal (pemantauan/kontrol);
  • RGW (opsional) - pod dengan penyimpanan objek;
  • MDS (opsional) - pod dengan sistem file bersama.

Benteng - penyimpanan data swalayan untuk Kubernetes

Semua daemon Benteng (Mons, OSD, MGR, RGW, MDS) dikompilasi menjadi satu biner (rook) berjalan dalam sebuah wadah.

Untuk pengenalan singkat tentang proyek Benteng, penjelasan singkat ini (12 slide) mungkin juga berguna. presentasi dari Bassam Tabbara (CTO di Quantum Corp).

Mengoperasikan Benteng

Operator Benteng sepenuhnya mendukung Kubernetes versi 1.6 dan lebih tinggi (dan, sebagian, rilis K8 lama - 1.5.2). Miliknya instalasi в skenario paling sederhana Ini terlihat seperti ini:

cd cluster/examples/kubernetes
kubectl create -f rook-operator.yaml
kubectl create -f rook-cluster.yaml

Selain itu, operator Benteng sudah siap Bagan helm, berkat itu instalasi dapat dilakukan seperti ini:

helm repo add rook-alpha https://charts.rook.io/alpha
helm install rook-alpha/rook

Tersedia dalam jumlah kecil opsi pengaturan (misalnya, Anda dapat menonaktifkan dukungan RBAC, jika fitur ini tidak digunakan di cluster Anda), yang diteruskan ke helm install melalui parameter --set key=value[,key=value] (atau simpan dalam file YAML terpisah dan kirimkan melalui -f values.yaml).

Setelah menginstal operator Rook dan meluncurkan pod dengan agennya, yang tersisa hanyalah membuat cluster Rook itu sendiri, konfigurasi paling sederhana terlihat seperti ini (rook-cluster.yaml):

apiVersion: v1
kind: Namespace
metadata:
  name: rook
---
apiVersion: rook.io/v1alpha1
kind: Cluster
metadata:
  name: rook
  namespace: rook
spec:
  dataDirHostPath: /var/lib/rook
  storage:
    useAllNodes: true
    useAllDevices: false
    storeConfig:
      storeType: bluestore
      databaseSizeMB: 1024
      journalSizeMB: 1024

Catatan: perhatian khusus harus diberikan pada atribut dataDirHostPath, nilai yang benar diperlukan untuk menyimpan cluster setelah reboot. Untuk kasus di mana direktori ini digunakan sebagai lokasi penyimpanan permanen untuk data Benteng di host Kubernetes, penulis merekomendasikan untuk memiliki setidaknya 5 GB ruang disk kosong di direktori ini.

Yang tersisa hanyalah membuat cluster dari konfigurasi dan memastikan bahwa pod dibuat di cluster (di namespace rook):

kubectl create -f rook-cluster.yaml
kubectl -n rook get pod
NAME                              READY     STATUS    RESTARTS   AGE
rook-api-1511082791-7qs0m         1/1       Running   0          5m
rook-ceph-mgr0-1279756402-wc4vt   1/1       Running   0          5m
rook-ceph-mon0-jflt5              1/1       Running   0          6m
rook-ceph-mon1-wkc8p              1/1       Running   0          6m
rook-ceph-mon2-p31dj              1/1       Running   0          6m
rook-ceph-osd-0h6nb               1/1       Running   0          5m

Tingkatkan Cluster benteng (hingga versi baru) adalah prosedur yang pada tahap ini memerlukan pembaruan berurutan dari semua komponennya dalam urutan tertentu, dan Anda dapat memulainya hanya setelah Anda memastikan bahwa instalasi Benteng saat ini dalam keadaan benar-benar “sehat” negara. Petunjuk langkah demi langkah terperinci menggunakan contoh memperbarui Benteng versi 0.5.0 ke 0.5.1 dapat ditemukan di dokumentasi proyek.

November lalu di blog Benteng diterbitkan perbandingan produktifitas dengan EBS. Hasil-hasilnya patut untuk diperhatikan, dan secara singkat adalah sebagai berikut:

Benteng - penyimpanan data swalayan untuk Kubernetes
Benteng - penyimpanan data swalayan untuk Kubernetes

Prospek

Status Benteng saat ini adalah alfa, dan rilis besar terbaru hingga saat ini adalah alfa versi 0.6, dirilis pada November 2017 (koreksi saat ini - v0.6.2 — keluar pada 14 Desember). Sudah pada paruh pertama tahun 2018, rilis versi yang lebih matang diharapkan: beta dan stabil (secara resmi siap digunakan dalam produksi).

Menurut peta jalan proyek, pengembang memiliki visi terperinci untuk pengembangan Benteng setidaknya dalam dua rilis berikutnya: 0.7 (kesiapannya ada di pelacak GitHub diperkirakan sebagai 60%) dan 0.8. Perubahan yang diharapkan termasuk transfer dukungan untuk Ceph Block dan Ceph Object ke status versi beta, penyediaan volume dinamis untuk CephFS, sistem logging tingkat lanjut, pembaruan cluster otomatis, dan dukungan snapshot untuk volume.

Membawa Benteng ke dalam Nomor proyek CNCF (sejauh ini pada tahap paling awal - "tingkat awal" - setara dengan linkerd и intiDNS) adalah semacam jaminan meningkatnya minat terhadap produk. Bagaimana ia akan mendapatkan pijakan di dunia aplikasi cloud akan menjadi lebih jelas setelah versi stabil dirilis, yang tentunya akan membawa penguji dan pengguna baru ke Rook.

PS

Baca juga di blog kami:

Sumber: www.habr.com

Tambah komentar