Nyimpen data ing kluster Kubernetes

Ana sawetara cara kanggo ngatur panyimpenan data kanggo aplikasi sing mlaku ing kluster Kubernetes. Sawetara wong-wong mau wis outdated, liyane katon bubar. Ing artikel iki, kita bakal ndeleng konsep telung pilihan kanggo nyambungake sistem panyimpenan, kalebu sing paling anyar - nyambungake liwat Antarmuka Panyimpenan Kontainer.

Nyimpen data ing kluster Kubernetes

Cara 1: Nemtokake PV ing manifest pod

Manifes khas sing nggambarake pod ing kluster Kubernetes:

Nyimpen data ing kluster Kubernetes

Bagean manifes sing nggambarake volume sing disambungake lan ing endi sing disorot warna.

bagean volumeMounts nunjukake titik gunung (mountPath) - ing direktori ing njero wadhah volume permanen bakal dipasang, uga jeneng volume.

bagean x dhaptar kabeh volume sing digunakake ing pod. Nemtokake jeneng saben volume, uga jinis (ing kasus kita: awsElasticBlockStore) lan paramèter sambungan. Parameter sing didaftar ing manifest gumantung saka jinis volume.

Volume sing padha bisa dipasang bebarengan ing pirang-pirang wadah pod. Kanthi cara iki, pangolahan aplikasi sing beda bisa ngakses data sing padha.

Cara sambungan iki diciptakake ing wiwitan, nalika Kubernetes isih cilik, lan saiki cara kasebut wis ketinggalan jaman.

Ana sawetara masalah nalika nggunakake:

  1. kabeh volume kudu digawe kanthi manual; Kubernetes ora bisa nggawe apa-apa kanggo kita;
  2. paramèter akses kanggo saben volume unik, lan kudu kasebut ing manifests kabeh pods sing nggunakake volume;
  3. kanggo ngganti sistem panyimpenan (contone, pindhah saka AWS menyang Google Cloud), sampeyan kudu ngganti setelan lan jinis volume sing dipasang ing kabeh manifests.

Kabeh iki ora trep, mula sejatine cara iki digunakake kanggo nyambungake mung sawetara jinis volume khusus: configMap, secret, emptyDir, hostPath:

  • configMap lan rahasia iku volume layanan sing ngijini sampeyan kanggo nggawe volume karo file saka Kubernetes manifests ing wadhah.

  • emptyDir minangka volume sementara, digawe mung kanggo umur pod. Trep digunakake kanggo nguji utawa nyimpen data sementara. Nalika pod dibusak, volume Dir kosong uga dibusak lan kabeh data ilang.

  • hostPath - ngidini sampeyan masang direktori apa wae ing disk lokal server ing ngendi aplikasi kasebut mlaku ing wadhah karo aplikasi kasebut, kalebu /etc/kubernetes. Iki minangka fitur sing ora aman, mula kabijakan keamanan biasane nglarang panggunaan volume jinis iki. Yen ora, aplikasi panyerang bakal bisa masang direktori HTC Kubernetes ing wadhahe lan nyolong kabeh sertifikat kluster. Biasane, volume hostPath mung diijini digunakake dening aplikasi sistem sing mlaku ing ruang jeneng kube-sistem.

Sistem panyimpenan sing dianggo Kubernetes metu saka kothak diwenehi ing dokumentasi.

Cara 2. Sambungan menyang SC/PVC/PV hearths

Cara sambungan alternatif yaiku konsep kelas Storage, PersistentVolumeClaim, PersistentVolume.

Kelas panyimpenan nyimpen paramèter sambungan menyang sistem panyimpenan data.

PersistentVolumeClaim nerangake syarat apa sing dibutuhake aplikasi.
PersistentVolume nyimpen parameter akses lan status volume.

Inti saka ide kasebut: ing manifest pod kasebut nuduhake volume jinis PersistentVolumeClaim lan nuduhake jeneng entitas iki ing parameter claimName.

Nyimpen data ing kluster Kubernetes

Manifes PersistentVolumeClaim nggambarake syarat kanggo volume data sing dibutuhake aplikasi. kalebu:

  • ukuran disk;
  • cara akses: ReadWriteOnce utawa ReadWriteMany;
  • link kanggo Storage kelas - kang sistem panyimpenan data kita arep nggawe volume.

Manifest kelas Storage nyimpen jinis lan paramèter sambungan menyang sistem panyimpenan. Cubelet perlu kanggo masang volume ing simpul.

PersistentVolume manifests nuduhake kelas Storage lan paramèter akses kanggo volume tartamtu (volume ID, path, etc.).

Nalika nggawe PVC, katon Kubernetes apa volume ukuran lan apa kelas Storage dibutuhake, lan milih free PersistentVolume.

Yen PV kasebut ora kasedhiya, Kubernetes bisa miwiti program khusus - Provisioner (jenenge dituduhake ing kelas Storage). Program iki nyambung menyang sistem panyimpenan, nggawe volume saka ukuran sing dibutuhake, nampa pengenal lan nggawe PersistentVolume manifest ing cluster Kubernetes, sing digandhengake karo PersistentVolumeClaim.

Kabeh set abstraksi iki ngidini sampeyan mbusak informasi babagan sistem panyimpenan sing digunakake dening aplikasi saka level manifest aplikasi nganti level administrasi.

