Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)
هي منهنجي تازه ڪاري آهي اڳوڻو معيار، جيڪو هاڻي هلندو آهي Kubernetes 1.14 تي تازو CNI ورزن سان گڏ اپريل 2019 تائين.

سڀ کان پهريان، مان Cilium ٽيم جو شڪريو ادا ڪرڻ چاهيان ٿو: ماڻهن مون کي ميٽرڪ مانيٽرنگ اسڪرپٽ چيڪ ڪرڻ ۽ درست ڪرڻ ۾ مدد ڪئي.

نومبر 2018 کان ڇا تبديلي آئي آهي

ھتي اھو آھي جيڪو ان وقت کان تبديل ٿيو آھي (جيڪڏھن توھان دلچسپي رکو ٿا):

Flannel رهي ٿو تيز ترين ۽ آسان ترين CNI انٽرفيس، پر اڃا تائين نيٽ ورڪ پاليسين ۽ انڪرپشن کي سپورٽ نٿو ڪري.

رومانا هاڻي سپورٽ ناهي، تنهنڪري اسان ان کي معيار مان هٽايو آهي.

WeaveNet ھاڻي سپورٽ ڪري ٿو نيٽ ورڪ پاليسين لاءِ Ingress ۽ Egress! پر پيداوار گهٽجي وئي آهي.

ڪيليڪو ۾، توهان کي اڃا به دستي طور تي ترتيب ڏيڻ جي ضرورت آهي وڌ ۾ وڌ پيڪٽ سائيز (MTU) بهترين ڪارڪردگي لاءِ. ڪيليڪو سي اين آئي کي انسٽال ڪرڻ لاءِ ٻه آپشن پيش ڪري ٿو، تنهنڪري توهان بغير ڪنهن الڳ ETCD مخزن جي ڪري سگهو ٿا:

  • ڪبرنيٽس API ۾ ڊيٽا اسٽور جي حيثيت سان اسٽوريج اسٽيٽ (ڪلسٽر سائيز <50 نوڊس)؛
  • K8S API (ڪلسٽر سائيز > 50 نوڊس) تي لوڊ کي گھٽائڻ لاءِ ٽائيفا پراڪسي سان گڏ ڪبرنيٽس API ۾ ڊيٽا اسٽور جي حيثيت سان اسٽيٽ اسٽوريج.

ڪيليڪو حمايت جو اعلان ڪيو ايپليڪيشن سطح جي پاليسين ايپليڪيشن-سطح سيڪيورٽي لاء Istio جي چوٽي تي.

Cilium ھاڻي انڪرپشن کي سپورٽ ڪري ٿو! Cilium IPSec سرنگن سان گڏ انڪرپشن مهيا ڪري ٿو ۽ انڪريپٽ ٿيل WeaveNet نيٽ ورڪ جو متبادل پيش ڪري ٿو. پر WeaveNet Cilium کان وڌيڪ تيز آھي انڪريپشن سان.

Cilium ھاڻي ٺھيل ETCD آپريٽر جي مھرباني ڪرڻ آسان آھي.

Cilium ٽيم ڪوشش ڪئي آهي ته ڪجهه وزن پنهنجي CNI مان ميموري واپرائڻ ۽ سي پي يو جي خرچن کي گهٽائڻ سان، پر ان جا حريف اڃا به روشن آهن.

معيار جي حوالي سان

بينچ مارڪ ٽن نان ورچوئلائزڊ سپرمائڪرو سرورز تي 10 Gb سپرمائڪرو سوئچ سان هلايو ويندو آهي. سرورز سڌو سنئون سوئچ سان غير فعال DAC SFP+ ڪيبل ذريعي ڳنڍيل آهن ۽ ساڳي VLAN تي جمبو فريم (MTU 9000) سان ترتيب ڏنل آهن.

Kubernetes 1.14.0 Ubuntu 18.04 LTS تي Docker 18.09.2 سان انسٽال ڪيو ويو (هن رليز ۾ ڊفالٽ ڊڪر ورزن).

