Kubernetes క్లస్టర్ వనరులను పర్యవేక్షిస్తోంది

Kubernetes క్లస్టర్ వనరులను పర్యవేక్షిస్తోంది

నేను కుబే ఈగిల్‌ని సృష్టించాను - ప్రోమేతియస్ ఎగుమతిదారు. ఇది చిన్న మరియు మధ్య తరహా క్లస్టర్‌ల వనరులను బాగా అర్థం చేసుకోవడానికి సహాయపడే చక్కని విషయంగా మారింది. చివరికి, నేను సరైన మెషిన్ రకాలను ఎంచుకున్నాను మరియు పనిభారం కోసం అప్లికేషన్ వనరుల పరిమితులను కాన్ఫిగర్ చేసినందున నేను వందలకొద్దీ డాలర్లను ఆదా చేసాను.

ప్రయోజనాల గురించి నేను మీకు చెప్తాను కుబే డేగ, అయితే మొదట నేను రచ్చకు కారణమేమిటో వివరిస్తాను మరియు అధిక-నాణ్యత పర్యవేక్షణ ఎందుకు అవసరమో వివరిస్తాను.

నేను 4–50 నోడ్‌ల అనేక క్లస్టర్‌లను నిర్వహించాను. ప్రతి క్లస్టర్ గరిష్టంగా 200 మైక్రోసర్వీస్‌లు మరియు అప్లికేషన్‌లను కలిగి ఉంటుంది. ఇప్పటికే ఉన్న హార్డ్‌వేర్‌ను మరింత మెరుగ్గా ఉపయోగించుకోవడానికి, చాలా విస్తరణలు బర్స్టబుల్ RAM మరియు CPU వనరులతో కాన్ఫిగర్ చేయబడ్డాయి. ఈ విధంగా, పాడ్‌లు అవసరమైతే అందుబాటులో ఉన్న వనరులను తీసుకోవచ్చు మరియు అదే సమయంలో ఈ నోడ్‌లోని ఇతర అనువర్తనాలతో జోక్యం చేసుకోవద్దు. బాగా, ఇది గొప్పది కాదా?

మరియు క్లస్టర్ సాపేక్షంగా తక్కువ CPU (8%) మరియు RAM (40%) వినియోగించినప్పటికీ, నోడ్‌లో అందుబాటులో ఉన్న దానికంటే ఎక్కువ మెమరీని కేటాయించడానికి ప్రయత్నించినప్పుడు పాడ్‌లు ప్రీఎంప్ట్ చేయబడటంలో మేము నిరంతరం సమస్యలను ఎదుర్కొంటాము. కుబెర్నెట్స్ వనరులను పర్యవేక్షించడానికి మా వద్ద ఒకే ఒక డాష్‌బోర్డ్ ఉంది. ఇలా:

Kubernetes క్లస్టర్ వనరులను పర్యవేక్షిస్తోంది
cAdvisor మెట్రిక్‌లతో మాత్రమే గ్రాఫానా డాష్‌బోర్డ్

అటువంటి ప్యానెల్‌తో, చాలా మెమరీ మరియు CPU తినే నోడ్‌లను చూడటం సమస్య కాదు. కారణం ఏమిటో గుర్తించడమే సమస్య. పాడ్‌లను ఉంచడానికి, అన్ని పాడ్‌లపై హామీ ఇవ్వబడిన వనరులను సెటప్ చేయవచ్చు (పరిమితికి సమానమైన వనరులు అభ్యర్థించబడతాయి). కానీ ఇది హార్డ్‌వేర్ యొక్క తెలివైన ఉపయోగం కాదు. క్లస్టర్ అనేక వందల గిగాబైట్ల మెమరీని కలిగి ఉంది, కొన్ని నోడ్‌లు ఆకలితో ఉన్నాయి, మరికొన్ని రిజర్వ్‌లో 4-10 GB మిగిలి ఉన్నాయి.

కుబెర్నెటీస్ షెడ్యూలర్ అందుబాటులో ఉన్న వనరులలో పనిభారాన్ని అసమానంగా పంపిణీ చేసినట్లు తేలింది. కుబెర్నెటెస్ షెడ్యూలర్ విభిన్న కాన్ఫిగరేషన్‌లను పరిగణనలోకి తీసుకుంటుంది: అనుబంధం, మచ్చలు మరియు సహన నియమాలు, అందుబాటులో ఉన్న నోడ్‌లను పరిమితం చేయగల నోడ్ సెలెక్టర్లు. కానీ నా విషయంలో అలాంటిదేమీ లేదు మరియు ప్రతి నోడ్‌లో అభ్యర్థించిన వనరులను బట్టి పాడ్‌లు ప్లాన్ చేయబడ్డాయి.

అత్యంత ఉచిత వనరులను కలిగి ఉన్న మరియు అభ్యర్థన షరతులను సంతృప్తిపరిచే నోడ్ పాడ్ కోసం ఎంపిక చేయబడింది. నోడ్‌లలో అభ్యర్థించిన వనరులు వాస్తవ వినియోగంతో సరిపోలడం లేదని మేము కనుగొన్నాము మరియు ఇక్కడే Kube Eagle మరియు దాని వనరుల పర్యవేక్షణ సామర్థ్యాలు రక్షించబడ్డాయి.

నేను దాదాపు అన్ని కుబెర్నెట్స్ క్లస్టర్‌లను మాత్రమే పర్యవేక్షించాను నోడ్ ఎగుమతిదారు и కుబే స్టేట్ మెట్రిక్స్. Node Exporter I/O మరియు డిస్క్, CPU మరియు RAM వినియోగంపై గణాంకాలను అందిస్తుంది, అయితే Kube State Metrics అభ్యర్థనలు మరియు CPU మరియు మెమరీ రిసోర్స్ పరిమితులు వంటి Kubernetes ఆబ్జెక్ట్ మెట్రిక్‌లను చూపుతుంది.