Kabeh paramèter kanggo nyambungake menyang sistem panyimpenan data dumunung ing kelas Storage, kang administrator kluster tanggung jawab. Sampeyan mung kudu nindakake nalika pindhah saka AWS menyang Google Cloud yaiku ngganti jeneng kelas Panyimpen dadi PVC ing manifests aplikasi. Volume Ketekunan kanggo panyimpenan data bakal digawe ing kluster kanthi otomatis nggunakake program Provisioner.

Cara 3: Antarmuka Panyimpenan Wadah

Kabeh kode sing sesambungan karo macem-macem sistem panyimpenan minangka bagéan saka inti Kubernetes. Rilis bug fix utawa fungsi anyar disambungake karo rilis anyar; kode kudu diganti kanggo kabeh versi Kubernetes sing didhukung. Kabeh iki angel kanggo njaga lan nambah fungsi anyar.

Kanggo ngatasi masalah kasebut, pangembang saka Cloud Foundry, Kubernetes, Mesos lan Docker nggawe Container Storage Interface (CSI) - antarmuka terpadu prasaja sing njlèntrèhaké interaksi sistem manajemen wadhah lan driver khusus (CSI Driver) sing bisa digunakake kanthi spesifik. sistem panyimpenan. Kabeh kode kanggo interaksi karo sistem panyimpenan dipindhah saka inti Kubernetes menyang sistem kapisah.

Dokumentasi Antarmuka Panyimpenan Wadah.

Biasane, CSI Driver kasusun saka rong komponen: Node Plugin lan Controller plugin.

Plugin Node mlaku ing saben simpul lan tanggung jawab kanggo volume sing dipasang lan nindakake operasi kasebut. Plugin Controller sesambungan karo sistem panyimpenan: nggawe utawa mbusak volume, menehi hak akses, lsp.

Saiki, driver lawas tetep ana ing kernel Kubernetes, nanging ora dianjurake maneh kanggo digunakake lan kabeh wong disaranake nginstal Driver CSI khusus kanggo sistem sing bakal digunakake.

Inovasi kasebut bisa medeni wong-wong sing wis biasa nyetel panyimpenan data liwat kelas Storage, nanging nyatane ora ana kedadeyan sing ala. Kanggo programer, ora ana owah-owahan tenan - padha mung makarya karo jeneng Storage kelas, lan bakal terus. Kanggo pangurus, instalasi bagan helm wis ditambahake lan struktur setelan wis diganti. Yen sadurunge setelan kasebut langsung dilebokake ing kelas Panyimpenan, saiki kudu disetel dhisik ing grafik setir, banjur ing kelas Panyimpenan. Yen dideleng, ora ana kedadeyan sing ala.

Ayo dadi conto kanggo ndeleng keuntungan sing bisa sampeyan entuk kanthi ngalih menyang nyambungake sistem panyimpenan Ceph nggunakake driver CSI.

Nalika nggarap Ceph, plugin CSI nyedhiyakake luwih akeh pilihan kanggo nggarap sistem panyimpenan tinimbang driver sing dibangun.

  1. Nggawe disk dinamis. Biasane RBD disk digunakake mung ing mode RWO, nanging CSI kanggo Ceph ngidini kanggo digunakake ing mode RWX. Sawetara pods ing macem-macem simpul bisa masang disk RDB sing padha ing simpul lan bisa digunakake bebarengan. Supaya adil, ora kabeh padhang - disk iki mung bisa disambungake minangka piranti pamblokiran, sing tegese sampeyan kudu ngganti aplikasi kasebut supaya bisa digunakake ing macem-macem mode akses.
  2. Nggawe snapshots. Ing kluster Kubernetes, sampeyan bisa nggawe manifes kanthi syarat nggawe snapshot. Plugin CSI bakal ndeleng lan njupuk gambar saka disk. Adhedhasar, sampeyan bisa nggawe cadangan utawa salinan PersistentVolume.
  3. Nambah ukuran disk ing panyimpenan lan PersistentVolume ing kluster Kubernetes.
  4. kuota. Pembalap CephFS sing dibangun ing Kubernetes ora ndhukung kuota, nanging plugin CSI seger kanthi Ceph Nautilus paling anyar bisa ngaktifake kuota ing partisi CephFS.
  5. Metrik. Plugin CSI bisa nyedhiyakake Prometheus kanthi macem-macem metrik babagan volume sing disambungake, komunikasi apa sing ditindakake, lsp.
  6. Topologi sadar. Ngijini sampeyan nemtokake ing manifests carane kluster disebarake sacara geografis, lan supaya ora nyambungake sistem panyimpenan dumunung ing Amsterdam kanggo pods mlaku ing London.

Carane nyambungake Ceph menyang cluster Kubernetes liwat CSI, ndeleng ing bagean praktis saka kuliah sore Slurm sekolah. Sampeyan uga bisa langganan Kursus video Ceph, sing bakal diluncurake ing 15 Oktober.

Penulis artikel: Sergey Bondarev, arsitek praktik ing Southbridge, Administrator Kubernetes Certified, salah sawijining pangembang kubespray.

Post Scriptum sethitik ora kanggo iklan, nanging kanggo entuk manfaat ...

PS Sergey Bondarev mimpin rong kursus intensif: dianyari Pangkalan Kubernetes 28-30 September lan maju Kubernetes Mega 14–16 Oktober.

Nyimpen data ing kluster Kubernetes

Source: www.habr.com

Add a comment