10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

TL; ඩී: ස්වයංක්‍රීය MTU හඳුනාගැනීම් හැර, Kube-Router සහ Kube-OVN, Calico හැර, සියලුම CNI ඒවා කළ යුතු ආකාරයට ක්‍රියා කරයි.

මගේ අතීත චෙක්පත් වල ලිපි යාවත්කාලීන කිරීම (2018 и 2019), පරීක්ෂා කරන අවස්ථාවේ මම Ubuntu 1.19 හි Kubernetes 18.04 භාවිතා කරන්නේ 2020 අගෝස්තු වන විට යාවත්කාලීන කරන ලද CNIs සමඟයි.

අපි මිනුම් වලට කිමිදීමට පෙර...

2019 අප්‍රේල් සිට අලුත් මොනවාද?

  • ඔබගේම පොකුරේ පරික්ෂා කළ හැක: අපගේ මෙවලම භාවිතයෙන් ඔබට ඔබගේම පොකුරේ පරීක්ෂණ ධාවනය කළ හැක Kubernetes ජාල මිණුම් ලකුණ: knb
  • නව සාමාජිකයින් පෙනී සිටියහ
  • නව අවස්ථා: වත්මන් චෙක්පත් "Pod-to-Pod" ජාල කාර්ය සාධන පරීක්ෂණ ධාවනය කරන අතර, සැබෑ ලෝක තත්ත්වයන්ට සමීපව පරීක්ෂණ ධාවනය කරන නව "Pod-to-Service" ස්ක්‍රිප්ට් එකක් එක් කර ඇත. ප්‍රායෝගිකව, API සමඟින් ඔබේ Pod ක්‍රියා කරන්නේ සේවාවක් ලෙස පදනම සමඟ මිස Pod ip ලිපිනය හරහා නොවේ (ඇත්ත වශයෙන්ම අපි අවස්ථා දෙකටම TCP සහ UDP යන දෙකම පරීක්ෂා කරමු).
  • සම්පත් පරිභෝජනය: දැන් සෑම පරීක්ෂණයකටම තමන්ගේම සම්පත් සංසන්දනයක් ඇත
  • යෙදුම් පරීක්ෂණ ඉවත් කිරීම: ප්‍රජාව සමඟ අපගේ ඵලදායි සහයෝගීතාවය ලෙස අපි තවදුරටත් HTTP, FTP සහ SCP පරීක්ෂණ සිදු නොකරන අතර CNI නඩත්තු කරන්නන් CNI ආරම්භයේ ප්‍රමාදයක් හේතුවෙන් TCP සහ curl ප්‍රතිඵල අතර පරතරයක් සොයාගෙන ඇත (Pod හි පළමු තත්පර කිහිපය). ආරම්භක, සැබෑ තත්වයන් තුළ සාමාන්ය නොවේ).
  • විවෘත මූලාශ්‍රය: සියලුම පරීක්ෂණ මූලාශ්‍ර (ස්ක්‍රිප්ට්, yml සැකසුම් සහ මුල් “අමු” දත්ත) තිබේ මෙහි

විමර්ශන පරීක්ෂණ ප්‍රොටෝකෝලය

ප්රොටෝකෝලය විස්තරාත්මකව විස්තර කර ඇත මෙහිමෙම ලිපිය Ubuntu 18.04 පෙරනිමි කර්නලය සමඟ බව කරුණාවෙන් සලකන්න.

ඇගයීම සඳහා CNI තෝරා ගැනීම

මෙම පරීක්ෂණය එක් yaml ගොනුවක් සමඟ වින්‍යාස කර ඇති CNI සංසන්දනය කිරීම අරමුණු කර ගෙන ඇත (එබැවින්, VPP සහ වෙනත් වැනි ස්ක්‍රිප්ට් මඟින් ස්ථාපනය කර ඇති සියල්ල බැහැර කර ඇත).

සැසඳීම සඳහා අපගේ තෝරාගත් CNI:

  • Antrea v.0.9.1
  • කැලිකෝ v3.16
  • Canal v3.16 (Flannel network + Calico Network Policies)
  • සිලියම් 1.8.2
  • ෆ්ලැනෙල් 0.12.0
  • Kube-router නවතම (2020-08-25)
  • WeaveNet 2.7.0

CNI සඳහා MTU වින්‍යාස කිරීම