ٻيهر پيدا ڪرڻ جي صلاحيت کي بهتر ڪرڻ لاء، اسان هميشه ماسٽر کي ترتيب ڏيڻ جو فيصلو ڪيو پهرين نوڊ تي، بينچ مارڪ جو سرور حصو ٻئي سرور تي، ۽ ڪلائنٽ حصو ٽئين تي. هن کي ڪرڻ لاء، اسان استعمال ڪندا آهيون NodeSelector Kubernetes جي ترتيبن ۾.

اسان هيٺ ڏنل پيماني تي معيار جا نتيجا بيان ڪنداسين:

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)

بينچ مارڪ لاءِ CNI چونڊيو

هي هڪ معيار آهي صرف CNI لاءِ سيڪشن ۾ ڏنل فهرست مان kubeadm سان هڪ ماسٽر ڪلستر ٺاهڻ بابت ڏسو سرڪاري Kubernetes دستاويز. 9 CNIs مان، اسان صرف 6 کڻنداسين: اسان انھن کي خارج ڪنداسين جيڪي انسٽال ڪرڻ ڏکيو آھن ۽/يا ڪم نه ڪندا آھن بغير دستاويز جي ترتيب جي مطابق (Romana، Contiv-VPP ۽ JuniperContrail/TungstenFabric).

اسان هيٺ ڏنل CNIs جو مقابلو ڪنداسين:

  • ڪيليڪو v3.6
  • ڪينال v3.6 (بنيادي طور تي نيٽ ورڪنگ لاءِ فلانيل + ڪيليڪو فائر وال طور)
  • ڪيليم 1.4.2
  • فلانيل 0.11.0
  • ڪوبي روٽر 0.2.5
  • WeaveNet 2.5.1

تنصيب

CNI کي انسٽال ڪرڻ جيترو آسان هوندو، اوترو ئي اسان جو پهريون تاثر بهتر ٿيندو. معيار مان سڀئي CNIs انسٽال ڪرڻ بلڪل آسان آهن (هڪ يا ٻه حڪمن سان).

جيئن اسان چيو، سرورز ۽ سوئچ جمبو فريم سان ترتيب ڏنل آهن (اسان MTU کي 9000 تي سيٽ ڪيو). اسان کي خوشي ٿيندي جيڪڏهن CNI خودڪار طريقي سان ايم ٽي يو کي ايڊاپٽر جي ترتيب جي بنياد تي طئي ڪري. بهرحال، صرف Cilium ۽ Flannel هن کي منظم ڪيو. باقي CNIs کي GitHub تي خودڪار MTU دريافت شامل ڪرڻ لاءِ درخواستون آهن، پر اسان ان کي دستي طور تي ترتيب ڏينداسين ConfigMap for Calico، Canal ۽ Kube-router کي تبديل ڪندي، يا WeaveNet لاءِ ماحولي تبديليءَ کي پاس ڪندي.

غلط MTU سان مسئلو ڇا آهي؟ هي ڊراگرام ڏيکاري ٿو WeaveNet جي وچ ۾ فرق ڊفالٽ MTU ۽ جمبو فريم سان فعال ٿيل:

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)
MTU ڪيئن اثر انداز ڪري ٿو throughput؟

اسان ڏٺو آهي ته ڪارڪردگي لاءِ MTU ڪيترو اهم آهي، هاڻي اچو ته ڏسون ته اسان جا CNIs خود بخود ان جو تعين ڪيئن ڪن ٿا:

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)
CNI خودڪار طريقي سان MTU کي ڳولي ٿو

گراف ڏيکاري ٿو ته توهان کي MTU ترتيب ڏيڻ جي ضرورت آهي Calico، Canal، Kube-router ۽ WeaveNet لاءِ بهتر ڪارڪردگي لاءِ. Cilium ۽ Flannel ڪنهن به سيٽنگ کان سواء MTU پاڻ کي صحيح طور تي طئي ڪرڻ جي قابل هئا.

حفاظت

اسان ٻن حصن ۾ CNI سيڪيورٽي جو مقابلو ڪنداسين: منتقل ٿيل ڊيٽا کي انڪرپٽ ڪرڻ جي صلاحيت ۽ Kubernetes نيٽ ورڪ پاليسين تي عمل درآمد (حقيقي ٽيسٽ جي بنياد تي، دستاويزن تي نه).

صرف ٻه CNIs انڪرپٽ ڊيٽا: Cilium ۽ WeaveNet. انڪرپشن WeaveNet انڪريپشن پاسورڊ سيٽنگ ڪندي فعال ڪيو ويو CNI ماحوليات متغير جي طور تي. IN دستاويز WeaveNet ان کي ھڪڙي پيچيده انداز ۾ بيان ڪري ٿو، پر سڀ ڪجھ سادو آھي. انڪرپشن ڪيليم حڪمن جي ترتيب سان، ڪبرنيٽس راز ٺاهي، ۽ ڊيمون سيٽ جي ترميم ذريعي (WeaveNet جي ڀيٽ ۾ ٿورو وڌيڪ پيچيده، پر Cilium وٽ قدم قدم آهي هدايتون).

جيئن ته نيٽ ورڪ پاليسي تي عملدرآمد لاء، اهي ڪامياب ٿي ويا آهن ڪيليڪو، ڪينال، ڪيليم ۽ وين نيٽ، جنهن ۾ توهان داخل ۽ خارجي ضابطن کي ترتيب ڏئي سگهو ٿا. لاءِ ڪوب-رائوٽر هتي صرف داخل ٿيڻ جا ضابطا آهن، ۽ فلاليل هتي ڪا به نيٽ ورڪ پاليسيون نه آهن.

هتي مجموعي نتيجا آهن:

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)
حفاظتي ڪارڪردگي معيار جا نتيجا

پيداوار

هي معيار هر ٽيسٽ جي گهٽ ۾ گهٽ ٽي رنسون مٿان سراسري انپٽ ڏيکاري ٿو. اسان TCP ۽ UDP جي ڪارڪردگي کي جانچيندا آهيون (iperf3 استعمال ڪندي)، حقيقي ايپليڪيشنون جهڙوڪ HTTP (Nginx ۽ curl سان) يا FTP (vsftpd ۽ curl سان) ۽ آخرڪار ايپليڪيشن ڪارڪردگي SCP-based encryption استعمال ڪندي (ڪلائنٽ ۽ سرور OpenSSH استعمال ڪندي).

سڀني ٽيسٽن لاءِ، اسان CNI ڪارڪردگيءَ جي مقابلي لاءِ نيٽ ورڪ جي ڪارڪردگيءَ سان ڀيٽ ڪرڻ لاءِ بيئر ميٽل بينچ مارڪ (گرين لائين) ڪيو. هتي اسان ساڳئي پيماني تي استعمال ڪندا آهيون، پر رنگ ۾:

  • زرد = تمام سٺو
  • نارنگي = سٺو
  • نيرو = ائين
  • ڳاڙهو = خراب

اسان غلط ترتيب ڏنل CNIs نه کڻنداسين ۽ صرف صحيح MTU سان CNIs جا نتيجا ڏيکارينداسين. (نوٽ: Cilium صحيح طريقي سان MTU جو حساب نه ٿو ڏئي جيڪڏهن توهان انڪرپشن کي فعال ڪريو ٿا، تنهنڪري توهان کي دستي طور تي MTU کي 8900 تائين نسخو 1.4 ۾ گھٽائڻو پوندو. ايندڙ نسخو، 1.5، اهو خودڪار طريقي سان ڪندو.)

هتي نتيجا آهن:

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)
TCP ڪارڪردگي

سڀني CNIs TCP بينچ مارڪ ۾ سٺي ڪارڪردگي ڏيکاري. CNI انڪرپشن سان تمام گهڻو پوئتي رهجي ويو آهي ڇاڪاڻ ته انڪرپشن مهانگو آهي.

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)
UDP ڪارڪردگي

هتي، پڻ، سڀ CNIs سٺو ڪم ڪري رهيا آهن. CNI انڪريشن سان لڳ ڀڳ ساڳيو نتيجو ڏيکاريو. Cilium مقابلي ۾ ٿورو پوئتي آهي، پر اهو صرف 2,3٪ ننگي ڌاتو جو آهي، تنهنڪري اهو خراب نتيجو ناهي. اهو نه وساريو ته صرف Cilium ۽ Flannel MTU صحيح طور تي پاڻ کي طئي ڪيو، ۽ اهي انهن جا نتيجا آهن بغير ڪنهن اضافي ترتيب جي.

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)

