హలో, నా పేరు డిమిత్రి క్రాస్నోవ్. ఐదు సంవత్సరాలకు పైగా నేను కుబెర్నెటెస్ క్లస్టర్లను నిర్వహిస్తున్నాను మరియు సంక్లిష్టమైన మైక్రోసర్వీస్ ఆర్కిటెక్చర్లను నిర్మిస్తున్నాను. ఈ సంవత్సరం ప్రారంభంలో, మేము కంటైనర్ ఆధారంగా కుబెర్నెట్స్ క్లస్టర్ల నిర్వహణ కోసం ఒక సేవను ప్రారంభించాము. ఈ అవకాశాన్ని సద్వినియోగం చేసుకుని, కుబెర్నెటీస్ అంటే ఏమిటి మరియు విక్రేతతో ఏకీకరణ ఓపెన్ సోర్స్ నుండి ఎలా విభిన్నంగా ఉంటుందో నేను మీకు చెప్తాను.
ప్రారంభించడానికి, ఏమిటి
పెద్ద సంఖ్యలో కంటైనర్లను నిర్వహించండి
ఇవి ఎలాంటి కంటైనర్లు అని ఇప్పుడు తెలుసుకుందాం. ఇది మొత్తం పర్యావరణంతో కూడిన అప్లికేషన్ - ప్రధానంగా ప్రోగ్రామ్ ఆధారపడి ఉండే లైబ్రరీలు. ఇవన్నీ ఆర్కైవ్లలో ప్యాక్ చేయబడ్డాయి మరియు ఆపరేటింగ్ సిస్టమ్, పరీక్షించబడిన మరియు మరిన్ని వాటితో సంబంధం లేకుండా అమలు చేయగల చిత్రం రూపంలో ప్రదర్శించబడతాయి. కానీ ఒక సమస్య ఉంది - పెద్ద సంఖ్యలో హోస్ట్లలో కంటైనర్లను నిర్వహించడం చాలా కష్టం. అందుకే కుబెర్నెటీస్ సృష్టించబడింది.
ఒక కంటైనర్ చిత్రం ఒక అప్లికేషన్ మరియు దాని డిపెండెన్సీలను సూచిస్తుంది. అప్లికేషన్, దాని డిపెండెన్సీలు మరియు OS ఫైల్ సిస్టమ్ ఇమేజ్ లేయర్లు అని పిలవబడే చిత్రం యొక్క వివిధ భాగాలలో ఉన్నాయి. వేర్వేరు కంటైనర్ల కోసం పొరలను తిరిగి ఉపయోగించవచ్చు. ఉదాహరణకు, కంపెనీలోని అన్ని అప్లికేషన్లు ఉబుంటు బేస్ లేయర్ని ఉపయోగించవచ్చు. కంటైనర్లను నడుపుతున్నప్పుడు, హోస్ట్లో ఒకే బేస్ లేయర్ యొక్క బహుళ కాపీలను నిల్వ చేయవలసిన అవసరం లేదు. ఇది ఇమేజ్ స్టోరేజ్ మరియు డెలివరీని ఆప్టిమైజ్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
మనం ఒక కంటెయినర్ నుండి అప్లికేషన్ను రన్ చేయాలనుకున్నప్పుడు, అవసరమైన లేయర్లు ఒకదానిపై ఒకటి అమర్చబడి ఓవర్లే ఫైల్ సిస్టమ్ ఏర్పడుతుంది. ఒక రికార్డింగ్ లేయర్ పైన ఉంచబడుతుంది, ఇది కంటైనర్ ఆగిపోయినప్పుడు తీసివేయబడుతుంది. కంటైనర్ రన్ అయినప్పుడు, అప్లికేషన్ ఎల్లప్పుడూ ఒకే వాతావరణాన్ని కలిగి ఉంటుందని, దానిని మార్చలేమని ఇది నిర్ధారిస్తుంది. ఇది వివిధ హోస్ట్ OSలలో పర్యావరణం యొక్క పునరుత్పత్తికి హామీ ఇస్తుంది. అది Ubuntu లేదా CentOS అయినా, పర్యావరణం ఎల్లప్పుడూ ఒకేలా ఉంటుంది. అదనంగా, Linux కెర్నల్లో నిర్మించిన మెకానిజమ్లను ఉపయోగించి కంటైనర్ హోస్ట్ నుండి వేరుచేయబడుతుంది. కంటైనర్లోని అనువర్తనాలు ఫైల్లు, హోస్ట్ యొక్క ప్రక్రియలు మరియు పొరుగు కంటైనర్లను చూడవు. హోస్ట్ OS నుండి అప్లికేషన్ల యొక్క ఈ ఐసోలేషన్ అదనపు భద్రతా పొరను అందిస్తుంది.
హోస్ట్లో కంటైనర్లను నిర్వహించడానికి అనేక సాధనాలు అందుబాటులో ఉన్నాయి. వాటిలో అత్యంత ప్రాచుర్యం పొందినది డాకర్. ఇది కంటైనర్ల పూర్తి జీవిత చక్రాన్ని అందించడానికి మిమ్మల్ని అనుమతిస్తుంది. అయితే, ఇది ఒక హోస్ట్లో మాత్రమే పని చేస్తుంది. మీరు బహుళ హోస్ట్లలో కంటైనర్లను నిర్వహించాల్సిన అవసరం ఉన్నట్లయితే, డాకర్ ఇంజనీర్లకు జీవితాన్ని నరకం చేయవచ్చు. అందుకే కుబెర్నెటీస్ సృష్టించబడింది.
కుబెర్నెట్స్కు డిమాండ్ ఖచ్చితంగా బహుళ హోస్ట్లలో కంటైనర్ల సమూహాలను ఒక రకమైన ఒకే సంస్థగా నిర్వహించగల సామర్థ్యం కారణంగా ఉంది. సిస్టమ్ యొక్క జనాదరణ DevOps లేదా డెవలప్మెంట్ ఆపరేషన్లను రూపొందించడానికి అవకాశాన్ని అందిస్తుంది, దీనిలో Kubernetes ఈ DevOps యొక్క ప్రక్రియలను అమలు చేయడానికి ఉపయోగించబడుతుంది.
మూర్తి 1. కుబెర్నెటెస్ ఎలా పని చేస్తుందో స్కీమాటిక్ ప్రాతినిధ్యం
పూర్తి ఆటోమేషన్
DevOps అనేది ప్రాథమికంగా అభివృద్ధి ప్రక్రియ యొక్క ఆటోమేషన్. స్థూలంగా చెప్పాలంటే, డెవలపర్లు రిపోజిటరీకి అప్లోడ్ చేయబడిన కోడ్ను వ్రాస్తారు. అప్పుడు ఈ కోడ్ని అన్ని లైబ్రరీలతో కూడిన కంటైనర్లో వెంటనే స్వయంచాలకంగా సేకరించి, పరీక్షించి, తదుపరి దశకు - స్టేజింగ్కి, ఆపై వెంటనే ఉత్పత్తికి "అవుట్" చేయవచ్చు.
కుబెర్నెటీస్తో కలిసి, DevOps ఈ ప్రక్రియను ఆటోమేట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది, తద్వారా డెవలపర్ల నుండి వాస్తవంగా భాగస్వామ్యం లేకుండా ఇది జరుగుతుంది. దీని కారణంగా, డెవలపర్ తన కంప్యూటర్లో దీన్ని చేయనవసరం లేదు కాబట్టి, బిల్డ్ గణనీయంగా వేగంగా ఉంటుంది - అతను కేవలం కోడ్ ముక్కను వ్రాస్తాడు, కోడ్ను రిపోజిటరీకి నెట్టివేస్తాడు, ఆ తర్వాత పైప్లైన్ ప్రారంభించబడుతుంది, ఇందులో ప్రక్రియ ఉంటుంది. బిల్డింగ్, టెస్టింగ్ మరియు రోలింగ్ అవుట్. మరియు ఇది ప్రతి నిబద్ధతతో జరుగుతుంది, కాబట్టి పరీక్ష నిరంతరం జరుగుతుంది.
అదే సమయంలో, కంటైనర్ను ఉపయోగించడం ద్వారా ఈ ప్రోగ్రామ్ యొక్క మొత్తం పర్యావరణం ఖచ్చితంగా పరీక్షించిన రూపంలో ఉత్పత్తికి విడుదల చేయబడుతుందని మీరు నిర్ధారించుకోవడానికి అనుమతిస్తుంది. అంటే, "పరీక్షలో కొన్ని సంస్కరణలు ఉన్నాయి, మరికొన్ని ఉత్పత్తిలో ఉన్నాయి, కానీ మేము వాటిని ఇన్స్టాల్ చేసినప్పుడు, ప్రతిదీ పడిపోయింది" వంటి సమస్యలు ఉండవు. మరియు ఈ రోజు నుండి మేము మైక్రోసర్వీస్ ఆర్కిటెక్చర్ వైపు మొగ్గుచూపుతున్నాము, ఒక భారీ అప్లికేషన్కు బదులుగా వందలాది చిన్నవి ఉన్నప్పుడు, వాటిని మాన్యువల్గా నిర్వహించడానికి, భారీ ఉద్యోగుల సిబ్బంది అవసరం. అందుకే మేము కుబెర్నెట్లను ఉపయోగిస్తాము.
ప్రోస్, ప్రోస్, ప్రోస్
మేము ప్లాట్ఫారమ్గా కుబెర్నెటెస్ యొక్క ప్రయోజనాల గురించి మాట్లాడినట్లయితే, మైక్రోసర్వీస్ ఆర్కిటెక్చర్ను నిర్వహించే కోణం నుండి దీనికి గణనీయమైన ప్రయోజనాలు ఉన్నాయి.
- బహుళ ప్రతిరూపాలను నిర్వహించడం. బహుళ హోస్ట్లలో కంటైనర్లను నిర్వహించడం చాలా ముఖ్యమైన విషయం. మరీ ముఖ్యంగా, ఒకే ఎంటిటీగా కంటైనర్లలో బహుళ అప్లికేషన్ ప్రతిరూపాలను నిర్వహించండి. దీనికి ధన్యవాదాలు, ఇంజనీర్లు ప్రతి ఒక్క కంటైనర్ గురించి ఆందోళన చెందాల్సిన అవసరం లేదు. కంటైనర్లలో ఒకటి క్రాష్ అయినట్లయితే, కుబెర్నెట్స్ దీన్ని చూసి మళ్లీ రీస్టార్ట్ చేస్తారు.
- క్లస్టర్ నెట్వర్క్. Kubernetes దాని స్వంత చిరునామా స్థలంతో క్లస్టర్ నెట్వర్క్ అని పిలవబడేది కూడా ఉంది. దీనికి ధన్యవాదాలు, ప్రతి పాడ్ దాని స్వంత చిరునామాను కలిగి ఉంటుంది. సబ్పాడ్ అనేది క్లస్టర్ యొక్క కనిష్ట నిర్మాణ యూనిట్గా అర్థం చేసుకోబడుతుంది, దీనిలో కంటైనర్లు నేరుగా ప్రారంభించబడతాయి. అదనంగా, కుబెర్నెటెస్ లోడ్ బ్యాలెన్సర్ మరియు సర్వీస్ డిస్కవరీని మిళితం చేసే కార్యాచరణను కలిగి ఉంది. ఇది మాన్యువల్ IP చిరునామా నిర్వహణను వదిలించుకోవడానికి మరియు ఈ పనిని Kubernetesకి అప్పగించడానికి మిమ్మల్ని అనుమతిస్తుంది. మరియు స్వయంచాలక ఆరోగ్య తనిఖీలు సమస్యలను గుర్తించడంలో సహాయపడతాయి మరియు పని చేసే పాడ్లకు ట్రాఫిక్ని మళ్లిస్తాయి.
- ఆకృతీకరణ నిర్వహణ. పెద్ద సంఖ్యలో అప్లికేషన్లను నిర్వహిస్తున్నప్పుడు, అప్లికేషన్ కాన్ఫిగరేషన్ని నిర్వహించడం కష్టమవుతుంది. ఈ ప్రయోజనం కోసం, Kubernetes ప్రత్యేక ConfigMap వనరులను కలిగి ఉంది. కాన్ఫిగరేషన్లను కేంద్రీయంగా నిల్వ చేయడానికి మరియు అప్లికేషన్లను అమలు చేస్తున్నప్పుడు వాటిని పాడ్లకు బహిర్గతం చేయడానికి అవి మిమ్మల్ని అనుమతిస్తాయి. ఈ మెకానిజం కనీసం పది లేదా వంద అప్లికేషన్ ప్రతిరూపాలలో కాన్ఫిగరేషన్ యొక్క స్థిరత్వానికి హామీ ఇవ్వడానికి అనుమతిస్తుంది.
- పెర్సిస్టెంట్ వాల్యూమ్లు. కంటైనర్లు అంతర్గతంగా మార్పులేనివి మరియు కంటైనర్ను ఆపివేసినప్పుడు, ఫైల్ సిస్టమ్కు వ్రాసిన మొత్తం డేటా నాశనం చేయబడుతుంది. కానీ కొన్ని అప్లికేషన్లు నేరుగా డిస్క్లో డేటాను నిల్వ చేస్తాయి. ఈ సమస్యను పరిష్కరించడానికి, Kubernetes డిస్క్ నిల్వ నిర్వహణ కార్యాచరణను కలిగి ఉంది - పెర్సిస్టెంట్ వాల్యూమ్లు. ఈ మెకానిజం డేటా కోసం బాహ్య నిల్వను ఉపయోగిస్తుంది మరియు నిరంతర నిల్వ, బ్లాక్ లేదా ఫైల్ను కంటైనర్లలోకి బదిలీ చేయగలదు. ఈ పరిష్కారం కార్మికుల నుండి విడిగా డేటాను నిల్వ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది, అదే కార్మికులు విచ్ఛిన్నమైతే వాటిని సేవ్ చేస్తుంది.
- లోడ్ బ్యాలెన్సర్. కుబెర్నెట్స్లో మేము డిప్లాయ్మెంట్, స్టేట్ఫుల్సెట్ మొదలైన అబ్స్ట్రాక్ట్ ఎంటిటీలను నిర్వహిస్తున్నప్పటికీ, అంతిమంగా కంటైనర్లు సాధారణ వర్చువల్ మెషీన్లు లేదా హార్డ్వేర్ సర్వర్లపై నడుస్తాయి. అవి పరిపూర్ణంగా లేవు మరియు ఎప్పుడైనా పడిపోవచ్చు. కుబెర్నెట్స్ దీనిని చూస్తారు మరియు అంతర్గత ట్రాఫిక్ని ఇతర ప్రతిరూపాలకు దారి మళ్లిస్తారు. అయితే బయటి నుంచి వచ్చే ట్రాఫిక్తో ఏం చేయాలి? మీరు కేవలం కార్మికులలో ఒకరికి ట్రాఫిక్ని మళ్లిస్తే, అది క్రాష్ అయినట్లయితే, సేవ అందుబాటులో ఉండదు. ఈ సమస్యను పరిష్కరించడానికి, Kubernetes లోడ్ బ్యాలెన్సర్ వంటి సేవలను కలిగి ఉంది. క్లస్టర్లోని కార్మికులందరికీ బాహ్య క్లౌడ్ బ్యాలెన్సర్ను స్వయంచాలకంగా కాన్ఫిగర్ చేయడానికి అవి రూపొందించబడ్డాయి. ఈ బాహ్య బ్యాలెన్సర్ కార్మికులకు బాహ్య ట్రాఫిక్ని నిర్దేశిస్తుంది మరియు వారి స్థితిని స్వయంగా పర్యవేక్షిస్తుంది. ఒకరు లేదా అంతకంటే ఎక్కువ మంది కార్మికులు అందుబాటులో లేకుంటే, ట్రాఫిక్ ఇతరులకు దారి మళ్లించబడుతుంది. ఇది Kubernetesని ఉపయోగించి అత్యంత అందుబాటులో ఉన్న సేవలను సృష్టించడానికి మిమ్మల్ని అనుమతిస్తుంది.
మైక్రోసర్వీస్ ఆర్కిటెక్చర్లను అమలు చేస్తున్నప్పుడు కుబెర్నెటెస్ ఉత్తమంగా పని చేస్తుంది. సిస్టమ్ను క్లాసికల్ ఆర్కిటెక్చర్లో అమలు చేయడం సాధ్యపడుతుంది, కానీ ఇది అర్ధం కాదు. ఒక అప్లికేషన్ బహుళ ప్రతిరూపాలపై రన్ చేయలేకపోతే, అది కుబెర్నెట్స్లో లేదా కాదా?
ఓపెన్ సోర్స్ Kubernetes
ఓపెన్ సోర్స్ కుబెర్నెట్స్ గొప్ప విషయం: నేను దీన్ని ఇన్స్టాల్ చేసాను మరియు అది పని చేస్తుంది. మీరు దీన్ని మీ స్వంత హార్డ్వేర్ సర్వర్లలో, మీ స్వంత ఇన్ఫ్రాస్ట్రక్చర్లో అమర్చవచ్చు, అన్ని అప్లికేషన్లు రన్ అయ్యే మాస్టర్లు మరియు వర్కర్లను ఇన్స్టాల్ చేయవచ్చు. మరియు ముఖ్యంగా, ఇవన్నీ ఉచితం. అయితే, సూక్ష్మ నైపుణ్యాలు ఉన్నాయి.
- మొదటిది అడ్మినిస్ట్రేటర్లు మరియు ఇంజనీర్ల జ్ఞానం మరియు అనుభవం కోసం డిమాండ్, వీటన్నింటికీ మద్దతునిస్తుంది. క్లయింట్ క్లస్టర్లో పూర్తి చర్య స్వేచ్ఛను పొందుతుంది కాబట్టి, క్లస్టర్ యొక్క పనితీరుకు అతను స్వయంగా బాధ్యత వహిస్తాడు. మరియు ఇక్కడ ప్రతిదీ విచ్ఛిన్నం చేయడం చాలా సులభం.
- రెండవది ఏకీకరణలు లేకపోవడం. మీరు జనాదరణ పొందిన వర్చువలైజేషన్ ప్లాట్ఫారమ్ లేకుండా Kubernetesని అమలు చేస్తే, మీరు ప్రోగ్రామ్ యొక్క అన్ని ప్రయోజనాలను పొందలేరు. పెర్సిస్టెంట్ వాల్యూమ్లను ఉపయోగించడం మరియు బ్యాలెన్సర్ సేవలను లోడ్ చేయడం వంటివి.
మూర్తి 2. k8s ఆర్కిటెక్చర్
విక్రేత నుండి కుబెర్నెట్స్
క్లౌడ్ ప్రొవైడర్తో ఇంటిగ్రేషన్ రెండు ఎంపికలను అందిస్తుంది:
- ముందుగా, ఒక వ్యక్తి కేవలం “క్లస్టర్ని సృష్టించు” బటన్పై క్లిక్ చేసి, క్లస్టర్ను ఇప్పటికే కాన్ఫిగర్ చేసి, ఉపయోగించడానికి సిద్ధంగా ఉంచుకోవచ్చు.
- రెండవది, విక్రేత స్వయంగా క్లస్టర్ను ఇన్స్టాల్ చేస్తాడు మరియు క్లౌడ్తో ఏకీకరణను సెటప్ చేస్తాడు.
ఇది ఇక్కడ ఎలా జరుగుతుంది. క్లస్టర్ను ప్రారంభించే ఇంజనీర్ తనకు ఎంత మంది కార్మికులు అవసరమో మరియు ఏ పారామితులతో నిర్దేశిస్తాడు (ఉదాహరణకు, 5 మంది కార్మికులు, ఒక్కొక్కటి 10 CPUలు, 16 GB RAM మరియు 100 GB డిస్క్తో). దాని తర్వాత ఇది ఇప్పటికే ఏర్పడిన క్లస్టర్కు ప్రాప్యతను పొందుతుంది. ఈ సందర్భంలో, లోడ్ ప్రారంభించబడిన కార్మికులు పూర్తిగా క్లయింట్కు బదిలీ చేయబడతారు, అయితే మొత్తం నిర్వహణ విమానం విక్రేత యొక్క బాధ్యతలో ఉంటుంది (సేవ నిర్వహించబడే సేవా నమూనా ప్రకారం అందించబడితే).
అయితే, ఈ పథకం దాని లోపాలను కలిగి ఉంది. నిర్వహణ విమానం విక్రేత వద్ద ఉన్నందున, విక్రేత క్లయింట్కు పూర్తి ప్రాప్తిని ఇవ్వడు మరియు ఇది కుబెర్నెట్స్తో పని చేయడంలో సౌలభ్యాన్ని తగ్గిస్తుంది. కొన్నిసార్లు ఒక క్లయింట్ కుబెర్నెట్స్కు కొన్ని నిర్దిష్ట కార్యాచరణలను జోడించాలనుకుంటున్నారు, ఉదాహరణకు, LDAP ద్వారా ప్రమాణీకరణ, కానీ నిర్వహణ విమానం కాన్ఫిగరేషన్ దీన్ని అనుమతించదు.
మూర్తి 3. క్లౌడ్ ప్రొవైడర్ నుండి కుబెర్నెట్స్ క్లస్టర్ యొక్క ఉదాహరణ
ఏమి ఎంచుకోవాలి: ఓపెన్ సోర్స్ లేదా విక్రేత
కాబట్టి, కుబెర్నెట్స్ ఓపెన్ సోర్స్ లేదా విక్రేత నిర్దిష్టమా? మేము ఓపెన్ సోర్స్ Kubernetes తీసుకుంటే, వినియోగదారు దానితో అతను కోరుకున్నది చేస్తాడు. కానీ పాదంలో మిమ్మల్ని మీరు కాల్చుకునే గొప్ప అవకాశం ఉంది. విక్రేతతో ఇది చాలా కష్టం, ఎందుకంటే ప్రతిదీ ఆలోచించి కంపెనీ కోసం కాన్ఫిగర్ చేయబడింది. ఓపెన్ సోర్స్ కుబెర్నెట్స్ యొక్క అతిపెద్ద ప్రతికూలత నిపుణుల కోసం అవసరం. విక్రేత ఎంపికతో, కంపెనీ ఈ తలనొప్పి నుండి విముక్తి పొందింది, అయితే దాని నిపుణులకు లేదా విక్రేతకు చెల్లించాలా అనేది నిర్ణయించుకోవాలి.
బాగా, లాభాలు స్పష్టంగా ఉన్నాయి, నష్టాలు కూడా తెలుసు. ఒక విషయం స్థిరంగా ఉంటుంది: కుబెర్నెట్స్ అనేక కంటైనర్ల నిర్వహణను ఆటోమేట్ చేయడం ద్వారా చాలా సమస్యలను పరిష్కరిస్తుంది. మరియు ఏది ఎంచుకోవాలి, ఓపెన్ సోర్స్ లేదా విక్రేత - ప్రతి ఒక్కరూ వారి స్వంత నిర్ణయం తీసుకుంటారు.
#CloudMTS ప్రొవైడర్ యొక్క కంటైనర్ సర్వీస్ యొక్క ప్రముఖ ఆర్కిటెక్ట్ డిమిత్రి క్రాస్నోవ్ ఈ కథనాన్ని సిద్ధం చేశారు.
మూలం: www.habr.com