පළමුවෙන්ම, අපි TCP කාර්ය සාධනය මත ස්වයංක්‍රීය MTU හඳුනාගැනීමේ බලපෑම පරීක්ෂා කරමු:

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

TCP කාර්ය සාධනය මත MTU හි බලපෑම

UDP භාවිතා කරන විට ඊටත් වඩා විශාල පරතරයක් දක්නට ලැබේ:

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)
UDP කාර්ය සාධනය මත MTU හි බලපෑම

පරීක්ෂණ වලදී අනාවරණය වූ දැවැන්ත කාර්ය සාධන බලපෑම අනුව, අපි සියලුම CNI නඩත්තු කරන්නන් වෙත බලාපොරොත්තුවේ ලිපියක් යැවීමට කැමැත්තෙමු: කරුණාකර CNI වෙත ස්වයංක්‍රීය MTU හඳුනාගැනීම එක් කරන්න. ඔබ පූස් පැටවුන්, යුනිකෝන් සහ ලස්සනම එක පවා සුරකිනු ඇත: කුඩා ඩෙවොප්.

කෙසේ වෙතත්, ඔබට ස්වයංක්‍රීය MTU හඳුනාගැනීම සඳහා සහය නොමැතිව CNI භාවිතා කිරීමට අවශ්‍ය නම්, කාර්ය සාධනය ලබා ගැනීම සඳහා ඔබට එය අතින් වින්‍යාසගත කළ හැක. මෙය Calico, Canal සහ WeaveNet සඳහා අදාළ වන බව කරුණාවෙන් සලකන්න.

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)
මේ සමඟ සිටින CNIs වෙත මගේ කුඩා ඉල්ලීම...

CNI පරීක්ෂණ: අමු දත්ත

මෙම කොටසේදී, අපි CNI නිවැරදි MTU සමඟ සංසන්දනය කරමු (ස්වයංක්‍රීයව තීරණය කර හෝ අතින් සකසා ඇත). මෙහි ප්‍රධාන අරමුණ වන්නේ ප්‍රස්ථාරවල අමු දත්ත පෙන්වීමයි.

වර්ණ පුරාවෘත්තය:

  • අළු - නියැදිය (එනම් හිස් යකඩ)
  • කොළ - කලාප පළල 9500 Mbps ට වැඩි
  • කහ - කලාප පළල 9000 Mbps ට වැඩි
  • තැඹිලි - කලාප පළල 8000 Mbps ට වැඩි
  • රතු - කලාප පළල 8000 Mbps ට අඩු
  • නිල් - උදාසීන (කලාප පළලට සම්බන්ධ නොවේ)

බරක් නැති සම්පත් පරිභෝජනය

පළමුවෙන්ම, පොකුර "නින්ද" ඇති විට සම්පත් පරිභෝජනය පරීක්ෂා කරන්න.

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)
බරක් නැති සම්පත් පරිභෝජනය

Pod-to-Pod

මෙම අවස්ථාව උපකල්පනය කරන්නේ සේවාදායක Pod එහි IP ලිපිනය භාවිතයෙන් සේවාදායක Pod වෙත කෙලින්ම සම්බන්ධ වන බවයි.

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)
Pod-to-Pod දර්ශනය

TCP

Pod-to-Pod TCP ප්රතිඵල සහ අනුරූප සම්පත් පරිභෝජනය:

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

UDP

Pod-to-Pod UDP ප්රතිඵල සහ අනුරූප සම්පත් පරිභෝජනය:

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

Pod-to-service

මෙම කොටස සැබෑ භාවිත අවස්ථා සඳහා අදාළ වේ, සේවාදායක Pod ClusterIP සේවාව හරහා සේවාදායක Pod වෙත සම්බන්ධ වේ.

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)
Pod-to-service Script

TCP

Pod-to-Service TCP ප්රතිඵල සහ අනුරූප සම්පත් පරිභෝජනය:

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

UDP

Pod-to-Service UDP ප්රතිඵල සහ අනුරූප සම්පත් පරිභෝජනය:

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

ජාල ප්‍රතිපත්ති සහාය

ඉහත සියල්ල අතර දේශපාලනයට සහාය නොදක්වන එකම තැනැත්තා ෆ්ලැනෙල් ය. අනෙකුත් සියලුම දෙනා ඇතුල්වීම සහ පිටතට යන ඇතුළුව ජාල ප්‍රතිපත්ති නිවැරදිව ක්‍රියාත්මක කරයි. නියම වැඩක්!

