Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)
Ieu update abdi patokan saméméhna, anu ayeuna dijalankeun dina Kubernetes 1.14 sareng versi CNI panganyarna dina April 2019.

Anu mimiti, abdi hoyong hatur tim Cilium: guys mantuan kuring pariksa jeung ngabenerkeun metrics ngawaskeun Aksara.

Naon anu robih saprak Nopémber 2018

Ieu naon anu robih ti harita (upami anjeun resep):

Flannel tetep panganteur CNI panggancangna sarta pangbasajanna, tapi tetep teu ngarojong kawijakan jaringan sarta enkripsi.

Romana henteu deui didukung, janten kami parantos ngahapus tina patokan.

WeaveNet ayeuna ngadukung kawijakan jaringan pikeun Ingress sareng Egress! Tapi produktivitas parantos turun.

Dina Calico, anjeun masih kedah ngonpigurasikeun ukuran pakét maksimum (MTU) sacara manual pikeun pagelaran pangsaéna. Calico nawiskeun dua pilihan pikeun masang CNI, ku kituna anjeun tiasa ngalakukeun tanpa gudang ETCD anu misah:

  • nyimpen kaayaan dina API Kubernetes salaku toko data (ukuran klaster <50 titik);
  • nyimpen kaayaan dina API Kubernetes salaku toko data sareng proxy Typha pikeun ngagentos beban dina API K8S (ukuran klaster> 50 titik).

Calico ngumumkeun dukungan kawijakan tingkat aplikasi di luhur Istio pikeun kaamanan tingkat aplikasi.

Cilium ayeuna ngadukung énkripsi! Cilium nyayogikeun enkripsi sareng torowongan IPSec sareng nawiskeun alternatif pikeun jaringan WeaveNet énkripsi. Tapi WeaveNet langkung gancang tibatan Cilium kalayan énkripsi diaktipkeun.

Cilium ayeuna langkung gampang nyebarkeun berkat operator ETCD anu diwangun.

Tim Cilium geus diusahakeun motong sababaraha beurat ti CNI na ku cara ngurangan konsumsi memori sarta waragad CPU, tapi pesaing na masih torek.

Kontéks patokan

Patokan dijalankeun dina tilu server Supermicro non-virtualized sareng saklar Supermicro 10 Gb. The server disambungkeun langsung ka switch via pasip DAC SFP + kabel sarta ngonpigurasi dina VLAN sarua jeung pigura jumbo (MTU 9000).

Kubernetes 1.14.0 dipasang dina Ubuntu 18.04 LTS sareng Docker 18.09.2 (versi Docker standar dina sékrési ieu).

Pikeun ningkatkeun reproducibility, urang mutuskeun pikeun salawasna ngonpigurasikeun master dina titik kahiji, nempatkeun bagian server tina patokan dina server kadua, sarta bagian klien dina katilu. Jang ngalampahkeun ieu, kami nganggo NodeSelector dina panyebaran Kubernetes.

Kami bakal ngajelaskeun hasil patokan dina skala ieu:

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)

Milih hiji CNI pikeun patokan

Ieu patokan ngan pikeun CNI tina daptar di bagian ngeunaan nyieun hiji master klaster kalawan kubeadm Tempo dokuméntasi resmi Kubernetes. Tina 9 CNI, urang bakal ngan ukur nyandak 6: urang bakal ngaluarkeun jalma anu hese dipasang sareng / atanapi henteu tiasa dianggo tanpa konfigurasi dumasar kana dokuméntasi (Romana, Contiv-VPP sareng JuniperContrail / TungstenFabric).

Urang bakal ngabandingkeun CNIs handap:

  • Calico v3.6
  • Terusan v3.6 (dasarna Flannel pikeun jaringan + Calico salaku firewall)
  • Cilium 1.4.2
  • Flanel 0.11.0
  • Kube-router 0.2.5
  • WeaveNet 2.5.1

setting

Beuki gampang dipasang CNI, langkung saé kesan munggaran urang. Kabéh CNIs tina patokan pisan gampang dipasang (kalawan hiji atawa dua paréntah).

Salaku ceuk urang, server na switch ngonpigurasi kalawan pigura jumbo diaktipkeun (urang nyetel MTU ka 9000). Urang bakal senang lamun CNI otomatis nangtukeun MTU dumasar kana konfigurasi adapters '. Sanajan kitu, ngan Cilium jeung Flannel ngatur ieu. Sesa CNIs gaduh requests on GitHub pikeun nambahkeun kapanggihna MTU otomatis, tapi urang bakal ngonpigurasikeun sacara manual ku ngarobah ConfigMap pikeun Calico, Terusan jeung Kube-router, atawa ngalirkeun variabel lingkungan pikeun WeaveNet.

Naon masalahna sareng MTU anu salah? Diagram ieu nunjukkeun bédana antara WeaveNet kalayan MTU standar sareng pigura jumbo diaktipkeun:

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)
Kumaha MTU mangaruhan throughput?