మేము గ్రాఫానాలోని అభ్యర్థనలు మరియు పరిమితుల కొలమానాలతో వినియోగ కొలమానాలను కలపాలి, ఆపై మేము సమస్య గురించి మొత్తం సమాచారాన్ని పొందుతాము. ఇది చాలా సరళంగా అనిపిస్తుంది, కానీ రెండు సాధనాలు వాస్తవానికి లేబుల్‌లకు వేర్వేరుగా పేరు పెట్టాయి మరియు కొన్ని కొలమానాలు ఎటువంటి మెటాడేటా లేబుల్‌లను కలిగి ఉండవు. Kube Eagle ప్రతిదీ స్వయంగా చేస్తుంది మరియు ప్యానెల్ ఇలా కనిపిస్తుంది:

Kubernetes క్లస్టర్ వనరులను పర్యవేక్షిస్తోంది

Kubernetes క్లస్టర్ వనరులను పర్యవేక్షిస్తోంది
కుబే ఈగిల్ డాష్‌బోర్డ్

మేము వనరులతో అనేక సమస్యలను పరిష్కరించగలిగాము మరియు పరికరాలను సేవ్ చేసాము:

  1. మైక్రోసర్వీస్‌లకు ఎన్ని వనరులు అవసరమో కొంతమంది డెవలపర్‌లకు తెలియదు (లేదా ఇబ్బంది పెట్టలేదు). వనరుల కోసం సరికాని అభ్యర్థనలను కనుగొనడానికి మాకు మార్గం లేదు - దీని కోసం మేము వినియోగం మరియు అభ్యర్థనలు మరియు పరిమితులను తెలుసుకోవాలి. ఇప్పుడు వారు ప్రోమేతియస్ మెట్రిక్‌లను చూస్తారు, వాస్తవ వినియోగాన్ని పర్యవేక్షిస్తారు మరియు అభ్యర్థనలు మరియు పరిమితులను సర్దుబాటు చేస్తారు.
  2. JVM అప్లికేషన్‌లు ఎంత ర్యామ్‌ని హ్యాండిల్ చేయగలవో అంత ఎక్కువ తీసుకుంటాయి. చెత్త కలెక్టర్ 75% కంటే ఎక్కువ ఉపయోగించినప్పుడు మాత్రమే మెమరీని విడుదల చేస్తుంది. మరియు చాలా సర్వీస్‌లు బర్స్టబుల్ మెమరీని కలిగి ఉన్నందున, ఇది ఎల్లప్పుడూ JVMచే ఆక్రమించబడుతుంది. అందువల్ల, ఈ జావా సేవలన్నీ ఊహించిన దానికంటే చాలా ఎక్కువ RAMని తినేస్తున్నాయి.
  3. కొన్ని అప్లికేషన్‌లు చాలా ఎక్కువ మెమరీని అభ్యర్థించాయి మరియు Kubernetes షెడ్యూలర్ ఈ నోడ్‌లను ఇతర అప్లికేషన్‌లకు అందించలేదు, వాస్తవానికి అవి ఇతర నోడ్‌ల కంటే స్వేచ్ఛగా ఉన్నప్పటికీ. ఒక డెవలపర్ అనుకోకుండా అభ్యర్థనలో అదనపు అంకెను జోడించారు మరియు పెద్ద RAM భాగాన్ని పట్టుకున్నారు: 20కి బదులుగా 2 GB. ఎవరూ గమనించలేదు. అప్లికేషన్‌లో 3 ప్రతిరూపాలు ఉన్నాయి, కాబట్టి 3 నోడ్‌లు ప్రభావితమయ్యాయి.
  4. మేము వనరుల పరిమితులను పరిచయం చేసాము, సరైన అభ్యర్థనలతో పాడ్‌లను రీషెడ్యూల్ చేసాము మరియు అన్ని నోడ్‌లలో హార్డ్‌వేర్ వినియోగం యొక్క ఆదర్శవంతమైన బ్యాలెన్స్‌ని పొందాము. రెండు నోడ్‌లు పూర్తిగా మూసివేయబడి ఉండవచ్చు. ఆపై మన దగ్గర తప్పు మెషీన్లు ఉన్నాయని చూశాము (CPU ఓరియెంటెడ్, మెమరీ ఓరియెంటెడ్ కాదు). మేము రకాన్ని మార్చాము మరియు మరికొన్ని నోడ్‌లను తొలగించాము.

ఫలితాలు

క్లస్టర్‌లో పగిలిపోయే వనరులతో, మీరు అందుబాటులో ఉన్న హార్డ్‌వేర్‌ను మరింత సమర్ధవంతంగా ఉపయోగిస్తున్నారు, అయితే కుబెర్నెట్స్ షెడ్యూలర్ వనరుల కోసం అభ్యర్థనల ఆధారంగా పాడ్‌లను షెడ్యూల్ చేస్తుంది మరియు ఇది నిండి ఉంది. ఒకే రాయితో రెండు పక్షులను చంపడానికి: సమస్యలను నివారించడానికి మరియు వనరులను పూర్తిగా ఉపయోగించుకోవడానికి, మీకు మంచి పర్యవేక్షణ అవసరం. అందుకే ఇది ఉపయోగకరంగా ఉంటుంది కుబే డేగ (ప్రోమేతియస్ ఎగుమతిదారు మరియు గ్రాఫానా డాష్‌బోర్డ్).

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి