10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)

TL; ডিআর: কুবে-রাউটার এবং কুবে-ওভিএন, ক্যালিকো বাদে, স্বয়ংক্রিয় MTU সনাক্তকরণ ব্যতীত, সমস্ত সিএনআই তাদের উচিত হিসাবে কাজ করে।

আমার অতীত চেকের নিবন্ধ-আপডেট (2018 и 2019), পরীক্ষার সময় আমি উবুন্টু 1.19 এ কুবারনেটস 18.04 ব্যবহার করছি আগস্ট 2020 পর্যন্ত আপডেট হওয়া CNI-এর সাথে।

আমরা মেট্রিক্সে ডুব দেওয়ার আগে...

এপ্রিল 2019 থেকে নতুন কি?

  • আপনার নিজের ক্লাস্টারে পরীক্ষা করতে পারেন: আপনি আমাদের টুল ব্যবহার করে আপনার নিজের ক্লাস্টারে পরীক্ষা চালাতে পারেন কুবারনেটস নেটওয়ার্ক বেঞ্চমার্ক: knb
  • নতুন সদস্যরা হাজির হয়েছে
  • নতুন পরিস্থিতি: বর্তমান চেকগুলি "পড-টু-পড" নেটওয়ার্ক কর্মক্ষমতা পরীক্ষা চালায় এবং একটি নতুন "পড-টু-সার্ভিস" স্ক্রিপ্ট যোগ করা হয়েছে যা বাস্তব-বিশ্বের অবস্থার কাছাকাছি পরীক্ষা চালায়। অনুশীলনে, API এর সাথে আপনার Pod একটি পরিষেবা হিসাবে বেসের সাথে কাজ করে, এবং Pod ip ঠিকানার মাধ্যমে নয় (অবশ্যই আমরা উভয় পরিস্থিতির জন্য TCP এবং UDP উভয়ই পরীক্ষা করি)।
  • সম্পদ খরচ: প্রতিটি পরীক্ষার এখন নিজস্ব সম্পদ তুলনা আছে
  • অ্যাপ্লিকেশন পরীক্ষাগুলি সরানো হচ্ছে: আমরা আর এইচটিটিপি, এফটিপি এবং এসসিপি পরীক্ষা করি না কারণ সম্প্রদায় এবং সিএনআই রক্ষণাবেক্ষণকারীদের সাথে আমাদের ফলপ্রসূ সহযোগিতা CNI স্টার্টআপে বিলম্বের কারণে (পডের প্রথম কয়েক সেকেন্ড) টিসিপি এবং কার্ল ফলাফলের তুলনায় 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)
  • উইভনেট 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 ব্যবহার করতে হয়, আপনি কর্মক্ষমতা পেতে ম্যানুয়ালি কনফিগার করতে পারেন। দয়া করে মনে রাখবেন যে এটি ক্যালিকো, খাল এবং ওয়েভনেটের ক্ষেত্রে প্রযোজ্য।

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)
সাথে থাকা সিএনআইদের কাছে আমার ছোট্ট অনুরোধ...

সিএনআই পরীক্ষা: কাঁচা ডেটা

এই বিভাগে, আমরা সঠিক MTU (স্বয়ংক্রিয়ভাবে বা ম্যানুয়ালি সেট) এর সাথে CNI তুলনা করব। এখানে মূল লক্ষ্য হল গ্রাফে কাঁচা তথ্য দেখানো।

রঙের কিংবদন্তি:

  • ধূসর - নমুনা (অর্থাৎ খালি লোহা)
  • সবুজ - 9500 Mbps এর উপরে ব্যান্ডউইথ
  • হলুদ - 9000 Mbps এর উপরে ব্যান্ডউইথ
  • কমলা - 8000 Mbps এর উপরে ব্যান্ডউইথ
  • লাল - 8000 Mbps এর নিচে ব্যান্ডউইথ
  • নীল - নিরপেক্ষ (ব্যান্ডউইথের সাথে সম্পর্কিত নয়)

নো-লোড সম্পদ খরচ

প্রথমত, যখন ক্লাস্টার "ঘুমাচ্ছে" তখন সম্পদের ব্যবহার পরীক্ষা করুন।

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)
নো-লোড সম্পদ খরচ

Pod-to-Pod

এই দৃশ্যটি অনুমান করে যে ক্লায়েন্ট পড তার IP ঠিকানা ব্যবহার করে সার্ভার পডের সাথে সরাসরি সংযোগ করে।

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)
পড-টু-পড দৃশ্যকল্প

বিভিন্ন TCP

পড-টু-পড TCP ফলাফল এবং সংশ্লিষ্ট সম্পদ খরচ:

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)

এর ফলে UDP

পড-টু-পড ইউডিপি ফলাফল এবং সংশ্লিষ্ট সম্পদ খরচ:

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)

পড-টু-সার্ভিস

এই বিভাগটি বাস্তব ব্যবহারের ক্ষেত্রে প্রাসঙ্গিক, ক্লায়েন্ট পড ClusterIP পরিষেবার মাধ্যমে সার্ভার পডের সাথে সংযোগ করে।

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)
পড-টু-সার্ভিস স্ক্রিপ্ট

বিভিন্ন TCP

পড-টু-সার্ভিস টিসিপি ফলাফল এবং সংশ্লিষ্ট সম্পদ খরচ:

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)

এর ফলে UDP

পড-টু-সার্ভিস ইউডিপি ফলাফল এবং সংশ্লিষ্ট সম্পদ খরচ:

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)

নেটওয়ার্ক নীতি সমর্থন

উপরের সমস্তগুলির মধ্যে, একমাত্র যে রাজনীতি সমর্থন করে না তা হল ফ্ল্যানেল। অন্য সব সঠিকভাবে নেটওয়ার্ক নীতি বাস্তবায়ন করে, অন্তর্মুখী এবং বহির্গামী সহ। দারূন কাজ!

CNI এনক্রিপশন

চেক করা সিএনআইগুলির মধ্যে এমন কিছু রয়েছে যা পডের মধ্যে নেটওয়ার্ক বিনিময় এনক্রিপ্ট করতে পারে:

  • IPsec ব্যবহার করে Antrea
  • ওয়্যারগার্ড ব্যবহার করে ক্যালিকো
  • আইপিসেক ব্যবহার করে সিলিয়াম
  • IPsec ব্যবহার করে WeaveNet

ব্যান্ডউইথ

যেহেতু কম সিএনআই বাকি আছে, চলুন সমস্ত পরিস্থিতিকে একটি গ্রাফে রাখি:

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)

সম্পদ খরচ

এই বিভাগে, আমরা টিসিপি এবং ইউডিপিতে পড-টু-পড যোগাযোগ প্রক্রিয়া করার সময় ব্যবহৃত সংস্থানগুলি মূল্যায়ন করব। একটি পড-টু-সার্ভিস গ্রাফ আঁকার কোন মানে নেই কারণ এটি অতিরিক্ত তথ্য প্রদান করে না।

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)

সবগুলোকে একত্রে রাখ

চলুন সব গ্রাফের পুনরাবৃত্তি করার চেষ্টা করি, আমরা এখানে একটু সাবজেক্টিভিটি চালু করেছি, প্রকৃত মানগুলিকে "vwry fast", "low" ইত্যাদি শব্দ দিয়ে প্রতিস্থাপন করেছি।

10G নেটওয়ার্কের উপর Kubernetes-এর জন্য CNI কর্মক্ষমতা মূল্যায়ন (আগস্ট 2020)

উপসংহার এবং আমার উপসংহার

এটি একটি সামান্য বিষয়গত, যেহেতু আমি ফলাফলের আমার নিজস্ব ব্যাখ্যা জানাচ্ছি।

আমি আনন্দিত যে নতুন সিএনআই উপস্থিত হয়েছে, আন্ট্রিয়া ভাল পারফর্ম করেছে, এমনকি প্রাথমিক সংস্করণেও অনেকগুলি ফাংশন প্রয়োগ করা হয়েছিল: স্বয়ংক্রিয় MTU সনাক্তকরণ, এনক্রিপশন এবং সহজ ইনস্টলেশন।

আমরা যদি পারফরম্যান্সের তুলনা করি, কুবে-ওভিএন এবং কুবে-রাউটার ছাড়া সমস্ত সিএনআই ভাল কাজ করে। কুবে-রাউটারও এমটিইউ সনাক্ত করতে অক্ষম ছিল, আমি ডকুমেন্টেশনের কোথাও এটি কনফিগার করার উপায় খুঁজে পাইনি (এখানে এই বিষয়ে একটি অনুরোধ খোলা আছে)।

সম্পদ ব্যবহারের পরিপ্রেক্ষিতে, Cilium এখনও অন্যদের তুলনায় বেশি RAM ব্যবহার করে, কিন্তু প্রস্তুতকারক স্পষ্টভাবে বড় ক্লাস্টারগুলিকে টার্গেট করছে, যা স্পষ্টতই একটি তিন-নোড ক্লাস্টারে পরীক্ষার মতো নয়। কুবে-ওভিএনও প্রচুর সিপিইউ এবং র‌্যাম সংস্থান ব্যবহার করে, তবে এটি ওপেন ভিসুইচের উপর ভিত্তি করে একটি তরুণ সিএনআই (অ্যান্ট্রিয়ার মতো, এটি আরও ভাল কাজ করে এবং কম খরচ করে)।

