Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)
ይህ የእኔ ዝመና ነው። ቀዳሚ መለኪያአሁን በKubernetes 1.14 ላይ ከቅርብ ጊዜው የCNI ስሪት ጋር ከኤፕሪል 2019 ጀምሮ ይሰራል።

በመጀመሪያ የሲሊየም ቡድንን ማመስገን እፈልጋለሁ፡ ወንዶቹ የመለኪያ መከታተያ ስክሪፕቶችን እንዳጣራ እና እንዳስተካክል ረድተውኛል።

ከኖቬምበር 2018 ጀምሮ ምን ተቀይሯል

ከዚያን ጊዜ ጀምሮ የተለወጠው ይኸውና (ከፍላጎትህ)

Flannel ፈጣኑ እና ቀላሉ የCNI በይነገጽ ሆኖ ይቆያል፣ ነገር ግን አሁንም የአውታረ መረብ ፖሊሲዎችን እና ምስጠራን አይደግፍም።

ሮማና ከአሁን በኋላ አይደገፍም፣ ስለዚህ ከቤንችማርክ አስወግደነዋል።

WeaveNet አሁን የአውታረ መረብ ፖሊሲዎችን ለ Ingress እና Egress ይደግፋል! ነገር ግን ምርታማነት ቀንሷል.

በካሊኮ ውስጥ አሁንም ከፍተኛውን የፓኬት መጠን (MTU) ለበለጠ አፈፃፀም እራስዎ ማዋቀር ያስፈልግዎታል። ካሊኮ CNI ን ለመጫን ሁለት አማራጮችን ይሰጣል ፣ ስለሆነም ያለ የተለየ ETCD ማከማቻ ማድረግ ይችላሉ ።

  • ሁኔታን በ Kubernetes ኤፒአይ ውስጥ እንደ የውሂብ ማከማቻ ማከማቸት (ክላስተር መጠን <50 ኖዶች);
  • በK8S API (ክላስተር መጠን > 50 ኖዶች) ላይ ያለውን ጭነት ለማቃለል ሁኔታን በ Kubernetes API እንደ የውሂብ ማከማቻ ከTypha ፕሮክሲ ጋር ማከማቸት።

Calico ድጋፍ አስታወቀ የመተግበሪያ ደረጃ ፖሊሲዎች ለትግበራ ደረጃ ደህንነት በ Istio አናት ላይ።

ሲሊየም አሁን ምስጠራን ይደግፋል! ሲሊየም ከአይፒሴክ ዋሻዎች ጋር ምስጠራን ያቀርባል እና ከተመሰጠረው WeaveNet አውታረ መረብ ሌላ አማራጭ ይሰጣል። ነገር ግን WeaveNet ምስጠራ ከነቃ ከሲሊየም የበለጠ ፈጣን ነው።

ሲሊየም አሁን አብሮ በተሰራው የ ETCD ኦፕሬተር ለማሰማራት ቀላል ሆኗል።

የሲሊየም ቡድን የማህደረ ትውስታ ፍጆታን እና የሲፒዩ ወጪዎችን በመቀነስ ከ CNI የተወሰነ ክብደትን ለመቀነስ ሞክሯል፣ ነገር ግን ተፎካካሪዎቹ አሁንም ቀላል ናቸው።

የቤንችማርክ አውድ

መለኪያው በ10 Gb ሱፐርሚክሮ ማብሪያ/ማብሪያ/ማብሪያ/ማብሪያ/ማብሪያ/ማስተካከያ በሦስት ምናባዊ ባልሆኑ ሱፐርሚክሮ አገልጋዮች ላይ ይሰራል። አገልጋዮቹ በቀጥታ ከመቀየሪያው ጋር በፓስቲቭ DAC SFP+ ኬብሎች የተገናኙ እና በተመሳሳይ VLAN ላይ ከጃምቦ ፍሬሞች (MTU 9000) ጋር የተዋቀሩ ናቸው።

Kubernetes 1.14.0 በኡቡንቱ 18.04 LTS ከDocker 18.09.2 ጋር ተጭኗል (በዚህ የተለቀቀው ነባሪ Docker ስሪት)።

