Kubernetes క్లస్టర్లో నడుస్తున్న అప్లికేషన్ల కోసం డేటా నిల్వను కాన్ఫిగర్ చేయడానికి అనేక మార్గాలు ఉన్నాయి. వాటిలో కొన్ని ఇప్పటికే పాతవి, మరికొన్ని ఇటీవల కనిపించాయి. ఈ కథనంలో, మేము నిల్వ సిస్టమ్లను కనెక్ట్ చేయడానికి మూడు ఎంపికల భావనను పరిశీలిస్తాము, వీటిలో ఇటీవలి ఒకటి - కంటైనర్ స్టోరేజ్ ఇంటర్ఫేస్ ద్వారా కనెక్ట్ చేయడం.
విధానం 1: పాడ్ మానిఫెస్ట్లో PVని పేర్కొనండి
కుబెర్నెటెస్ క్లస్టర్లోని పాడ్ను వివరించే సాధారణ మానిఫెస్ట్:
ఏ వాల్యూమ్ కనెక్ట్ చేయబడిందో మరియు రంగులో ఎక్కడ హైలైట్ చేయబడిందో వివరించే మానిఫెస్ట్ భాగాలు.
విభాగం వాల్యూమ్మౌంట్లు మౌంట్ పాయింట్లను సూచించండి (మౌంట్పాత్) - కంటైనర్ లోపల ఉన్న డైరెక్టరీలో శాశ్వత వాల్యూమ్ మౌంట్ చేయబడుతుంది, అలాగే వాల్యూమ్ పేరు.
విభాగం x పాడ్లో ఉపయోగించే అన్ని వాల్యూమ్లను జాబితా చేస్తుంది. ప్రతి వాల్యూమ్ పేరు, అలాగే రకం (మా విషయంలో: awsElasticBlockStore) మరియు కనెక్షన్ పారామితులను పేర్కొనండి. మానిఫెస్ట్లో ఏ పారామితులు జాబితా చేయబడ్డాయి అనేది వాల్యూమ్ రకంపై ఆధారపడి ఉంటుంది.
ఒకే వాల్యూమ్ను బహుళ పాడ్ కంటైనర్లలో ఏకకాలంలో అమర్చవచ్చు. ఈ విధంగా, వివిధ అప్లికేషన్ ప్రాసెస్లు ఒకే డేటాను యాక్సెస్ చేయగలవు.
ఈ కనెక్షన్ పద్ధతి ప్రారంభంలోనే కనుగొనబడింది, కుబెర్నెటెస్ దాని ప్రారంభ దశలో ఉన్నప్పుడు, మరియు నేడు ఈ పద్ధతి పాతది.
దీన్ని ఉపయోగించినప్పుడు అనేక సమస్యలు ఉన్నాయి:
- అన్ని వాల్యూమ్లు మాన్యువల్గా సృష్టించబడాలి; కుబెర్నెట్స్ మన కోసం ఏమీ సృష్టించలేరు;
- ప్రతి వాల్యూమ్కు యాక్సెస్ పారామితులు ప్రత్యేకంగా ఉంటాయి మరియు అవి వాల్యూమ్ను ఉపయోగించే అన్ని పాడ్ల మానిఫెస్ట్లలో తప్పనిసరిగా పేర్కొనబడాలి;
- నిల్వ సిస్టమ్ను మార్చడానికి (ఉదాహరణకు, AWS నుండి Google క్లౌడ్కి తరలించండి), మీరు అన్ని మానిఫెస్ట్లలోని మౌంట్ చేయబడిన వాల్యూమ్ల సెట్టింగ్లు మరియు రకాన్ని మార్చాలి.
ఇవన్నీ చాలా అసౌకర్యంగా ఉన్నాయి, కాబట్టి వాస్తవానికి ఈ పద్ధతి కొన్ని ప్రత్యేక రకాల వాల్యూమ్లను మాత్రమే కనెక్ట్ చేయడానికి ఉపయోగించబడుతుంది: configMap, secret, emptyDir, hostPath:
-
configMap మరియు సీక్రెట్ అనేవి సర్వీస్ వాల్యూమ్లు, ఇవి కంటైనర్లోని కుబెర్నెట్స్ మానిఫెస్ట్ల నుండి ఫైల్లతో వాల్యూమ్ను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తాయి.
-
ఖాళీడిర్ అనేది తాత్కాలిక వాల్యూమ్, ఇది పాడ్ జీవితకాలం కోసం మాత్రమే సృష్టించబడుతుంది. తాత్కాలిక డేటాను పరీక్షించడానికి లేదా నిల్వ చేయడానికి ఉపయోగించడానికి అనుకూలమైనది. పాడ్ తొలగించబడినప్పుడు, ఖాళీ డిర్ వాల్యూమ్ కూడా తొలగించబడుతుంది మరియు మొత్తం డేటా పోతుంది.
-
హోస్ట్పాత్ - /etc/kubernetesతో సహా అప్లికేషన్తో కంటైనర్లో అప్లికేషన్ రన్ అవుతున్న సర్వర్ యొక్క స్థానిక డిస్క్లో ఏదైనా డైరెక్టరీని మౌంట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఇది అసురక్షిత లక్షణం, కాబట్టి భద్రతా విధానాలు సాధారణంగా ఈ రకమైన వాల్యూమ్లను ఉపయోగించడాన్ని నిషేధిస్తాయి. లేకపోతే, దాడి చేసేవారి అప్లికేషన్ HTC కుబెర్నెట్స్ డైరెక్టరీని దాని కంటైనర్లో మౌంట్ చేయగలదు మరియు అన్ని క్లస్టర్ సర్టిఫికేట్లను దొంగిలించగలదు. సాధారణంగా, హోస్ట్పాత్ వాల్యూమ్లు kube-సిస్టమ్ నేమ్స్పేస్లో అమలు చేసే సిస్టమ్ అప్లికేషన్ల ద్వారా మాత్రమే ఉపయోగించడానికి అనుమతించబడతాయి.
విధానం 2. SC/PVC/PV హార్త్లకు కనెక్షన్
ప్రత్యామ్నాయ కనెక్షన్ పద్ధతి స్టోరేజ్ క్లాస్, PersistentVolumeClaim, PersistentVolume భావన.
నిల్వ తరగతి డేటా నిల్వ సిస్టమ్కు కనెక్షన్ పారామితులను నిల్వ చేస్తుంది.
పెర్సిస్టెంట్ వాల్యూమ్ క్లెయిమ్ అనువర్తనానికి అవసరమైన అవసరాలను వివరిస్తుంది.
పెర్సిస్టెంట్ వాల్యూమ్ యాక్సెస్ పారామితులు మరియు వాల్యూమ్ స్థితిని నిల్వ చేస్తుంది.
ఆలోచన యొక్క సారాంశం: పాడ్ మానిఫెస్ట్లో అవి PersistentVolumeClaim రకం వాల్యూమ్ను సూచిస్తాయి మరియు క్లెయిమ్ పేరు పరామితిలో ఈ ఎంటిటీ పేరును సూచిస్తాయి.
PersistentVolumeClaim మానిఫెస్ట్ అనువర్తనానికి అవసరమైన డేటా వాల్యూమ్ కోసం ఆవశ్యకాలను వివరిస్తుంది. సహా:
- డిస్క్ పరిమాణం;
- యాక్సెస్ పద్ధతి: ReadWriteOnce లేదా ReadWriteMany;
- స్టోరేజ్ క్లాస్కి లింక్ - ఏ డేటా స్టోరేజ్ సిస్టమ్లో మనం వాల్యూమ్ను సృష్టించాలనుకుంటున్నాము.
స్టోరేజ్ క్లాస్ మానిఫెస్ట్ స్టోరేజ్ సిస్టమ్కు కనెక్షన్ రకం మరియు పారామితులను నిల్వ చేస్తుంది. వాల్యూమ్ను దాని నోడ్లో మౌంట్ చేయడానికి క్యూబ్లెట్కి అవి అవసరం.
PersistentVolume మానిఫెస్ట్లు నిర్దిష్ట వాల్యూమ్ (వాల్యూమ్ ID, మార్గం మొదలైనవి) కోసం స్టోరేజ్ క్లాస్ మరియు యాక్సెస్ పారామితులను సూచిస్తాయి.
PVCని క్రియేట్ చేస్తున్నప్పుడు, కుబెర్నెటెస్ ఏ పరిమాణంలో వాల్యూమ్ మరియు ఏ స్టోరేజ్ క్లాస్ అవసరమో చూస్తుంది మరియు ఉచిత PersistentVolumeని ఎంచుకుంటుంది.
అటువంటి PVలు అందుబాటులో లేకుంటే, కుబెర్నెట్స్ ప్రత్యేక ప్రోగ్రామ్ను ప్రారంభించవచ్చు - ప్రొవిజనర్ (దాని పేరు నిల్వ తరగతిలో సూచించబడుతుంది). ఈ ప్రోగ్రామ్ స్టోరేజ్ సిస్టమ్కి కనెక్ట్ చేస్తుంది, అవసరమైన పరిమాణంలో వాల్యూమ్ను సృష్టిస్తుంది, ఐడెంటిఫైయర్ను అందుకుంటుంది మరియు PersistentVolumeClaimతో అనుబంధించబడిన Kubernetes క్లస్టర్లో PersistentVolume మానిఫెస్ట్ను సృష్టిస్తుంది.
అప్లికేషన్ మానిఫెస్ట్ స్థాయి నుండి అడ్మినిస్ట్రేషన్ స్థాయి వరకు అప్లికేషన్ ఏ స్టోరేజ్ సిస్టమ్తో పనిచేస్తుందనే దాని గురించిన సమాచారాన్ని తీసివేయడానికి ఈ సారాంశాల సమితి మిమ్మల్ని అనుమతిస్తుంది.
డేటా నిల్వ సిస్టమ్కు కనెక్ట్ చేయడానికి అన్ని పారామీటర్లు స్టోరేజ్ క్లాస్లో ఉన్నాయి, దీనికి క్లస్టర్ నిర్వాహకులు బాధ్యత వహిస్తారు. AWS నుండి Google క్లౌడ్కి మారినప్పుడు మీరు చేయాల్సిందల్లా అప్లికేషన్ మానిఫెస్ట్లలోని స్టోరేజ్ క్లాస్ పేరును PVCకి మార్చడం. ప్రొవిజనర్ ప్రోగ్రామ్ను ఉపయోగించి క్లస్టర్లో డేటా నిల్వ కోసం నిలకడ వాల్యూమ్ స్వయంచాలకంగా సృష్టించబడుతుంది.
విధానం 3: కంటైనర్ నిల్వ ఇంటర్ఫేస్
వివిధ స్టోరేజ్ సిస్టమ్లతో పరస్పర చర్య చేసే అన్ని కోడ్లు కుబెర్నెట్స్ కోర్లో భాగం. బగ్ పరిష్కారాల విడుదల లేదా కొత్త కార్యాచరణ కొత్త విడుదలలతో ముడిపడి ఉంటుంది; కుబెర్నెటెస్ యొక్క మద్దతు ఉన్న అన్ని వెర్షన్ల కోసం కోడ్ తప్పనిసరిగా మార్చబడాలి. ఇవన్నీ నిర్వహించడం మరియు కొత్త కార్యాచరణను జోడించడం కష్టం.
సమస్యను పరిష్కరించడానికి, క్లౌడ్ ఫౌండ్రీ, కుబెర్నెటెస్, మెసోస్ మరియు డాకర్ డెవలపర్లు కంటైనర్ స్టోరేజ్ ఇంటర్ఫేస్ (CSI)ని సృష్టించారు - ఇది కంటైనర్ మేనేజ్మెంట్ సిస్టమ్ యొక్క పరస్పర చర్యను వివరించే ఒక సాధారణ ఏకీకృత ఇంటర్ఫేస్ మరియు ప్రత్యేక డ్రైవర్ (CSI డ్రైవర్)తో పని చేస్తుంది. నిల్వ వ్యవస్థ. నిల్వ సిస్టమ్లతో పరస్పర చర్య కోసం అన్ని కోడ్లు కుబెర్నెట్స్ కోర్ నుండి ప్రత్యేక సిస్టమ్కు తరలించబడ్డాయి.
సాధారణంగా, CSI డ్రైవర్ రెండు భాగాలను కలిగి ఉంటుంది: నోడ్ ప్లగిన్ మరియు కంట్రోలర్ ప్లగ్ఇన్.
నోడ్ ప్లగిన్ ప్రతి నోడ్పై నడుస్తుంది మరియు వాల్యూమ్లను మౌంట్ చేయడానికి మరియు వాటిపై కార్యకలాపాలను నిర్వహించడానికి బాధ్యత వహిస్తుంది. కంట్రోలర్ ప్లగ్ఇన్ నిల్వ సిస్టమ్తో పరస్పర చర్య చేస్తుంది: వాల్యూమ్లను సృష్టిస్తుంది లేదా తొలగిస్తుంది, యాక్సెస్ హక్కులను కేటాయించడం మొదలైనవి.
ప్రస్తుతానికి, పాత డ్రైవర్లు Kubernetes కెర్నల్లోనే ఉన్నాయి, కానీ అవి ఇకపై ఉపయోగించబడవు మరియు ప్రతి ఒక్కరూ తాము పనిచేసే సిస్టమ్ కోసం ప్రత్యేకంగా CSI డ్రైవర్ను ఇన్స్టాల్ చేసుకోవాలని సూచించారు.
ఇన్నోవేషన్ ఇప్పటికే స్టోరేజ్ క్లాస్ ద్వారా డేటా స్టోరేజ్ని సెటప్ చేయడానికి అలవాటుపడిన వారిని భయపెట్టవచ్చు, కానీ వాస్తవానికి భయంకరమైనది ఏమీ జరగలేదు. ప్రోగ్రామర్ల కోసం, నిజంగా ఏమీ మారదు - వారు స్టోరేజ్ క్లాస్ పేరుతో మాత్రమే పని చేసారు మరియు అలానే కొనసాగుతారు. నిర్వాహకుల కోసం, హెల్మ్ చార్ట్ ఇన్స్టాలేషన్ జోడించబడింది మరియు సెట్టింగ్ల నిర్మాణం మార్చబడింది. ఇంతకు ముందు సెట్టింగులు నేరుగా స్టోరేజ్ క్లాస్లోకి ఎంటర్ చేయబడితే, ఇప్పుడు వాటిని మొదట హెల్మ్ చార్ట్లో సెట్ చేయాలి, ఆపై స్టోరేజ్ క్లాస్లో సెట్ చేయాలి. దాన్ని పరిశీలిస్తే ఏమీ జరగలేదు.
CSI డ్రైవర్ని ఉపయోగించి Ceph నిల్వ సిస్టమ్లను కనెక్ట్ చేయడానికి మారడం ద్వారా మీరు పొందగల ప్రయోజనాలను చూడటానికి ఒక ఉదాహరణను తీసుకుందాం.
Cephతో పని చేస్తున్నప్పుడు, CSI ప్లగ్ఇన్ అంతర్నిర్మిత డ్రైవర్ల కంటే నిల్వ వ్యవస్థలతో పని చేయడానికి మరిన్ని ఎంపికలను అందిస్తుంది.
- డైనమిక్ డిస్క్ సృష్టి. సాధారణంగా RBD డిస్క్లు RWO మోడ్లో మాత్రమే ఉపయోగించబడతాయి, అయితే Ceph కోసం CSI వాటిని RWX మోడ్లో ఉపయోగించడానికి అనుమతిస్తుంది. వివిధ నోడ్లలోని అనేక పాడ్లు ఒకే RDB డిస్క్ను వాటి నోడ్లపై మౌంట్ చేయగలవు మరియు వాటితో సమాంతరంగా పని చేస్తాయి. నిజం చెప్పాలంటే, ప్రతిదీ చాలా ప్రకాశవంతంగా లేదు - ఈ డిస్క్ బ్లాక్ పరికరంగా మాత్రమే కనెక్ట్ చేయబడుతుంది, అంటే మీరు దానితో బహుళ యాక్సెస్ మోడ్లో పని చేయడానికి అప్లికేషన్ను స్వీకరించాలి.
- స్నాప్షాట్లను సృష్టిస్తోంది. కుబెర్నెటెస్ క్లస్టర్లో, మీరు స్నాప్షాట్ను సృష్టించాల్సిన అవసరంతో మానిఫెస్ట్ను సృష్టించవచ్చు. CSI ప్లగ్ఇన్ దానిని చూస్తుంది మరియు డిస్క్ నుండి స్నాప్షాట్ తీసుకుంటుంది. దాని ఆధారంగా, మీరు PersistentVolume యొక్క బ్యాకప్ లేదా కాపీని తయారు చేయవచ్చు.
- డిస్క్ పరిమాణాన్ని పెంచుతోంది కుబెర్నెటెస్ క్లస్టర్లో నిల్వ మరియు పెర్సిస్టెంట్ వాల్యూమ్పై.
- కోటాలు. కుబెర్నెట్స్లో నిర్మించబడిన CephFS డ్రైవర్లు కోటాలకు మద్దతు ఇవ్వవు, అయితే తాజా Ceph Nautilusతో తాజా CSI ప్లగిన్లు CephFS విభజనలపై కోటాలను ఎనేబుల్ చేయగలవు.
- కొలమానాలు. CSI ప్లగ్ఇన్ ప్రోమేతియస్కు ఏ వాల్యూమ్లు కనెక్ట్ చేయబడి ఉన్నాయి, ఏ కమ్యూనికేషన్లు జరుగుతున్నాయి మొదలైన వాటి గురించి వివిధ కొలమానాలను అందించగలదు.
- టోపాలజీ తెలుసు. క్లస్టర్ భౌగోళికంగా ఎలా పంపిణీ చేయబడిందో మానిఫెస్ట్లలో పేర్కొనడానికి మరియు ఆమ్స్టర్డామ్లో ఉన్న స్టోరేజ్ సిస్టమ్ను లండన్లో నడుస్తున్న పాడ్లకు కనెక్ట్ చేయకుండా మిమ్మల్ని అనుమతిస్తుంది.
CSI ద్వారా Cephని Kubernetes క్లస్టర్కి ఎలా కనెక్ట్ చేయాలి, చూడండి
వ్యాసం యొక్క రచయిత: సెర్గీ బొండారేవ్, సౌత్బ్రిడ్జ్లో ఆర్కిటెక్ట్ను ప్రాక్టీస్ చేస్తున్నాడు, సర్టిఫైడ్ కుబెర్నెట్స్ అడ్మినిస్ట్రేటర్, kubespray డెవలపర్లలో ఒకరు.
ఒక చిన్న పోస్ట్ స్క్రిప్ట్ ప్రకటనల కోసం కాదు, ప్రయోజనం కోసం...
PS సెర్గీ బొండారేవ్ రెండు ఇంటెన్సివ్ కోర్సులకు నాయకత్వం వహిస్తాడు: నవీకరించబడింది
మూలం: www.habr.com