CNI සංකේතනය

පරීක්ෂා කරන ලද CNIs අතර Pods අතර ජාල හුවමාරුව සංකේතනය කළ හැකි ඒවා තිබේ:

  • IPsec භාවිතා කරන Antrea
  • වයර්ගාඩ් භාවිතා කරන කැලිකෝ
  • IPsec භාවිතා කරන Cilium
  • WeaveNet IPsec භාවිතා කරයි

ප්‍රතිදානය

CNIs අඩුවෙන් ඉතිරිව ඇති බැවින්, අපි සියලු අවස්ථා එක ප්‍රස්ථාරයකට දමමු:

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

සම්පත් පරිභෝජනය

මෙම කොටසේදී, අපි TCP සහ UDP හි Pod-to-Pod සන්නිවේදනය සැකසීමේදී භාවිතා කරන සම්පත් ඇගයීමට ලක් කරන්නෙමු. අමතර තොරතුරු සපයන්නේ නැති නිසා Pod-to-Service ප්‍රස්තාරයක් ඇඳීමේ තේරුමක් නැත.

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

එකට ඒ සියල්ල දමා

අපි සියලු ප්‍රස්ථාර නැවත කිරීමට උත්සාහ කරමු, අපි මෙහි කුඩා ආත්මීයත්වයක් හඳුන්වා දුන්නෙමු, සත්‍ය අගයන් “vwry fast”, “low” යනාදී වචන සමඟ ප්‍රතිස්ථාපනය කරන්න.

10G ජාලය හරහා Kubernetes සඳහා CNI කාර්ය සාධන තක්සේරුව (අගෝස්තු 2020)

නිගමනය සහ මගේ නිගමන

මෙය ටිකක් ආත්මීයයි, මන්ද මම ප්‍රතිඵල පිළිබඳ මගේම අර්ථකථනය ඉදිරිපත් කරමි.

නව CNIs දර්ශනය වීම ගැන මම සතුටු වෙමි, Antrea හොඳින් ක්‍රියාත්මක විය, මුල් අනුවාද වල පවා බොහෝ කාර්යයන් ක්‍රියාත්මක විය: ස්වයංක්‍රීය MTU හඳුනාගැනීම, සංකේතනය සහ පහසු ස්ථාපනය.

අපි කාර්ය සාධනය සංසන්දනය කරන්නේ නම්, Kube-OVN සහ Kube-Router හැර අනෙකුත් සියලුම CNI හොඳින් ක්‍රියා කරයි. Kube-Router හට MTU හඳුනා ගැනීමට ද නොහැකි විය, ලේඛනයේ කොතැනකවත් එය වින්‍යාස කිරීමට ක්‍රමයක් මට හමු නොවීය (මෙහි මෙම මාතෘකාව පිළිබඳ ඉල්ලීමක් විවෘතයි).

සම්පත් පරිභෝජනය සම්බන්ධයෙන් ගත් කල, Cilium තවමත් අනෙක් ඒවාට වඩා RAM භාවිතා කරයි, නමුත් නිෂ්පාදකයා පැහැදිලිවම විශාල පොකුරු ඉලක්ක කරයි, එය පැහැදිලිවම ත්‍රි-නෝඩ් පොකුරක් මත පරීක්ෂණයකට සමාන නොවේ. Kube-OVN ද CPU සහ RAM සම්පත් විශාල ප්‍රමාණයක් පරිභෝජනය කරයි, නමුත් එය Open vSwitch මත පදනම් වූ තරුණ CNI වේ (Antrea වැනි, එය වඩා හොඳින් ක්‍රියා කරයි සහ අඩු පරිභෝජනය කරයි).

Flannel හැර අනෙක් සියල්ලන්ටම ජාල ප්‍රතිපත්ති ඇත. තැම්බූ ටර්නිප් එකකට වඩා ඉලක්කය සරල බැවින් ඔහු කිසි විටෙකත් ඔවුන්ට සහාය නොදක්වයි: සැහැල්ලු, වඩා හොඳය.