እንደገና መባዛትን ለማሻሻል, ጌታውን ሁልጊዜ በመጀመሪያው መስቀለኛ መንገድ ላይ ለማዋቀር ወስነናል, የአገልጋዩን የቤንችማርክ ክፍል በሁለተኛው አገልጋይ ላይ እና የደንበኛውን ክፍል በሦስተኛው ላይ ያስቀምጡ. ይህንን ለማድረግ, NodeSelector በ Kubernetes ማሰማራት ውስጥ እንጠቀማለን.

የቤንችማርክ ውጤቶችን በሚከተለው ሚዛን እንገልጻለን፡

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)

ለቤንችማርክ CNI መምረጥ

ይህ በክፍል ውስጥ ካለው ዝርዝር ውስጥ ለ CNI ብቻ መለኪያ ነው። በ kubeadm አንድ ዋና ክላስተር ስለመፍጠር ኦፊሴላዊውን የኩበርኔትስ ሰነድ ይመልከቱ። ከ 9 CNI ዎች ውስጥ, 6 ቱን ብቻ እንወስዳለን: ለመጫን አስቸጋሪ የሆኑትን እና / ወይም ያለ ውቅር የማይሰሩትን እናስወግዳለን በሰነዱ (ሮማና, ኮንቲቭ-ቪፒፒ እና ጁኒፐር ኮንትራክታል / ቱንግስተን ጨርቅ).

የሚከተሉትን CNIs እናነፃፅራለን፡-

  • ካሊኮ v3.6
  • ካናል v3.6 (በዋናነት Flannel ለአውታረ መረብ + Calico እንደ ፋየርዎል)
  • ሲሊየም 1.4.2
  • Flannel 0.11.0
  • ኩቤ-ራውተር 0.2.5
  • WeaveNet 2.5.1

ቅንብር

የ CNI መጫን ቀላል ነው, የእኛ የመጀመሪያ ግንዛቤ የተሻለ ይሆናል. ከቤንችማርክ ሁሉም CNIዎች ለመጫን በጣም ቀላል ናቸው (በአንድ ወይም ሁለት ትዕዛዞች)።

እንደተናገርነው፣ አገልጋዮቹ እና ማብሪያዎቹ የተዋቀሩ ከጃምቦ ፍሬሞች ጋር ነው (MTU ን ወደ 9000 እናስቀምጣለን)። CNI በአመቻቾች ውቅር ላይ በመመስረት MTU ን በራስ-ሰር ከወሰነ ደስተኞች ነን። ነገር ግን ይህንን የተቆጣጠሩት ሲሊየም እና ፍላኔል ብቻ ናቸው። የተቀሩት CNIs አውቶማቲክ MTU ግኝትን ለመጨመር በ GitHub ላይ ጥያቄዎች አሏቸው፣ ነገር ግን ConfigMap ለ Calico፣ Canal እና Kube-router በመቀየር ወይም የአካባቢ ተለዋዋጭ ለWeaveNet በማለፍ እናዋቅረዋለን።

የተሳሳተ MTU ችግር ምንድነው? ይህ ሥዕላዊ መግለጫ በWeaveNet በነባሪ MTU እና በጃምቦ ፍሬሞች መካከል ያለውን ልዩነት ያሳያል፡-

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)
MTU በግብአት ላይ ምን ተጽዕኖ ያሳድራል?

MTU ለአፈጻጸም ምን ያህል አስፈላጊ እንደሆነ አይተናል፣ አሁን የእኛ CNIs እንዴት በራስ-ሰር እንደሚወስኑት እንይ፡-

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)
CNI በራስ-ሰር MTU ን ያገኛል

ግራፉ እንደሚያሳየው MTU ን ለ Calico, Canal, Kube-router እና WeaveNet ን ለተሻለ አፈፃፀም ማዋቀር ያስፈልግዎታል. ሲሊየም እና ፍላኔል MTU ን እራሳቸውን ያለምንም ቅንጅቶች በትክክል መወሰን ችለዋል።

ደህንነት

የ CNI ደህንነትን በሁለት ገፅታዎች እናነፃፅራለን-የተላለፈ መረጃን የማመስጠር ችሎታ እና የ Kubernetes አውታረ መረብ ፖሊሲዎችን መተግበር (በእውነተኛ ሙከራዎች ላይ የተመሰረተ እንጂ በሰነድ አይደለም)።

ሁለት CNIዎች ብቻ መረጃን ያመሰጥሩ፡ሲሊየም እና ዌቭኔት። ምስጠራ WeaveNet የኢንክሪፕሽን ይለፍ ቃል እንደ CNI አካባቢ ተለዋዋጭ በማዘጋጀት የነቃ። ውስጥ ሰነድ WeaveNet ውስብስብ በሆነ መንገድ ይገልፃል, ነገር ግን ሁሉም ነገር በቀላሉ ይከናወናል. ምስጠራ ሲሊየም በትእዛዞች የተዋቀረ፣ የኩበርኔትስ ሚስጥሮችን በመፍጠር እና በ daemonSet ማሻሻያ (ከWeaveNet ትንሽ የበለጠ የተወሳሰበ ቢሆንም ሲሊየም ደረጃ በደረጃ አለው። መመሪያዎች).

የኔትወርክ ፖሊሲ አተገባበርን በተመለከተም ተሳክቶላቸዋል Calico, Canal, Cilium እና WeaveNet, በውስጡ የ Ingress እና Egress ደንቦችን ማዋቀር ይችላሉ. ለ ኩቤ-ራውተር ለ Ingress ብቻ ደንቦች አሉ, እና Flannel ምንም የአውታረ መረብ ፖሊሲዎች በጭራሽ የሉም።

አጠቃላይ ውጤቶቹ እነሆ፡-

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)
የደህንነት አፈጻጸም ቤንችማርክ ውጤቶች

ምርታማነት

ይህ መመዘኛ በእያንዳንዱ የፈተና ጊዜ ቢያንስ በሶስት ጊዜ አማካይ የውጤት መጠን ያሳያል። የTCP እና UDP (Iperf3ን በመጠቀም)፣ እንደ HTTP ያሉ እውነተኛ አፕሊኬሽኖች (በNginx እና curl) ወይም FTP (ከ vsftpd እና curl) እና በመጨረሻም የመተግበሪያ አፈጻጸምን በSCP ላይ የተመሰረተ ምስጠራን (ደንበኛ እና አገልጋይ OpenSSHን በመጠቀም) እንፈትሻለን።

ለሁሉም ሙከራዎች፣ የCNI አፈጻጸምን ከአገርኛ አውታረ መረብ አፈጻጸም ጋር ለማነፃፀር ባዶ የብረት መለኪያ (አረንጓዴ መስመር) አድርገናል። እዚህ ተመሳሳይ መለኪያ እንጠቀማለን, ግን በቀለም:

  • ቢጫ = በጣም ጥሩ
  • ብርቱካን = ጥሩ
  • ሰማያዊ = እንዲሁ - እንዲሁ
  • ቀይ = መጥፎ

በስህተት የተዋቀሩ CNIዎችን አንወስድም እና ለ CNIዎች ትክክለኛውን MTU ብቻ እናሳያለን። (ማስታወሻ፡ ሲሊየም ኢንክሪፕሽንን ካነቃቁ ኤምቲዩን በትክክል አያሰላም፣ ስለዚህ MTU ን በራስ 8900 ወደ 1.4 መቀነስ አለቦት። የሚቀጥለው እትም 1.5፣ ይህን በራስ ሰር ያደርገዋል።)

ውጤቶቹ እነሆ፡-

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)
TCP አፈጻጸም

ሁሉም CNIዎች በTCP ቤንችማርክ ውስጥ ጥሩ አፈጻጸም አሳይተዋል። ምስጠራ ውድ ስለሆነ CNI ከማመስጠር ጋር ወደ ኋላ ቀርቷል።

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)
የ UDP አፈጻጸም

እዚህ ደግሞ ሁሉም CNIዎች ጥሩ እየሰሩ ነው። CNI ከማመስጠር ጋር ተመሳሳይ ውጤት አሳይቷል። ሲሊየም ከውድድሩ በስተጀርባ ትንሽ ነው, ነገር ግን ከባዶ ብረት 2,3% ብቻ ነው, ስለዚህ መጥፎ ውጤት አይደለም. ሲሊየም እና ፍላኔል ብቻ MTU ን በትክክል እንደወሰኑ አይርሱ ፣ እና እነዚህ ያለ ተጨማሪ ውቅር ውጤቶቻቸው ናቸው።

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)

ስለ እውነተኛ መተግበሪያስ? እንደሚመለከቱት፣ አጠቃላይ የኤችቲቲፒ አፈጻጸም ከTCP በትንሹ ያነሰ ነው። ኤችቲቲፒን ከTCP ጋር ብትጠቀምም በHTCP ቤንችማርክ ውስጥ የኤችቲቲፒ ቤንችማርክን የሚጎዳ ቀርፋፋ ጅምርን ለማስወገድ iperf3ን አዋቅረነዋል። እዚህ ሁሉም ሰው ጥሩ ስራ ሰርቷል። Kube-router ግልጽ የሆነ ጥቅም አለው, ነገር ግን WeaveNet ጥሩ ውጤት አላመጣም: ከባዶ ብረት 20% የከፋ ነው. ሲሊየም እና ዌቭኔት ከምስጠራ ጋር በጣም የሚያሳዝኑ ይመስላሉ።

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)

በኤፍቲፒ፣ ሌላ በTCP ላይ የተመሰረተ ፕሮቶኮል፣ ውጤቶቹ ይለያያሉ። ፍላኔል እና ኩቤ-ራውተር ስራውን ያከናውናሉ, ነገር ግን ካሊኮ, ካናል እና ሲሊየም ትንሽ ከኋላ ናቸው እና ከባዶ ብረት 10% ቀርፋፋ ናቸው. WeaveNet በ 17% ያህል ኋላ ቀርቷል፣ ግን ኢንክሪፕት የተደረገው WeaveNet ከተመሰጠረ ሲሊየም በ40% ይበልጣል።

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)

በSCP አማካኝነት የኤስኤስኤች ምስጠራ ምን ያህል እንደሚያስወጣን ወዲያውኑ ማየት እንችላለን። ሁሉም ማለት ይቻላል CNIs ጥሩ እየሰሩ ነው፣ ነገር ግን WeaveNet እንደገና ወደ ኋላ ቀርቷል። ሲሊየም እና ዌቭኔት ከምስጠራ ጋር በድርብ ምስጠራ (SSH + CNI) ምክንያት በጣም መጥፎ ናቸው ተብሎ ይጠበቃል።

ውጤቱን የያዘ ማጠቃለያ ሰንጠረዥ ይኸውና፡-

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)

የሀብት ፍጆታ

አሁን CNI በከባድ ሸክሞች (በTCP ሽግግር ወቅት፣ 10 Gbps) ሃብቶችን እንዴት እንደሚጠቀም እናወዳድር። በአፈፃፀም ሙከራዎች CNI ን ከባዶ ብረት (አረንጓዴ መስመር) ጋር እናነፃፅራለን። ለንብረት ፍጆታ፣ ንፁህ Kubernetes (ሐምራዊ መስመር) ያለ CNI እናሳይ እና CNI ምን ያህል ተጨማሪ ሃብቶችን እንደሚጠቀም እንይ።

በማስታወስ እንጀምር። በሚተላለፉበት ጊዜ በሜባ ውስጥ ያለው የአንጓዎች ራም (ማቋቋሚያ እና መሸጎጫ ሳይጨምር) አማካይ ዋጋ እዚህ አለ።

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)
የማህደረ ትውስታ ፍጆታ

Flannel እና Kube-ራውተር ጥሩ ውጤት አሳይተዋል - 50 ሜባ ብቻ። ካሊኮ እና ካናል እያንዳንዳቸው 70. WeaveNet በግልፅ ከሌሎቹ የበለጠ ፍጆታ አላቸው - 130 ሜባ ፣ እና ሲሊየም እስከ 400 ድረስ ይጠቀማል።
አሁን የሲፒዩውን ጊዜ ፍጆታ እንፈትሽ። ትኩረት የሚስብሥዕላዊ መግለጫው በመቶኛ አይደለም ፣ ግን ppm ፣ ማለትም ፣ 38 ፒፒኤም ለ “ባዶ ብረት” 3,8% ነው። ውጤቶቹ እነሆ፡-

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)
የሲፒዩ ፍጆታ