ڇا هڪ حقيقي ايپليڪيشن بابت؟ جئين توهان ڏسي سگهو ٿا، HTTP لاء مجموعي ڪارڪردگي TCP جي ڀيٽ ۾ ٿورو گهٽ آهي. ايستائين جو توهان TCP سان HTTP استعمال ڪريو ٿا، اسان Iperf3 کي TCP بينچ مارڪ ۾ ترتيب ڏنو ته سست شروعات کان بچڻ لاءِ جيڪو HTTP بينچ مارڪ کي متاثر ڪندو. هرڪو هتي سٺو ڪم ڪيو. ڪوبي روٽر جو واضح فائدو آهي، پر WeaveNet سٺو ڪم نه ڪيو: اٽڪل 20٪ ننگي ڌاتو کان وڌيڪ خراب. Cilium ۽ WeaveNet انڪرپشن سان واقعي اداس نظر اچن ٿا.

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)

FTP سان، ٻيو TCP-بنياد پروٽوڪول، نتيجا مختلف آهن. فلانيل ۽ ڪوبي روٽر ڪم ڪن ٿا، پر ڪيليڪو، ڪينال ۽ سليئم ٿورڙو پوئتي آھن ۽ بيئر ڌاتوءَ کان اٽڪل 10 سيڪڙو سست آھن. WeaveNet 17 سيڪڙو کان پوئتي آھي، پر انڪريپٽ ٿيل WeaveNet 40 سيڪڙو اڳتي آھي انڪريپٽ ٿيل Cilium کان.

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)

SCP سان اسان فوري طور تي ڏسي سگھون ٿا ته SSH انڪرپشن اسان کي ڪيترو خرچ ڪري ٿو. لڳ ڀڳ سڀ CNIs سٺو ڪم ڪري رهيا آهن، پر WeaveNet وري پوئتي آهي. Cilium ۽ WeaveNet انڪرپشن سان گڏ ڊبل انڪرپشن (SSH + CNI) جي ڪري سڀ کان وڌيڪ خراب ٿيڻ جو امڪان آهي.

هتي نتيجن سان گڏ هڪ خلاصو جدول آهي:

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)

وسيلن جي استعمال

ھاڻي اچو ته مقابلو ڪريون ته ڪيئن CNI وسيلن کي ڳري بار (TCP جي منتقلي دوران، 10 Gbps) استعمال ڪري ٿو. ڪارڪردگي جي تجربن ۾ اسان CNI کي ننگي ڌاتو (گرين لائن) سان مقابلو ڪندا آهيون. وسيلن جي استعمال لاءِ، اچو ته CNI کان سواءِ خالص ڪبرنيٽس (جامني لڪير) ڏيکاريون ۽ ڏسو ته ڪيترا اضافي وسيلا CNI استعمال ڪري ٿو.

اچو ته يادگيري سان شروع ڪريون. هتي آهي اوسط قدر نوڊس جي رام لاءِ (بفرز ۽ ڪيش کانسواءِ) MB ۾ منتقلي دوران.

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)
ياداشت جي استعمال

Flannel ۽ Kube-router شاندار نتيجا ڏيکاريا - صرف 50 MB. Calico ۽ Canal هر هڪ وٽ 70 آهن. WeaveNet واضح طور تي ٻين کان وڌيڪ استعمال ڪري ٿو - 130 MB، ۽ Cilium 400 جيترو استعمال ڪري ٿو.
ھاڻي اچو ته سي پي يو جي وقت جي استعمال کي چيڪ ڪريو. قابل ذڪر: ڊاگرام ڏيکاري ٿو فيصد نه، پر پي پي ايم، يعني 38 پي پي ايم ”ننگي لوهه“ لاءِ 3,8٪ آهي. هتي نتيجا آهن:

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)
سي پي يو جو استعمال