එසේම, වෙනත් දේ අතර, සංකේතාංකන කාර්ය සාධනය විශ්මයජනකයි. Calico යනු පැරණිතම CNI වලින් එකකි, නමුත් සංකේතනය එක් කරන ලද්දේ සති කිහිපයකට පෙර පමණි. ඔවුන් IPsec වෙනුවට වයර්ගාඩ් තෝරා ගත් අතර, සරලව කිවහොත්, එය විශිෂ්ට හා විශ්මයජනක ලෙස ක්‍රියා කරයි, මෙම පරීක්ෂණයේ මෙම කොටසේ අනෙකුත් CNIs සම්පූර්ණයෙන්ම ග්‍රහණය කරයි. ඇත්ත වශයෙන්ම, සංකේතනය හේතුවෙන් සම්පත් පරිභෝජනය වැඩි වේ, නමුත් ලබා ගත් ප්‍රතිදානය එය වටී (Calico දෙවන ස්ථානයේ සිටින Cilium හා සසඳන විට සංකේතාංකන පරීක්ෂණයේ හය ගුණයක දියුණුවක් පෙන්නුම් කළේය). එපමනක් නොව, ඔබ Calico පොකුරට යෙදවීමෙන් පසු ඔබට ඕනෑම අවස්ථාවක Wireguard සක්‍රීය කළ හැකි අතර, ඔබට අවශ්‍ය නම් එය කෙටි කාලයකට හෝ ස්ථිරව අක්‍රිය කිරීමටද හැකිය. එය ඇදහිය නොහැකි තරම් පහසුයි, නමුත්! Calico දැනට MTU ස්වයංක්‍රීයව හඳුනා නොගන්නා බව අපි ඔබට මතක් කරමු (මෙම විශේෂාංගය අනාගත අනුවාද සඳහා සැලසුම් කර ඇත), එබැවින් ඔබේ ජාලය Jumbo Frames (MTU 9000) සඳහා සහය දක්වන්නේ නම් MTU වින්‍යාස කිරීමට වග බලා ගන්න.

වෙනත් දේ අතර, Cilium හට පොකුරු නෝඩ් අතර (සහ Pods අතර පමණක් නොව) ගමනාගමනය සංකේතනය කළ හැකි බව සලකන්න, එය පොදු පොකුරු නෝඩ් සඳහා ඉතා වැදගත් විය හැකිය.

අවසාන වශයෙන්, මම පහත භාවිත අවස්ථා යෝජනා කරමි:

  • ඉතා කුඩා පොකුරක් සඳහා CNI අවශ්‍යයි නැතහොත් මට ආරක්ෂාව අවශ්‍ය නොවේ: සමඟ වැඩ කරන්න ෆ්ලැනෙල්, සැහැල්ලුම සහ වඩාත්ම ස්ථායී CNI (පුරාවෘත්තයට අනුව ඔහු හෝමෝ කුබර්නාටස් හෝ හෝමෝ කොන්ටේටෝරස් විසින් සොයා ගන්නා ලද පැරණිතම එකකි.) ඔබ වඩාත් දක්ෂ ව්යාපෘතිය ගැනද උනන්දු විය හැකිය k3s, චෙක් පත!
  • සාමාන්‍ය පොකුරක් සඳහා CNI අවශ්‍ය වේ: කැලිකෝ - ඔබේ තේරීම, නමුත් අවශ්‍ය නම් MTU වින්‍යාස කිරීමට අමතක නොකරන්න. ඔබට පහසුවෙන් සහ ස්වභාවිකව ජාල ප්‍රතිපත්ති සමඟ සෙල්ලම් කළ හැකිය, සංකේතනය සක්‍රිය සහ අක්‍රිය කරන්න, යනාදිය.
  • (ඉතා) මහා පරිමාණ පොකුරක් සඳහා CNI අවශ්‍යයි: හොඳයි, පරීක්ෂණය විශාල පොකුරු වල හැසිරීම නොපෙන්වයි, පරීක්ෂණ පැවැත්වීමට මම සතුටු වනු ඇත, නමුත් අපට 10Gbps සම්බන්ධතාවයක් සහිත සේවාදායකයන් සිය ගණනක් නොමැත. එබැවින් හොඳම විකල්පය වන්නේ අවම වශයෙන් Calico සහ Cilium සමඟ ඔබේ නෝඩ් වල නවීකරණය කරන ලද පරීක්ෂණයක් පැවැත්වීමයි.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න