Calico, Canal, Flannel እና Kube-router በጣም ውጤታማ ሲፒዩ ናቸው - CNI ከሌለው Kubernetes 2% ብቻ ይበልጣል። WeaveNet በ 5% ተጨማሪ ወደ ኋላ ቀርቷል ፣ሲሊየም በ 7% ይከተላል።

የሀብት ፍጆታ ማጠቃለያ ይኸውና፡-

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)

ውጤቶች

ከሁሉም ውጤቶች ጋር ሰንጠረዥ:

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)
አጠቃላይ ቤንችማርክ ውጤቶች

መደምደሚያ

በመጨረሻው ክፍል በውጤቶቹ ላይ የእኔን ተጨባጭ አስተያየት እገልጻለሁ. ያስታውሱ ይህ ማመሳከሪያ የአንድ ነጠላ ግኑኝነትን መጠን የሚፈትነው በጣም ትንሽ ዘለላ (3 ኖዶች) ላይ ብቻ ነው። ለትልቅ ዘለላዎች (<50 nodes) ወይም ትይዩ ግንኙነቶችን አይመለከትም።

እንደ ሁኔታው ​​የሚከተሉትን CNIs እንድትጠቀም እመክራለሁ።

  • በክላስተርህ ውስጥ አለህ ጥቂት ሀብቶች ያላቸው አንጓዎች (በርካታ ጂቢ ራም ፣ በርካታ ኮሮች) እና የደህንነት ባህሪዎች አያስፈልጉዎትም - ይምረጡ Flannel. ይህ በጣም ወጪ ቆጣቢ CNIs አንዱ ነው። እና ከተለያዩ ስነ-ህንፃዎች (amd64፣ ክንድ፣ ክንድ64፣ ወዘተ) ጋር ተኳሃኝ ነው። በተጨማሪም, ይህ ከሁለቱ አንዱ ነው (ሌላኛው Cilium) CNI በራስ-ሰር MTU ን ሊወስን ይችላል, ስለዚህ ምንም ነገር ማዋቀር የለብዎትም. Kube-router እንዲሁ ተስማሚ ነው, ግን እንደ መደበኛ አይደለም እና MTU ን እራስዎ ማዋቀር ያስፈልግዎታል.
  • አስፈላጊ ከሆነ አውታረ መረቡን ማመስጠር ለደህንነት, ይውሰዱ WeaveNet. የጃምቦ ፍሬሞችን እየተጠቀሙ ከሆነ የMTU መጠንን መግለጽዎን አይርሱ፣ እና በአከባቢ ተለዋዋጭ በኩል የይለፍ ቃል በመግለጽ ምስጠራን ማንቃት። ግን ስለ አፈፃፀም መርሳት ይሻላል - ይህ የኢንክሪፕሽን ዋጋ ነው።
  • መደበኛ አጠቃቀም советую ካሊኮ. ይህ CNI በተለያዩ የኩበርኔትስ ማሰማሪያ መሳሪያዎች (Kops, Kubespray, Rancher, ወዘተ) ውስጥ በስፋት ጥቅም ላይ ይውላል. እንደ WeaveNet፣ የጃምቦ ፍሬሞችን ከተጠቀሙ በ ConfigMap ውስጥ MTU ን ማዋቀርዎን ያረጋግጡ። ከሀብት ፍጆታ፣ ከአፈጻጸም እና ከደህንነት አንፃር ቀልጣፋ የሆነ ባለብዙ-ተግባር መሳሪያ ነው።

እና በመጨረሻም እድገቱን እንድትከተሉ እመክራችኋለሁ ሲሊየም. ይህ CNI በምርታቸው (ባህሪያት፣ ሃብት ቁጠባ፣ አፈጻጸም፣ ደህንነት፣ ስብስብ...) ላይ ብዙ የሚሰራ በጣም ንቁ ቡድን አለው እና በጣም አስደሳች እቅዶች አሏቸው።

Kubernetes Networking Plugin (CNI) Benchmark ከ10 Gbps አውታረ መረብ በላይ ውጤቶች (በኤፕሪል 2019 የዘመነ)
ለ CNI ምርጫ የእይታ ንድፍ

ምንጭ: hab.com

አስተያየት ያክሉ