ফ্ল্যানেল ছাড়া প্রত্যেকেরই নেটওয়ার্ক নীতি রয়েছে। এটি খুব সম্ভবত যে তিনি কখনই তাদের সমর্থন করবেন না, যেহেতু লক্ষ্যটি বাষ্পযুক্ত শালগম থেকে সহজ: হালকা, আরও ভাল।

এছাড়াও, অন্যান্য জিনিসগুলির মধ্যে, এনক্রিপশন কর্মক্ষমতা আশ্চর্যজনক। ক্যালিকো প্রাচীনতম সিএনআইগুলির মধ্যে একটি, তবে এনক্রিপশন মাত্র কয়েক সপ্তাহ আগে যোগ করা হয়েছিল। তারা আইপিসেকের পরিবর্তে ওয়্যারগার্ড বেছে নিয়েছে এবং সহজভাবে বললে, এটি দুর্দান্ত এবং আশ্চর্যজনক কাজ করে, পরীক্ষার এই অংশে অন্যান্য সিএনআইকে সম্পূর্ণরূপে গ্রহণ করে। অবশ্যই, এনক্রিপশনের কারণে সম্পদের ব্যবহার বৃদ্ধি পায়, তবে অর্জিত থ্রুপুট এটি মূল্যবান (ক্যালিকো সিলিয়ামের তুলনায় এনক্রিপশন পরীক্ষায় ছয়গুণ উন্নতি দেখিয়েছে, যা দ্বিতীয় স্থানে রয়েছে)। অধিকন্তু, আপনি ক্লাস্টারে ক্যালিকো স্থাপন করার পরে যেকোন সময় ওয়্যারগার্ড সক্ষম করতে পারেন এবং আপনি চাইলে অল্প সময়ের জন্য বা স্থায়ীভাবে এটিকে অক্ষমও করতে পারেন। এটা অবিশ্বাস্যভাবে সুবিধাজনক, যদিও! আমরা আপনাকে মনে করিয়ে দিচ্ছি যে ক্যালিকো বর্তমানে MTU স্বয়ংক্রিয়ভাবে সনাক্ত করে না (এই বৈশিষ্ট্যটি ভবিষ্যতের সংস্করণগুলির জন্য পরিকল্পনা করা হয়েছে), তাই আপনার নেটওয়ার্ক জাম্বো ফ্রেম (MTU 9000) সমর্থন করলে MTU কনফিগার করতে ভুলবেন না।

অন্যান্য জিনিসগুলির মধ্যে, মনে রাখবেন যে সিলিয়াম ক্লাস্টার নোডগুলির মধ্যে ট্র্যাফিক এনক্রিপ্ট করতে পারে (এবং কেবল পডের মধ্যে নয়), যা পাবলিক ক্লাস্টার নোডগুলির জন্য খুব গুরুত্বপূর্ণ হতে পারে।

উপসংহার হিসাবে, আমি নিম্নলিখিত ব্যবহারের ক্ষেত্রে পরামর্শ দিই:

  • একটি খুব ছোট ক্লাস্টারের জন্য CNI প্রয়োজন বা আমার নিরাপত্তার প্রয়োজন নেই: সাথে কাজ করে পশমী কাপড়, সবচেয়ে হালকা এবং সবচেয়ে স্থিতিশীল CNI (তিনি প্রাচীনতমদের মধ্যে একজন, কিংবদন্তি অনুসারে তিনি হোমো কুবারনটস বা হোমো কনটেইটোরাস আবিষ্কার করেছিলেন) আপনি সবচেয়ে বুদ্ধিমান প্রকল্পে আগ্রহী হতে পারে K3s, চেক!
  • নিয়মিত ক্লাস্টারের জন্য CNI প্রয়োজন: বস্ত্রবিশেষ - আপনার পছন্দ, কিন্তু প্রয়োজন হলে MTU কনফিগার করতে ভুলবেন না। আপনি সহজেই এবং স্বাভাবিকভাবে নেটওয়ার্ক নীতির সাথে খেলতে পারেন, এনক্রিপশন চালু এবং বন্ধ করতে পারেন ইত্যাদি।
  • (খুব) বড় আকারের ক্লাস্টারের জন্য CNI প্রয়োজন: ঠিক আছে, পরীক্ষাটি বড় ক্লাস্টারগুলির আচরণ দেখায় না, আমি পরীক্ষা পরিচালনা করতে পেরে খুশি হব, কিন্তু আমাদের কাছে 10Gbps সংযোগ সহ শত শত সার্ভার নেই। তাই সর্বোত্তম বিকল্প হল আপনার নোডগুলিতে একটি পরিবর্তিত পরীক্ষা চালানো, অন্তত ক্যালিকো এবং সিলিয়ামের সাথে।

উত্স: www.habr.com

একটি মন্তব্য জুড়ুন