ఇంటర్నెట్లో చాలా రిఫరెన్స్ సాహిత్యం ఉంది, కానీ కొన్నిసార్లు సరళమైన సలహా అత్యంత విలువైనది. జట్టు Mail.ru నుండి Kubernetes aaS అనువదించారు పది ఉపాయాలు మరియు చిట్కాల ఎంపిక, కుబెర్నెటెస్తో కలిసి పనిచేసిన ఒక సంవత్సరం తర్వాత వ్యాసం రచయిత సేకరించారు. చిట్కాలు ప్రాముఖ్యతను బట్టి క్రమబద్ధీకరించబడవు, కానీ ప్రతి ఒక్కరూ తమకు తాముగా ఉపయోగపడేదాన్ని కనుగొంటారని మేము భావిస్తున్నాము.
కుబెర్నెట్స్తో పని చేయడానికి సులభమైన ఆదేశం
ప్రారంభించడానికి, కుబెర్నెటెస్తో పని చేయడంలో బహుశా సరళమైన మరియు అత్యంత ఉపయోగకరమైన చర్య. కింది ఆదేశం కమాండ్ పూర్తి చేయడాన్ని ప్రారంభిస్తుంది kubectl బాష్ షెల్ లో:
స్వయంపూర్తి kubectl .bashrc ఫైల్కు వ్రాయబడుతుంది మరియు షెల్ ప్రారంభించబడిన ప్రతిసారీ స్వయంచాలకంగా సక్రియం చేయబడుతుంది. ఇది లాంగ్ కమాండ్లు మరియు పారామీటర్లను టైప్ చేయడాన్ని వేగవంతం చేస్తుంది all-namespaces. లో మరింత చదవండి కుబెర్నెటెస్ బాష్ సహాయం.
నేమ్స్పేస్లో డిఫాల్ట్ మెమరీ మరియు CPU పరిమితులు
అప్లికేషన్ తప్పుగా వ్రాసినట్లయితే, ఉదాహరణకు, ఇది డేటాబేస్కు ప్రతి సెకనుకు కొత్త కనెక్షన్ని తెరుస్తుంది కానీ దానిని ఎప్పటికీ మూసివేయదు, అప్పుడు క్లస్టర్ మెమరీ లీక్ను కలిగి ఉంటుంది. మరియు అప్లికేషన్ విస్తరణ సమయంలో మెమరీ పరిమితిని సెట్ చేయకపోతే, ఇది నోడ్ వైఫల్యానికి దారి తీస్తుంది.
దీన్ని నివారించడానికి, కుబెర్నెటెస్ ప్రతి-నేమ్స్పేస్ ఆధారంగా డిఫాల్ట్ పరిమితులను సెట్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. అవి నిర్దిష్ట నేమ్స్పేస్ కోసం yaml ఫైల్లో వ్రాయబడ్డాయి. అటువంటి ఫైల్ యొక్క ఉదాహరణ ఇక్కడ ఉంది:
అటువంటి యమ్ల్ని సృష్టించండి మరియు ఏదైనా నేమ్స్పేస్కి వర్తించండి. ఉదాహరణకు, నేమ్స్పేస్కు limit-example. ఇప్పుడు ఈ నేమ్స్పేస్లో అమర్చబడిన ఏదైనా కంటైనర్ 512Mi పరిమితిని కలిగి ఉంటుంది, ఈ కంటైనర్కు మరో వ్యక్తిగత పరిమితిని అదనంగా సెట్ చేయకపోతే.
కుబెర్నెటెస్ యొక్క పాత వెర్షన్లలో చెత్త సేకరణ
కుబెలెట్ డిఫాల్ట్గా చెత్త సేకరణను ఎప్పుడు ప్రారంభిస్తుంది var/lib/docker అందుబాటులో ఉన్న డిస్క్ స్థలంలో 90% ఆక్రమించింది. ఇది చాలా బాగుంది, అయితే, Kubernetes 1.7 వరకు ఫైల్ సిస్టమ్లోని ఫైల్ల సంఖ్యకు అనుగుణంగా ఉపయోగించే ఐనోడ్ల సంఖ్యపై డిఫాల్ట్ పరిమితి లేదు.
సంభావ్యంగా మీ కంటైనర్ var/lib/docker డిస్క్ స్థలంలో 50% మాత్రమే ఉపయోగించవచ్చు, కానీ ఐనోడ్లు అయిపోవచ్చు, ఇది కార్మికులకు సమస్యలను కలిగిస్తుంది.
1.4 నుండి 1.6 వరకు ఉన్న పాత కుబెలెట్ వెర్షన్లలో మీరు ఈ ఫ్లాగ్ని జోడించాలి:
అప్లికేషన్ను ఎలా నిర్మించాలి మరియు ఆ క్లస్టర్లో స్థానికంగా ఎలా అమలు చేయాలి అనేది ఉపాయం. ప్రత్యేకంగా నిర్దేశించకపోతే, డాకర్ చిత్రం మీ కంప్యూటర్లో నిర్మించబడుతుంది మరియు క్లస్టర్పై కాదు.
చిత్రాన్ని స్థానిక కుబెర్నెటెస్ క్లస్టర్కి నెట్టడానికి డాకర్ను బలవంతం చేయడానికి, డాకర్ మెషీన్కు కింది ఆదేశం ఇవ్వబడుతుంది:
eval $(minikube docker-env)
ఇప్పుడు మనం స్థానిక కుబెర్నెట్స్ క్లస్టర్లో అప్లికేషన్లను రూపొందించవచ్చు.
అందరికీ kubectl యాక్సెస్ ఇవ్వవద్దు
ఇది స్పష్టంగా కనిపిస్తోంది, అయితే బహుళ జట్లు తమ అప్లికేషన్ల కోసం ఒకే క్లస్టర్ను ఉపయోగిస్తుంటే (దీని కోసం కుబెర్నెట్స్ సృష్టించబడింది), మీరు అందరికీ ఇవ్వకూడదు kubectl. కమాండ్లను వేరు చేయడం ఉత్తమం, వాటిలో ప్రతి దాని స్వంత నేమ్స్పేస్ను కేటాయించడం మరియు RBAC విధానాలను ఉపయోగించి యాక్సెస్ని పరిమితం చేయడం.
ప్రతి పాడ్కు యాక్సెస్, చదవడం, సృష్టించడం, తొలగించడం మరియు ఇతర కార్యకలాపాలకు హక్కులను కేటాయించడం ద్వారా మీరు గందరగోళానికి గురవుతారు. కానీ ప్రధాన విషయం ఏమిటంటే రహస్యాలకు ప్రాప్యతను పరిమితం చేయడం, ఇది నిర్వాహకులకు మాత్రమే అనుమతిస్తుంది. ఈ విధంగా మేము క్లస్టర్ను నిర్వహించగల వారికి మరియు దానిని అమలు చేయగల వారి మధ్య తేడాను చూపుతాము.
పాడ్ బడ్జెట్లను నిర్వహించండి
కుబెర్నెటెస్ క్లస్టర్లో అప్లికేషన్ కోసం పనికిరాని సమయాన్ని ఎలా నిర్ధారించుకోవాలి? PodDisruptionBudget మరియు మళ్లీ PodDisruptionBudget.
క్లస్టర్లు క్రమానుగతంగా నవీకరించబడతాయి మరియు నోడ్లు ఖాళీ చేయబడతాయి. ఏదీ నిశ్చలంగా లేదు, అది వాస్తవం. ఒకటి కంటే ఎక్కువ ఉదాహరణలు ఉన్న ప్రతి విస్తరణలో PDB (PodDisruptionBudget) ఉండాలి. ఇది క్లస్టర్కి వర్తించే సాధారణ yaml ఫైల్లో సృష్టించబడింది. నిర్దిష్ట PDB యొక్క కవరేజ్ ప్రాంతం లేబుల్ సెలెక్టర్లచే నిర్ణయించబడుతుంది.
గమనిక: బడ్జెట్ ఉల్లంఘన రివర్సబుల్ అయినప్పుడు మాత్రమే PDB బడ్జెట్ పరిగణనలోకి తీసుకోబడుతుంది (స్వచ్ఛంద అంతరాయం) హార్డ్వేర్ వైఫల్యాల వంటి పరిస్థితుల్లో, PDB పని చేయదు.
రెండు ప్రధాన పారామితులు matchLabels и minAvailable. మొదటి పరామితి బడ్జెట్ ఏ అప్లికేషన్లకు వర్తిస్తుందో నిర్దేశిస్తుంది. ఉదాహరణకు, నేను లేబుల్లతో విస్తరణలను కలిగి ఉంటే app: app-a и app: app-b, అప్పుడు ఈ PDB మొదటిదానికి మాత్రమే వర్తిస్తుంది.
పరామితి minAvailable నోడ్ను ఖాళీ చేసేటప్పుడు (క్లీనింగ్) పరిగణనలోకి తీసుకుంటారు. ఉదాహరణకు, మా ఉదాహరణలో, ఖాళీ చేసే సమయంలో, అన్ని సందర్భాలు తొలగించబడతాయి app: app-a, రెండు తప్ప.
ఇది ఏ సమయంలో అప్లికేషన్ యొక్క ఎన్ని ఉదంతాలు అమలులో ఉండాలో నియంత్రించడానికి మిమ్మల్ని అనుమతిస్తుంది.
అప్లికేషన్ ఆరోగ్య పర్యవేక్షణ
ఇటువంటి పర్యవేక్షణ రెండు విధాలుగా సాధ్యమవుతుంది: సంసిద్ధత లేదా లైవ్నెస్ పరీక్షలను ఉపయోగించడం.
మొదటి ప్రోబ్ (సిద్ధత) ట్రాఫిక్ను స్వీకరించడానికి కంటైనర్ యొక్క సంసిద్ధతను నిర్ణయిస్తుంది.
రెండవది (లైవ్నెస్) కంటైనర్ ఆరోగ్యంగా ఉందా లేదా పునఃప్రారంభించాల్సిన అవసరం ఉందా అని చూపుతుంది.
సంబంధిత కాన్ఫిగరేషన్లు విస్తరణ కోసం యామల్కు జోడించబడతాయి. అక్కడ మీరు గడువు ముగింపులు, ఆలస్యం సమయాలు మరియు పునఃప్రయత్నాల సంఖ్యను పేర్కొనవచ్చు. వాటి గురించిన మరిన్ని వివరాలను చూడండి కుబెర్నెట్స్ డాక్యుమెంటేషన్.
ట్యాగ్లు ప్రతిచోటా ఉన్నాయి
కుబెర్నెటెస్లోని ప్రాథమిక భావనలలో లేబుల్లు ఒకటి. అవి వస్తువులు ఒకదానితో ఒకటి స్వేచ్ఛగా సంభాషించడానికి అలాగే లేబుల్ల ఆధారంగా ప్రశ్నలను సృష్టించడానికి అనుమతిస్తాయి. కుబెర్నెట్స్లో, మీరు క్లయింట్కి వెళ్లి నిర్దిష్ట ట్యాగ్ల కోసం ఈవెంట్లను కూడా చూడవచ్చు.
మీరు ట్యాగ్లతో దాదాపు ఏదైనా చేయవచ్చు, అయితే ఒకే క్లస్టర్లో ప్రోగ్రామ్లను అమలు చేయడానికి బహుళ వాతావరణాలను సృష్టించడం మంచి ఉదాహరణ.
మీరు అదే క్లస్టర్ని ఉపయోగిస్తున్నారని అనుకుందాం dev и qa. దీని అర్థం మీరు దరఖాస్తును కలిగి ఉండవచ్చని అర్థం app-a, రెండు వాతావరణాలలో ఏకకాలంలో పని చేస్తుంది qa и dev. ఈ సందర్భంలో, తగిన పరామితిని పేర్కొనడం ద్వారా మేము నిర్దిష్ట వాతావరణంలో అప్లికేషన్ ఉదాహరణను విడిగా యాక్సెస్ చేయవచ్చు environment. ఉదాహరణకు app: app-a и environment: dev ఒక పర్యావరణం కోసం, మరియు app: app-a и environment: qa రెండవ కోసం.
ఇది అప్లికేషన్ యొక్క రెండు సందర్భాలను యాక్సెస్ చేయడానికి మిమ్మల్ని అనుమతిస్తుంది, ఉదాహరణకు, ఏకకాలంలో పరీక్షను నిర్వహించడానికి.
నిర్వహించండి
కుబెర్నెటెస్ చాలా శక్తివంతమైన వ్యవస్థ, కానీ ఏ సిస్టమ్ అయినా చివరికి చాలా ప్రక్రియలతో కూరుకుపోతుంది. Kubelet మీరు పేర్కొన్న అన్ని ప్రక్రియలు మరియు తనిఖీలను అలాగే దాని స్వంతదానిని అమలు చేస్తుంది.
వాస్తవానికి, ఒక అనాథ సేవ సిస్టమ్ను నెమ్మదింపజేయదు మరియు కుబెర్నెటెస్ గ్రౌండ్ నుండి స్కేల్ చేయడానికి రూపొందించబడింది. కానీ ఒక సేవకు బదులుగా ఒక మిలియన్ కనిపిస్తే, కుబెలెట్ ఉక్కిరిబిక్కిరి చేయడం ప్రారంభిస్తుంది.
కొన్ని కారణాల వల్ల మీరు విస్తరణను తొలగిస్తే (కంటైనర్, ఇమేజ్, ఏదైనా), పూర్తి క్లీనప్ చేయాలని నిర్ధారించుకోండి.
గోను కలవండి
మేము ప్రధాన సలహాను చివరిగా సేవ్ చేసాము. గో ప్రోగ్రామింగ్ లాంగ్వేజ్ నేర్చుకోండి.
Kubernetes Goలో అభివృద్ధి చేయబడింది, అన్ని పొడిగింపులు Goలో వ్రాయబడ్డాయి మరియు క్లయింట్-గో క్లయింట్ లైబ్రరీకి కూడా అధికారికంగా మద్దతు ఉంది.
ఇది విభిన్న మరియు ఆసక్తికరమైన విషయాల కోసం ఉపయోగించవచ్చు. ఉదాహరణకు, కుబెర్నెట్స్ సిస్టమ్ను మీ అభిరుచికి అనుగుణంగా విస్తరించడానికి. కాబట్టి, మీరు డేటాను సేకరించడానికి, అప్లికేషన్లను అమలు చేయడానికి లేదా కంటైనర్లను శుభ్రం చేయడానికి మీ స్వంత ప్రోగ్రామ్లను ఉపయోగించవచ్చు.
గో ప్రోగ్రామింగ్ లాంగ్వేజ్ నేర్చుకోవడం మరియు క్లయింట్-గోను మాస్టరింగ్ చేయడం అనేది కొత్త కుబెర్నెట్స్ వినియోగదారులకు మీరు ఇవ్వగల అత్యంత ముఖ్యమైన సలహా.