ప్రోహోస్టర్ > బ్లాగ్ > పరిపాలన > 10G నెట్వర్క్ (ఆగస్టు 2020)లో కుబెర్నెట్స్ కోసం CNI పనితీరు అంచనా
10G నెట్వర్క్ (ఆగస్టు 2020)లో కుబెర్నెట్స్ కోసం CNI పనితీరు అంచనా
TL; DR: ఆటోమేటిక్ MTU డిటెక్షన్ మినహా అన్ని CNIలు కుబే-రూటర్ మరియు Kube-OVN, కాలికో మినహా అవి పని చేసే విధంగా పని చేస్తాయి.
నా గత తనిఖీల కథనం-నవీకరణ (2018 и 2019), పరీక్ష సమయంలో నేను ఆగస్టు 1.19 నాటికి అప్డేట్ చేయబడిన CNIలతో ఉబుంటు 18.04లో Kubernetes 2020ని ఉపయోగిస్తున్నాను.
మేము కొలమానాలలోకి ప్రవేశించే ముందు...
ఏప్రిల్ 2019 నుండి కొత్తగా ఏమి ఉంది?
మీ స్వంత క్లస్టర్లో పరీక్షించవచ్చు: మీరు మా సాధనాన్ని ఉపయోగించి మీ స్వంత క్లస్టర్లో పరీక్షలను అమలు చేయవచ్చు కుబెర్నెట్స్ నెట్వర్క్ బెంచ్మార్క్: knb
కొత్త దృశ్యాలు: ప్రస్తుత తనిఖీలు "Pod-to-Pod" నెట్వర్క్ పనితీరు పరీక్షలను అమలు చేస్తాయి మరియు వాస్తవ ప్రపంచ పరిస్థితులకు దగ్గరగా పరీక్షలను అమలు చేసే కొత్త "Pod-to-Service" స్క్రిప్ట్ జోడించబడింది. ఆచరణలో, APIతో ఉన్న మీ పాడ్ పాడ్ ip చిరునామా ద్వారా కాకుండా సేవగా బేస్తో పనిచేస్తుంది (అయితే మేము రెండు దృశ్యాల కోసం TCP మరియు UDP రెండింటినీ తనిఖీ చేస్తాము).
వనరుల వినియోగం: ప్రతి పరీక్ష ఇప్పుడు దాని స్వంత వనరుల పోలికను కలిగి ఉంది
అప్లికేషన్ టెస్ట్లను తీసివేయడం: కమ్యూనిటీతో మా ఫలవంతమైన సహకారంతో మేము ఇకపై HTTP, FTP మరియు SCP పరీక్షలను చేయము మరియు CNI నిర్వహణదారులు CNI స్టార్టప్లో ఆలస్యం (Pod యొక్క మొదటి కొన్ని సెకన్లు) కారణంగా TCP కంటే iperf ఫలితాలు మరియు కర్ల్ ఫలితాల మధ్య అంతరాన్ని కనుగొన్నారు. స్టార్టప్, ఇది వాస్తవ పరిస్థితుల్లో విలక్షణమైనది కాదు).
ఓపెన్ సోర్స్: అన్ని పరీక్ష మూలాధారాలు (స్క్రిప్ట్లు, yml సెట్టింగ్లు మరియు అసలు “రా” డేటా) అందుబాటులో ఉన్నాయి ఇక్కడ
సూచన పరీక్ష ప్రోటోకాల్
ప్రోటోకాల్ వివరంగా వివరించబడింది ఇక్కడఈ వ్యాసం డిఫాల్ట్ కెర్నల్తో ఉబుంటు 18.04 గురించి అని దయచేసి గమనించండి.
అసెస్మెంట్ కోసం CNIని ఎంచుకోవడం
ఈ పరీక్ష ఒక yaml ఫైల్తో కాన్ఫిగర్ చేయబడిన CNIలను పోల్చడానికి ఉద్దేశించబడింది (అందుచేత, VPP మరియు ఇతర స్క్రిప్ట్ల ద్వారా ఇన్స్టాల్ చేయబడినవన్నీ మినహాయించబడ్డాయి).
పోలిక కోసం మా ఎంచుకున్న CNIలు:
ఆంట్రియా v.0.9.1
కాలికో v3.16
కెనాల్ v3.16 (ఫ్లాన్నెల్ నెట్వర్క్ + కాలికో నెట్వర్క్ విధానాలు)
సిలియం 1.8.2
ఫ్లాన్నెల్ 0.12.0
కుబే-రూటర్ తాజా (2020–08–25)
WeaveNet 2.7.0
CNI కోసం MTUని కాన్ఫిగర్ చేస్తోంది
అన్నింటిలో మొదటిది, TCP పనితీరుపై ఆటోమేటిక్ MTU గుర్తింపు ప్రభావాన్ని మేము తనిఖీ చేస్తాము:
TCP పనితీరుపై MTU ప్రభావం
UDPని ఉపయోగిస్తున్నప్పుడు మరింత పెద్ద గ్యాప్ కనుగొనబడింది:
UDP పనితీరుపై MTU ప్రభావం
పరీక్షల్లో వెల్లడైన భారీ పనితీరు ప్రభావం కారణంగా, మేము CNI నిర్వహణదారులందరికీ ఆశతో కూడిన లేఖను పంపాలనుకుంటున్నాము: దయచేసి CNIకి ఆటోమేటిక్ MTU గుర్తింపును జోడించండి. మీరు పిల్లులు, యునికార్న్లు మరియు అందమైన వాటిని కూడా సేవ్ చేస్తారు: చిన్న డెవోప్.
అయినప్పటికీ, మీరు ఆటోమేటిక్ MTU గుర్తింపుకు మద్దతు లేకుండా CNIని ఉపయోగించాల్సిన అవసరం ఉంటే, మీరు పనితీరును పొందడానికి మాన్యువల్గా దాన్ని కాన్ఫిగర్ చేయవచ్చు. ఇది కాలికో, కెనాల్ మరియు వీవ్నెట్లకు వర్తిస్తుందని దయచేసి గమనించండి.
సహచర CNIలకు నా చిన్న విన్నపం...
CNI పరీక్ష: రా డేటా
ఈ విభాగంలో, మేము CNIని సరైన MTUతో పోలుస్తాము (స్వయంచాలకంగా నిర్ణయించబడుతుంది లేదా మానవీయంగా సెట్ చేయబడుతుంది). గ్రాఫ్లలో ముడి డేటాను చూపించడం ఇక్కడ ప్రధాన లక్ష్యం.
రంగు పురాణం:
బూడిద - నమూనా (అనగా బేర్ ఇనుము)
ఆకుపచ్చ - 9500 Mbps పైన బ్యాండ్విడ్త్
పసుపు - 9000 Mbps పైన బ్యాండ్విడ్త్
నారింజ - 8000 Mbps పైన బ్యాండ్విడ్త్
ఎరుపు - బ్యాండ్విడ్త్ 8000 Mbps కంటే తక్కువ
నీలం - తటస్థ (బ్యాండ్విడ్త్కు సంబంధించినది కాదు)
నో-లోడ్ వనరుల వినియోగం
అన్నింటిలో మొదటిది, క్లస్టర్ "నిద్రలో" ఉన్నప్పుడు వనరుల వినియోగాన్ని తనిఖీ చేయండి.
నో-లోడ్ వనరుల వినియోగం
పాడ్-టు-పాడ్
క్లయింట్ పాడ్ దాని IP చిరునామాను ఉపయోగించి నేరుగా సర్వర్ పాడ్కి కనెక్ట్ అవుతుందని ఈ దృశ్యం ఊహిస్తుంది.
పాడ్-టు-పాడ్ దృశ్యం
TCP
పాడ్-టు-పాడ్ TCP ఫలితాలు మరియు సంబంధిత వనరుల వినియోగం:
UDP
పాడ్-టు-పాడ్ UDP ఫలితాలు మరియు సంబంధిత వనరుల వినియోగం:
పాడ్-టు-సర్వీస్
ఈ విభాగం నిజమైన వినియోగ కేసులకు సంబంధించినది, క్లయింట్ పాడ్ క్లస్టర్ఐపి సేవ ద్వారా సర్వర్ పాడ్కి కనెక్ట్ అవుతుంది.
పాడ్-టు-సర్వీస్ స్క్రిప్ట్
TCP
పాడ్-టు-సర్వీస్ TCP ఫలితాలు మరియు సంబంధిత వనరుల వినియోగం:
UDP
పాడ్-టు-సర్వీస్ UDP ఫలితాలు మరియు సంబంధిత వనరుల వినియోగం:
నెట్వర్క్ పాలసీ మద్దతు
పైన పేర్కొన్న అన్నింటిలో, రాజకీయాలకు మద్దతు ఇవ్వనిది ఫ్లాన్నెల్ మాత్రమే. మిగతావన్నీ ఇన్బౌండ్ మరియు అవుట్బౌండ్తో సహా నెట్వర్క్ విధానాలను సరిగ్గా అమలు చేస్తాయి. గొప్ప పని!
CNI ఎన్క్రిప్షన్
తనిఖీ చేయబడిన CNIలలో పాడ్ల మధ్య నెట్వర్క్ మార్పిడిని గుప్తీకరించగలవి ఉన్నాయి:
IPsecని ఉపయోగించే ఆంట్రియా
కాలికో వైర్గార్డ్ని ఉపయోగిస్తోంది
IPsec ఉపయోగించి సిలియం
IPsec ఉపయోగించి WeaveNet
సామర్థ్యాన్ని
తక్కువ CNIలు మిగిలి ఉన్నందున, అన్ని దృశ్యాలను ఒకే గ్రాఫ్లో ఉంచుదాం:
వనరుల వినియోగం
ఈ విభాగంలో, TCP మరియు UDPలో పాడ్-టు-పాడ్ కమ్యూనికేషన్ను ప్రాసెస్ చేస్తున్నప్పుడు ఉపయోగించే వనరులను మేము మూల్యాంకనం చేస్తాము. పాడ్-టు-సర్వీస్ గ్రాఫ్ని గీయడంలో ఎటువంటి ప్రయోజనం లేదు, ఎందుకంటే ఇది అదనపు సమాచారాన్ని అందించదు.
అన్నిటినీ కలిపి చూస్తే
అన్ని గ్రాఫ్లను పునరావృతం చేయడానికి ప్రయత్నిద్దాం, మేము ఇక్కడ కొద్దిగా ఆత్మాశ్రయతను పరిచయం చేసాము, వాస్తవ విలువలను “vwry fast”, “low” మొదలైన పదాలతో భర్తీ చేసాము.
ముగింపు మరియు నా ముగింపులు
ఇది కొంచెం ఆత్మాశ్రయమైనది, ఎందుకంటే నేను ఫలితాల గురించి నా స్వంత వివరణను తెలియజేస్తున్నాను.
కొత్త CNIలు కనిపించినందుకు నేను సంతోషిస్తున్నాను, ఆంట్రియా బాగా పనిచేసింది, అనేక విధులు ప్రారంభ సంస్కరణల్లో కూడా అమలు చేయబడ్డాయి: ఆటోమేటిక్ MTU గుర్తింపు, ఎన్క్రిప్షన్ మరియు సులభమైన ఇన్స్టాలేషన్.
మేము పనితీరును పోల్చినట్లయితే, Kube-OVN మరియు Kube-Router మినహా అన్ని CNIలు బాగా పని చేస్తాయి. Kube-Router కూడా MTUని గుర్తించలేకపోయింది, డాక్యుమెంటేషన్లో ఎక్కడా దాన్ని కాన్ఫిగర్ చేసే మార్గం నాకు కనిపించలేదు (ఇక్కడ ఈ అంశంపై అభ్యర్థన తెరవబడింది).
వనరుల వినియోగం పరంగా, Cilium ఇప్పటికీ ఇతరుల కంటే ఎక్కువ RAMని ఉపయోగిస్తుంది, అయితే తయారీదారు స్పష్టంగా పెద్ద క్లస్టర్లను లక్ష్యంగా చేసుకుంటాడు, ఇది మూడు-నోడ్ క్లస్టర్లో పరీక్ష వలె స్పష్టంగా లేదు. Kube-OVN కూడా చాలా CPU మరియు RAM వనరులను వినియోగిస్తుంది, కానీ ఇది ఓపెన్ vSwitch ఆధారంగా ఒక యువ CNI (ఆంట్రియా లాగా, ఇది మెరుగ్గా పని చేస్తుంది మరియు తక్కువ వినియోగిస్తుంది).
ఫ్లాన్నెల్ మినహా అందరికీ నెట్వర్క్ విధానాలు ఉన్నాయి. ఉడికించిన టర్నిప్ కంటే లక్ష్యం సరళమైనది కాబట్టి అతను వారికి ఎప్పటికీ మద్దతు ఇవ్వడు: తేలికైనది, మంచిది.
అలాగే, ఇతర విషయాలతోపాటు, ఎన్క్రిప్షన్ పనితీరు అద్భుతంగా ఉంది. కాలికో అనేది పురాతన CNIలలో ఒకటి, అయితే ఎన్క్రిప్షన్ కొన్ని వారాల క్రితం మాత్రమే జోడించబడింది. వారు IPsecకి బదులుగా వైర్గార్డ్ని ఎంచుకున్నారు మరియు సులభంగా చెప్పాలంటే, ఇది చాలా అద్భుతంగా మరియు అద్భుతంగా పని చేస్తుంది, ఈ పరీక్షలో ఇతర CNIలను పూర్తిగా మరుగు చేస్తుంది. వాస్తవానికి, ఎన్క్రిప్షన్ కారణంగా వనరుల వినియోగం పెరుగుతుంది, కానీ సాధించిన నిర్గమాంశ విలువైనదే (Calico రెండవ స్థానంలో ఉన్న Ciliumతో పోలిస్తే ఎన్క్రిప్షన్ పరీక్షలో ఆరు రెట్లు మెరుగుదల చూపించింది). అంతేకాకుండా, మీరు కాలికోను క్లస్టర్కి అమర్చిన తర్వాత ఎప్పుడైనా వైర్గార్డ్ని ప్రారంభించవచ్చు మరియు మీరు కోరుకుంటే కొద్దికాలం లేదా శాశ్వతంగా కూడా దాన్ని నిలిపివేయవచ్చు. ఇది చాలా సౌకర్యవంతంగా ఉంటుంది, అయితే! కాలికో ప్రస్తుతం MTUని స్వయంచాలకంగా గుర్తించడం లేదని మేము మీకు గుర్తు చేస్తున్నాము (ఈ ఫీచర్ భవిష్యత్ సంస్కరణల కోసం ప్రణాళిక చేయబడింది), కాబట్టి మీ నెట్వర్క్ జంబో ఫ్రేమ్లకు (MTU 9000) మద్దతు ఇస్తే MTUని కాన్ఫిగర్ చేయండి.
ఇతర విషయాలతోపాటు, Cilium క్లస్టర్ నోడ్ల మధ్య ట్రాఫిక్ను ఎన్క్రిప్ట్ చేయగలదని గమనించండి (మరియు కేవలం పాడ్ల మధ్య మాత్రమే కాదు), ఇది పబ్లిక్ క్లస్టర్ నోడ్లకు చాలా ముఖ్యమైనది.
ముగింపుగా, నేను ఈ క్రింది ఉపయోగ సందర్భాలను సూచిస్తున్నాను:
చాలా చిన్న క్లస్టర్ కోసం CNI అవసరం లేదా నాకు భద్రత అవసరం లేదు: పని ఒక దినుసు సన్నకంబళి, తేలికైన మరియు అత్యంత స్థిరమైన CNI (పురాణాల ప్రకారం అతను హోమో కుబెర్నాటస్ లేదా హోమో కాంటెటోరస్ చేత కనుగొనబడ్డాడు.) మీరు చాలా తెలివిగల ప్రాజెక్ట్పై కూడా ఆసక్తి కలిగి ఉండవచ్చు k3 సె, తనిఖీ!
సాధారణ క్లస్టర్ కోసం CNI అవసరం: కాలికో - మీ ఎంపిక, అయితే అవసరమైతే MTUని కాన్ఫిగర్ చేయడం మర్చిపోవద్దు. మీరు నెట్వర్క్ విధానాలతో సులభంగా మరియు సహజంగా ఆడవచ్చు, ఎన్క్రిప్షన్ని ఆన్ మరియు ఆఫ్ చేయవచ్చు.
(చాలా) పెద్ద స్థాయి క్లస్టర్ కోసం CNI అవసరం: సరే, పరీక్ష పెద్ద క్లస్టర్ల ప్రవర్తనను చూపించదు, పరీక్షలను నిర్వహించడం నాకు చాలా ఆనందంగా ఉంటుంది, కానీ మాకు 10Gbps కనెక్షన్తో వందలాది సర్వర్లు లేవు. కాబట్టి మీ నోడ్లలో కనీసం కాలికో మరియు సిలియంతో సవరించిన పరీక్షను అమలు చేయడం ఉత్తమ ఎంపిక.