Späicheren Daten an engem Kubernetes Cluster

Et gi verschidde Weeër fir Datelagerung fir Uwendungen op engem Kubernetes Cluster ze konfiguréieren. E puer vun hinnen si scho veroudert, anerer sinn zimlech viru kuerzem opgetaucht. An dësem Artikel wäerte mir d'Konzept vun dräi Optiounen kucken fir Späichersystemer ze verbannen, inklusiv déi lescht - Verbindung iwwer de Container Storage Interface.

Späicheren Daten an engem Kubernetes Cluster

Method 1: Spezifizéieren PV am Pod Manifest

En typesche Manifest deen e Pod an engem Kubernetes Cluster beschreift:

Späicheren Daten an engem Kubernetes Cluster

D'Deeler vum Manifest, déi beschreiwen wéi ee Volumen verbonnen ass a wou sinn a Faarf markéiert.

Sektioun VolumeMounts gitt d'Montagepunkte (mountPath) un - a wéi engem Verzeichnis am Container de permanente Volumen montéiert gëtt, souwéi den Numm vum Volume.

Sektioun x Lëscht all Bänn déi am Pod benotzt ginn. Gitt den Numm vun all Volumen un, wéi och den Typ (an eisem Fall: awsElasticBlockStore) a Verbindungsparameter. Wéi eng Parameteren am Manifest opgezielt sinn hänkt vum Volumentyp of.

Dee selwechte Volume kann gläichzäiteg a verschidde Podbehälter montéiert ginn. Op dës Manéier kënnen verschidden Uwendungsprozesser op déiselwecht Daten zougräifen.

Dës Verbindungsmethod gouf am Ufank erfonnt, wéi Kubernetes just a senger Kandheet war, an haut ass d'Methode veroudert.

Et gi verschidde Probleemer beim Gebrauch:

  1. all Bänn musse manuell erstallt ginn; Kubernetes kann näischt fir eis erstellen;
  2. Zougangsparameter fir all Volumen sinn eenzegaarteg, a si mussen an de Manifestatiounen vun all Pods spezifizéiert ginn, déi de Volume benotzen;
  3. fir de Späichersystem z'änneren (zum Beispill, vun AWS op Google Cloud réckelen), musst Dir d'Astellungen an d'Art vu montéierte Bänn an all Manifestatiounen änneren.

All dëst ass ganz onbequem, also a Wierklechkeet gëtt dës Method benotzt fir nëmmen e puer speziell Zorte vu Bänn ze verbannen: configMap, geheim, emptyDir, hostPath:

  • configMap a Geheimnis sinn Servicevolumen déi Iech erlaben e Volumen mat Dateien aus Kubernetes Manifestatiounen am Container ze kreéieren.

  • emptyDir ass en temporäre Volume, erstallt nëmme fir d'Liewensdauer vum Pod. Bequem ze benotzen fir ze testen oder temporär Daten ze späicheren. Wann e Pod geläscht gëtt, gëtt den emptyDir Volumen och geläscht an all Daten ginn verluer.

  • hostPath - erlaabt Iech all Verzeechnes op der lokaler Scheif vum Server ze montéieren, op deem d'Applikatioun am Container mat der Applikatioun leeft, inklusiv /etc/kubernetes. Dëst ass eng onsécher Feature, sou datt d'Sécherheetspolitik normalerweis d'Benotzung vu Volumen vun dësem Typ verbitt. Soss kann d'Ugräifer Applikatioun den HTC Kubernetes Verzeechnes a sengem Container montéieren an all d'Clusterzertifikater klauen. Typesch sinn HostPath Volumen nëmme erlaabt vu Systemapplikatiounen ze benotzen déi am kube-System Nummraum lafen.

Späichersystemer mat deenen Kubernetes aus der Këscht funktionnéiert ginn an der Dokumentatioun uginn.

Method 2. Verbindung zu SC / PVC / PV hearths

Eng alternativ Verbindungsmethod ass d'Konzept vun der Storage Klass, PersistentVolumeClaim, PersistentVolume.