Kami parantos ningali kumaha pentingna MTU pikeun pagelaran, ayeuna hayu urang tingali kumaha CNI urang sacara otomatis nangtukeun éta:

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)
CNI otomatis ngadeteksi MTU

grafik nembongkeun yen Anjeun kudu ngonpigurasikeun MTU pikeun Calico, kanal, Kube-router na WeaveNet pikeun pagelaran optimal. Cilium sareng Flannel tiasa leres-leres nangtukeun MTU sorangan tanpa aya setélan.

kasalametan

Urang bakal ngabandingkeun kaamanan CNI dina dua aspék: kamampuhan pikeun encrypt data dikirimkeun sarta palaksanaan kawijakan jaringan Kubernetes (dumasar kana tés nyata, teu dokuméntasi).

Ngan dua CNIs encrypt data: Cilium na WeaveNet. Énkripsi WeaveNet diaktipkeun ku netepkeun sandi enkripsi salaku variabel lingkungan CNI. DI dokuméntasi WeaveNet ngajelaskeun eta dina cara pajeulit, tapi sagalana geus rengse saukur. Énkripsi cilium ngonpigurasi ku paréntah, ku nyieun Rahasia Kubernetes, sarta ngaliwatan modifikasi tina daemonSet (saeutik leuwih pajeulit batan di WeaveNet, tapi Cilium boga hambalan-demi-hambalan. parentah).

Sedengkeun pikeun palaksanaan kawijakan jaringan, aranjeunna geus hasil Calico, Kanal, Cilium jeung WeaveNet, dimana anjeun tiasa ngonpigurasikeun aturan Ingress sareng Egress. Pikeun Kube-router aya aturan ngan pikeun Ingress, jeung Flannel Henteu aya kawijakan jaringan pisan.

Ieu hasil sakabéh:

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)
Kasalametan Performance Patokan Hasil

kakuwatan keur ngasilkeun

Tolok ukur ieu nunjukkeun rata-rata throughput sahenteuna sahenteuna tilu kali dina unggal tés. Kami nguji kinerja TCP sareng UDP (ngagunakeun iperf3), aplikasi nyata sapertos HTTP (kalayan Nginx sareng curl) atanapi FTP (kalayan vsftpd sareng curl) sareng tungtungna kinerja aplikasi nganggo enkripsi dumasar SCP (ngagunakeun klien sareng server OpenSSH).

Pikeun sakabéh tés, urang ngalakukeun patokan logam bulistir (garis héjo) pikeun ngabandingkeun kinerja CNI kalawan kinerja jaringan asli. Di dieu kami nganggo skala anu sami, tapi dina warna:

  • Konéng = alus pisan
  • Jeruk = alus
  • Biru = kitu-kitu
  • Beureum = goréng

Kami moal nyandak CNI anu teu leres dikonpigurasi sareng ngan ukur nunjukkeun hasil pikeun CNI kalayan MTU anu leres. (Catetan: Cilium henteu leres ngitung MTU upami anjeun ngaktipkeun enkripsi, janten anjeun kedah sacara manual ngirangan MTU ka 8900 dina versi 1.4. Versi salajengna, 1.5, ngalakukeun ieu sacara otomatis.)

Ieu hasilna:

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)
Kinerja TCP

Kabéh CNIs dipigawé ogé dina patokan TCP. CNI kalawan enkripsi lags jauh balik sabab enkripsi mahal.

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)
kinerja UDP

Di dieu, ogé, sadaya CNIs jalan ogé. CNI kalawan enkripsi némbongkeun hasil ampir sarua. Cilium téh saeutik balik kompetisi, tapi ngan 2,3% tina logam bulistir, jadi teu hasil goréng. Ulah hilap yén ngan Cilium sareng Flannel anu leres-leres nangtukeun MTU sorangan, sareng ieu mangrupikeun hasilna tanpa konfigurasi tambahan.

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)

Kumaha upami aplikasi nyata? Sakumaha anjeun tiasa tingali, kinerja sakabéh pikeun HTTP rada handap ti TCP. Sanaos anjeun nganggo HTTP sareng TCP, kami ngonpigurasikeun iperf3 dina patokan TCP pikeun ngahindarkeun ngamimitian anu laun anu bakal mangaruhan patokan HTTP. Sadayana damel saé di dieu. Kube-router boga kaunggulan jelas, tapi WeaveNet teu ngalakukeun ogé: kira-kira 20% leuwih goreng ti logam bulistir. Cilium sareng WeaveNet kalayan énkripsi katingalina hanjelu.

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)