Calico، Canal، Flannel ۽ Kube-router تمام CPU ڪارآمد آھن - صرف 2٪ وڌيڪ CNI کان سواء Kubernetes کان. WeaveNet هڪ اضافي 5٪ سان تمام گهڻو پوئتي آهي، جنهن جي پٺيان Cilium 7٪ تي.

هتي وسيلن جي استعمال جو خلاصو آهي:

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)

نتيجو

سڀني نتيجن سان ٽيبل:

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)
عام معيار جا نتيجا

ٿڪل

آخري حصي ۾ آئون نتيجن تي منهنجي موضوعي راء جو اظهار ڪندس. ياد رهي ته هي معيار صرف هڪ واحد ڪنيڪشن جي ان پٽ کي تمام ننڍڙو ڪلستر (3 نوڊس) تي آزمائي ٿو. اهو وڏي ڪلستر (<50 نوڊس) يا متوازي ڪنيڪشن تي لاڳو نٿو ٿئي.

مان ھيٺ ڏنل CNIs استعمال ڪرڻ جي صلاح ڏيان ٿو منظرنامي جي لحاظ کان:

  • ڇا توھان وٽ آھي توھان جي ڪلستر ۾ ڪجھ وسيلن سان نوڊس (ڪيترائي GB جي رام، ڪيترائي ڪور) ۽ توهان کي حفاظتي خاصيتن جي ضرورت ناهي - چونڊيو فلاليل. هي هڪ آهي سڀ کان وڌيڪ قيمتي CNIs. ۽ اهو مختلف قسم جي فن تعمير (amd64، arm، arm64، وغيره) سان مطابقت رکي ٿو. ان کان علاوه، هي ٻن مان هڪ آهي (ٻيو آهي Cilium) CNI جيڪو خودڪار طريقي سان MTU جو تعين ڪري سگهي ٿو، تنهنڪري توهان کي ڪجهه به ترتيب ڏيڻ جي ضرورت ناهي. Kube-router پڻ موزون آهي، پر اهو معياري نه آهي ۽ توهان کي دستي طور تي MTU ترتيب ڏيڻ جي ضرورت پوندي.
  • گھربل هجي نيٽ ورڪ encrypt حفاظت لاءِ ، وٺڻ WeaveNet. MTU سائيز جي وضاحت ڪرڻ نه وساريو جيڪڏھن توھان جمبو فريم استعمال ڪري رھيا آھيو، ۽ انڪرپشن کي فعال ڪريو پاسورڊ جي وضاحت ڪندي ماحوليات جي متغير ذريعي. پر اهو بهتر آهي ته ڪارڪردگي جي باري ۾ وسارڻ - اهو آهي انڪرپشن جي قيمت.
  • لاء عام استعمال مان صلاح ڏيان ٿو ڪيليڪو. هي CNI وڏي پيماني تي استعمال ڪيو ويندو آهي مختلف ڪبرنيٽس جي ترتيب ڏيڻ واري اوزار (ڪوپس، ڪبيسپري، رينچر، وغيره). جيئن WeaveNet سان، پڪ ڪريو ته MTU کي ConfigMap ۾ ترتيب ڏيو جيڪڏهن جمبو فريم استعمال ڪري رهيا آهيو. اهو هڪ گهڻ-فعلي اوزار آهي جيڪو وسيلن جي استعمال، ڪارڪردگي ۽ سيڪيورٽي جي لحاظ کان موثر آهي.

۽ آخرڪار، مان توهان کي صلاح ڏيان ٿو ته توهان ترقي جي پيروي ڪريو ڪيليم. ھن CNI وٽ ھڪ تمام سرگرم ٽيم آھي جيڪا پنھنجي پراڊڪٽ تي گھڻو ڪم ڪري ٿي (فيچرز، وسيلن جي بچت، ڪارڪردگي، سيڪيورٽي، ڪلسترنگ...) ۽ انھن وٽ ڏاڍا دلچسپ منصوبا آھن.

Kubernetes نيٽورڪ پلگ ان (CNI) 10 Gbps نيٽ ورڪ تي معيار جا نتيجا (تازه ڪاري: اپريل 2019)
CNI چونڊ لاءِ بصري خاڪو

جو ذريعو: www.habr.com

تبصرو شامل ڪريو