Stockage Klass späichert Verbindungsparameter un den Datelagerungssystem.

PersistentVolume Claim beschreift d'Ufuerderunge fir wat d'Applikatioun brauch.
Persistent Volume Geschäfter Zougang Parameteren an Volume Status.

D'Essenz vun der Iddi: am Pod Manifest weisen se e Volume vum Typ PersistentVolumeClaim un an uginn den Numm vun dëser Entitéit am FuerderungsName Parameter.

Späicheren Daten an engem Kubernetes Cluster

De PersistentVolumeClaim Manifest beschreift d'Ufuerderunge fir de Volume vun den Donnéeën déi d'Applikatioun erfuerdert. abegraff:

  • Scheif Gréisst;
  • Zougang Method: ReadWriteOnce oder ReadWriteMany;
  • Link op d'Späicherklass - a wéi engem Datelagerungssystem mir de Volume erstellen wëllen.

D'Späicherklass Manifest späichert den Typ an d'Parameter vun der Verbindung zum Späichersystem. De Cubelet brauch se fir de Volume op sengem Node ze montéieren.

PersistentVolume Manifestatiounen weisen d'Späicherklass an Zougangsparameter fir e spezifescht Volumen (Volumen ID, Wee, etc.).

Wann Dir e PVC erstellt, kuckt Kubernetes op wéi eng Gréisst Volumen a wéi eng Späicherklass erfuerderlech ass, a wielt e gratis PersistentVolume.

Wann esou PVs net verfügbar sinn, kann Kubernetes e spezielle Programm lancéieren - Provisioner (säin Numm gëtt an der Storage Klass uginn). Dëse Programm verbënnt mat dem Späichersystem, erstellt e Volume vun der erfuerderter Gréisst, kritt en Identifizéierer a erstellt e PersistentVolume Manifest am Kubernetes Cluster, deen mam PersistentVolumeClaim assoziéiert ass.

All dës Set vun Abstraktiounen erlaabt Iech Informatioun ze läschen iwwer wéi ee Späichersystem d'Applikatioun schafft vum Applikatiounsmanifestniveau op d'Administratiounsniveau.

All Parameteren fir d'Verbindung mam Datelagerungssystem sinn an der Storage-Klass, fir déi Clusteradministratoren verantwortlech sinn. Alles wat Dir maache musst wann Dir vun AWS op Google Cloud plënnert ass den Numm vun der Storage Klass op PVC an den Uwendungsmanifester z'änneren. Persistenz Volumen fir Datelagerung gëtt automatesch am Cluster erstallt mat dem Provisioner Programm.

Method 3: Container Stockage Interface

All Code dee mat verschiddene Späichersystemer interagéiert ass Deel vum Kubernetes Kär. D'Verëffentlechung vu Bugfixes oder nei Funktionalitéit ass un nei Verëffentlechungen gebonnen; de Code muss fir all ënnerstëtzt Versioune vu Kubernetes geännert ginn. All dëst ass schwéier ze erhalen an nei Funktionalitéit ze addéieren.

Fir de Problem ze léisen, hunn d'Entwéckler vu Cloud Foundry, Kubernetes, Mesos an Docker d'Container Storage Interface (CSI) erstallt - eng einfach vereenegt Interface, déi d'Interaktioun vum Containermanagementsystem an e spezielle Chauffer (CSI Driver) beschreift, deen mat engem spezifesche schafft. Stockage System. All Code fir Interaktioun mat Späichersystemer gouf vum Kubernetes Kär an e separaten System geplënnert.

Container Stockage Interface Dokumentatioun.

Typesch besteet CSI Driver aus zwee Komponenten: Node Plugin a Controller Plugin.

Node Plugin leeft op all Node an ass verantwortlech fir Bänn ze montéieren an Operatiounen op hinnen auszeféieren. De Controller Plugin interagéiert mam Späichersystem: erstellt oder läscht Bänn, gëtt Zougangsrechter, etc.