Kalawan FTP, protokol basis TCP sejen, hasilna rupa-rupa. Flannel na Kube-router ngalakukeun pakasaban, tapi Calico, Terusan na Cilium saeutik balik sarta ngeunaan 10% laun ti logam bulistir. WeaveNet geus balik ku saloba 17%, tapi énkripsi WeaveNet nyaeta 40% dihareupeun Cilium énkripsi.

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)

Kalayan SCP urang tiasa langsung ningali sabaraha biaya enkripsi SSH. Ampir kabéh CNIs ngalakonan ogé, tapi WeaveNet geus katinggaleun balik deui. Cilium sareng WeaveNet kalayan énkripsi diperkirakeun paling parah kusabab énkripsi ganda (SSH + CNI).

Ieu tabel kasimpulan sareng hasilna:

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)

Konsumsi sumberdaya

Ayeuna urang ngabandingkeun kumaha CNI meakeun sumberdaya dina beban beurat (salila mindahkeun TCP, 10 Gbps). Dina tés kinerja urang ngabandingkeun CNI kalawan logam bulistir (garis héjo). Pikeun konsumsi sumberdaya, hayu urang némbongkeun Kubernetes murni (garis ungu) tanpa CNI tur tingal sabaraha sumberdaya tambahan CNI meakeun.

Hayu urang mimitian ku memori. Di dieu nyaeta nilai rata pikeun RAM titik '(kaasup buffers na cache) dina MB salila mindahkeun.

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)
Konsumsi mémori

Flannel jeung Kube-router némbongkeun hasil alus teuing - ngan 50 MB. Calico sareng Kanal masing-masing gaduh 70. WeaveNet jelas-jelas nganggo langkung seueur tibatan anu sanés - 130 MB, sareng Cilium nganggo saloba 400.
Ayeuna hayu urang pariksa konsumsi waktos CPU. Dipikareueus: diagram nembongkeun teu percentages, tapi ppm, nyaeta, 38 ppm pikeun "beusi bulistir" nyaeta 3,8%. Ieu hasilna:

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)
konsumsi CPU

Calico, Terusan, Flannel na Kube-router pisan CPU efisien - ngan 2% leuwih ti Kubernetes tanpa CNI. WeaveNet lags jauh balik kalawan tambahan 5%, dituturkeun ku Cilium pa 7%.

Ieu kasimpulan konsumsi sumberdaya:

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)

hasil

Tabel sareng sadaya hasil:

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)
Hasil patokan umum

kacindekan

Dina bagian pamungkas kuring bakal nganyatakeun pendapat subjektif kuring ngeunaan hasil. Inget yen patokan ieu ukur nguji throughput tina sambungan tunggal dina klaster pisan leutik (3 titik). Teu dilarapkeun ka klaster badag (<50 titik) atawa sambungan paralel.

Kuring nyarankeun ngagunakeun CNIs handap gumantung kana skenario:

  • Dupi anjeun gaduh di kluster Anjeun titik kalawan sababaraha sumberdaya (sababaraha GB RAM, sababaraha cores) jeung anjeun teu perlu fitur kaamanan - milih Flannel. Ieu salah sahiji CNIs paling ongkos-éféktif. Sareng éta cocog sareng rupa-rupa arsitéktur (amd64, panangan, arm64, jsb.). Sajaba ti éta, ieu téh salah sahiji dua (nu séjén nyaéta Cilium) CNI nu otomatis bisa nangtukeun MTU, sangkan anjeun teu kudu ngonpigurasikeun nanaon. Kube-router oge cocog, tapi teu sakumaha baku sarta anjeun bakal kudu sacara manual ngonpigurasikeun MTU.
  • Upami diperyogikeun énkripsi jaringan pikeun kaamanan, nyandak WeaveNet. Tong hilap netepkeun ukuran MTU upami anjeun nganggo pigura jumbo, sareng aktipkeun enkripsi ku cara nangtukeun kecap akses via variabel lingkungan. Tapi leuwih hade poho ngeunaan kinerja - éta biaya enkripsi.
  • keur pamakéan normal советую Calico. CNI ieu loba dipaké dina sagala rupa parabot deployment Kubernetes (Kops, Kubespray, Rancher, jsb). Sapertos WeaveNet, pastikeun pikeun ngonpigurasikeun MTU di ConfigMap upami nganggo pigura jumbo. Éta mangrupikeun alat multi-fungsi anu éfisién dina hal konsumsi sumberdaya, kinerja sareng kaamanan.

Sareng pamustunganana, kuring mamatahan anjeun nuturkeun pamekaran cilium. CNI Ieu boga tim pisan aktif anu dianggo pisan dina produk maranéhanana (fitur, tabungan sumberdaya, kinerja, kaamanan, clustering ...) jeung maranéhna boga rencana pisan metot.

Kubernetes Network Plugin (CNI) Hasil Tolok ukur langkung ti 10 Gbps Network (Diropéa: April 2019)
diagram visual pikeun pilihan CNI

sumber: www.habr.com

Tambahkeun komentar