Fir de Moment bleiwen déi al Chauffeuren am Kubernetes Kernel, awer si sinn net méi recommandéiert ze benotzen a jidderee gëtt ugeroden den CSI Driver speziell fir de System ze installéieren mat deem se schaffen.

D'Innovatioun kann déi erschrecken, déi scho gewinnt sinn Datelagerung duerch d'Storage-Klass opzestellen, awer tatsächlech ass näischt schrecklech geschitt. Fir Programméierer ännert näischt wierklech - si hunn nëmme mam Numm Storage Klass geschafft, a wäerte weider maachen. Fir Administrateuren ass d'Helmdiagramminstallatioun bäigefüügt an d'Struktur vun den Astellunge geännert. Wann virdru d'Astellungen direkt an d'Späicherklass agefouert goufen, musse se elo fir d'éischt am Helmdiagramm gesat ginn, an dann an der Späicherklass. Wann Dir et kuckt, ass näischt Schlechtes geschitt.

Loosst eis e Beispill huelen fir d'Virdeeler ze kucken, déi Dir kritt andeems Dir op d'Verbindung vu Ceph Späichersystemer mam CSI Chauffer wiesselt.

Wann Dir mat Ceph schafft, bitt de CSI Plugin méi Méiglechkeeten fir mat Späichersystemer ze schaffen wéi agebaute Chauffeuren.

  1. Dynamesch Scheif Kreatioun. Typesch RBD Disks ginn nëmmen am RWO Modus benotzt, awer CSI fir Ceph erlaabt datt se am RWX Modus benotzt ginn. Verschidde Pods op verschiddene Wirbelen kënnen déiselwecht RDB Scheif op hiren Wirbelen montéieren a mat hinnen parallel schaffen. Fir fair ze sinn, ass net alles sou hell - dës Disk kann nëmmen als Blockapparat ugeschloss ginn, dat heescht datt Dir d'Applikatioun muss adaptéieren fir mat et am Multiple Access Modus ze schaffen.
  2. Snapshots erstellen. An engem Kubernetes Cluster kënnt Dir e Manifest erstellen mat der Fuerderung fir e Snapshot ze kreéieren. Den CSI Plugin wäert et gesinn an e Snapshot vun der Disk maachen. Baséierend op et, kënnt Dir entweder e Backup oder eng Kopie vu PersistentVolume maachen.
  3. D'Erhéijung vun der Diskgréisst op Lagerung a PersistentVolume an engem Kubernetes Cluster.
  4. Quoten. D'CephFS Treiber, déi a Kubernetes gebaut sinn, ënnerstëtzen keng Quoten, awer frësch CSI Plugins mat de leschten Ceph Nautilus kënnen Quoten op CephFS Partitionen aktivéieren.
  5. Metriken. Den CSI Plugin kann Prometheus mat enger Rei vu Metriken ubidden iwwer wéi eng Bänn verbonne sinn, wéi eng Kommunikatiounen stattfannen, etc.
  6. Topologie bewosst. Erlaabt Iech a Manifestatiounen ze spezifizéieren wéi de Stärekoup geographesch verdeelt ass, a vermeit e Späichersystem zu Amsterdam mat Pods ze verbannen, déi zu London lafen.

Wéi verbënnt de Ceph mat engem Kubernetes Cluster iwwer CSI, kuckt am prakteschen Deel vum Slurm Owend Schoulvortrag. Dir kënnt och abonnéieren op Ceph Video Course, déi de 15. Oktober lancéiert.

Auteur vum Artikel: Sergey Bondarev, praktizéierend Architekt zu Southbridge, zertifizéiert Kubernetes Administrator, ee vun den Entwéckler vu kubespray.

E klenge Post Scriptum net fir Reklammen, mee fir Benefice ...

PS Sergey Bondarev féiert zwee intensiv Coursen: aktualiséiert Kubernetes Base 28-30 September an fortgeschratt Kubernetes Mega 14-16 Oktober.

Späicheren Daten an engem Kubernetes Cluster

Source: will.com

Setzt e Commentaire