Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)
ʻO kēia kaʻu mea hou hōʻailona mua, e holo nei i kēia manawa ma Kubernetes 1.14 me ka mana CNI hou loa mai ʻApelila 2019.

ʻO ka mea mua, makemake wau e hoʻomaikaʻi i ka hui Cilium: ua kōkua nā kāne iaʻu e nānā a hoʻoponopono i nā palapala nānā metric.

He aha ka mea i loli mai Nowemapa 2018

Eia ka mea i hoʻololi ʻia mai ia manawa (inā makemake ʻoe):

Noho ʻo Flannel i ka wikiwiki a me ka maʻalahi CNI interface, akā ʻaʻole naʻe i kākoʻo i nā kulekele pūnaewele a me ka hoʻopili.

ʻAʻole kākoʻo hou ʻia ʻo Romana, no laila ua wehe mākou iā ia mai ka benchmark.

Kākoʻo ʻo WeaveNet i nā kulekele pūnaewele no Ingress a me Egress! Akā, ua emi ka huahana.

Ma Calico, pono ʻoe e hoʻonohonoho lima i ka nui packet nui (MTU) no ka hana maikaʻi loa. Hāʻawi ʻo Calico i ʻelua mau koho no ka hoʻokomo ʻana iā CNI, no laila hiki iā ʻoe ke hana me ka ʻole o kahi waihona ETCD ʻokoʻa:

  • ka mālama ʻana i ka mokuʻāina ma ka Kubernetes API ma ke ʻano he waihona ʻikepili (ka nui o ka puʻupuʻu <50 nodes);
  • ka mālama ʻana i ka mokuʻāina ma ka Kubernetes API ma ke ʻano he hale kūʻai ʻikepili me kahi koho Typha e hoʻomaha ai i ka ukana ma ka K8S API (ka nui puʻupuʻu > 50 nodes).

Ua hoʻolaha ʻo Calico i ke kākoʻo nā kulekele pae noi ma luna o Istio no ka palekana pae noi.

Ke kākoʻo nei ʻo Cilium i ka hoʻopunipuni! Hāʻawi ʻo Cilium i ka hoʻopunipuni me nā tunnels IPSec a hāʻawi i kahi koho ʻē aʻe i ka pūnaewele WeaveNet i hoʻopili ʻia. Akā ʻoi aku ka wikiwiki o WeaveNet ma mua o Cilium me ka hoʻopili ʻana.

ʻOi aku ka maʻalahi o Cilium i kēia manawa e hoʻolauna i ka mahalo i ka mea hana ETCD i kūkulu ʻia.

Ua hoʻāʻo ka hui Cilium e ʻoki i kekahi kaumaha mai kāna CNI ma ka hoʻemi ʻana i ka hoʻohana ʻana i ka hoʻomanaʻo a me nā kumukūʻai CPU, akā ʻoi aku ka māmā o kāna mau mea hoʻokūkū.

ʻO ka pōʻaiapili hōʻailona

Holo ʻia ka pae ʻāina ma luna o ʻekolu mau kikowaena Supermicro non-virtualized me kahi hoʻololi 10 Gb Supermicro. Hoʻopili pololei ʻia nā kikowaena i ka hoʻololi ma o nā kaula passive DAC SFP+ a ua hoʻonohonoho ʻia ma ka VLAN like me nā kiʻi jumbo (MTU 9000).

Hoʻokomo ʻia ʻo Kubernetes 1.14.0 ma Ubuntu 18.04 LTS me Docker 18.09.2 (ka mana Docker paʻamau i kēia hoʻokuʻu).

No ka hoʻomaikaʻi ʻana i ka reproducibility, ua hoʻoholo mākou e hoʻonohonoho mau i ka haku ma ka node mua, e kau i ka ʻāpana kikowaena o ka benchmark ma ke kikowaena lua, a me ka ʻāpana o ka mea kūʻai aku ma ke kolu. No ka hana ʻana i kēia, hoʻohana mākou iā NodeSelector i nā hoʻolaha Kubernetes.

E wehewehe mākou i nā hopena benchmark ma ka pālākiō aʻe:

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)

Ke koho ʻana i kahi CNI no kahi hōʻailona

He hōʻailona kēia no CNI mai ka papa inoa ma ka ʻāpana e pili ana i ka hana ʻana i hoʻokahi pūʻulu haku me kubeadm E ʻike i ka palapala Kubernetes kūhelu. ʻO nā 9 CNI, e lawe wale mākou i ka 6: e kāpae mākou i nā mea paʻakikī e hoʻokomo a / a i ʻole hana me ka ʻole o ka hoʻonohonoho ʻana e like me ka palapala (Romana, Contiv-VPP a me JuniperContrail / TungstenFabric).

E hoʻohālikelike mākou i kēia mau CNI:

  • Calico v3.6
  • Canal v3.6 (ʻo ia ʻo Flannel no ka pūnaewele + Calico ma ke ʻano he pā ahi)
  • Kilium 1.4.2
  • Flannel 0.11.0
  • Kube-router 0.2.5
  • WeaveNet 2.5.1

Kāu Mau Koho Paʻamau

ʻO ka maʻalahi o ka CNI e hoʻokomo, ʻoi aku ka maikaʻi o kā mākou manaʻo mua. He mea maʻalahi loa ka hoʻouka ʻana o nā CNI āpau mai ka benchmark (me hoʻokahi a ʻelua mau kauoha).

E like me kā mākou i ʻōlelo ai, ua hoʻonohonoho ʻia nā kikowaena a me nā hoʻololi me nā kiʻi jumbo i hoʻohana ʻia (hoʻonoho mākou i ka MTU i 9000). E hauʻoli mākou inā hoʻoholo ʻokoʻa ʻo CNI i ka MTU ma muli o ka hoʻonohonoho ʻana o nā mea hoʻololi. Eia naʻe, ʻo Cilium a me Flannel wale nō i mālama i kēia. ʻO ke koena o nā CNI he noi ma GitHub e hoʻohui i ka ʻike MTU maʻalahi, akā e hoʻonohonoho mākou iā ia me ka lima ma o ka hoʻololi ʻana i ka ConfigMap no Calico, Canal a me Kube-router, a i ʻole ke kau ʻana i kahi ʻano hoʻololi kaiapuni no WeaveNet.

He aha ka pilikia me ka MTU hewa? Hōʻike kēia kiʻi i ka ʻokoʻa ma waena o WeaveNet me ka MTU paʻamau a me nā papa jumbo i hoʻohana ʻia:

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)
Pehea e pili ai ka MTU i ka throughput?

Ua ʻike mākou i ke koʻikoʻi o ka MTU no ka hana, e ʻike kākou pehea e hoʻoholo ai kā mākou CNI:

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)
ʻIke ʻakomi ʻo CNI iā MTU

Hōʻike ka pakuhi e pono ʻoe e hoʻonohonoho i ka MTU no Calico, Canal, Kube-router a me WeaveNet no ka hana maikaʻi loa. Ua hiki iā Cilium a me Flannel ke hoʻoholo pololei i ka MTU iā lākou iho me ka ʻole o nā hoʻonohonoho.

Ka maluhia

E hoʻohālikelike mākou i ka palekana CNI ma nā ʻano ʻelua: ka hiki ke hoʻopili i ka ʻikepili i hoʻouna ʻia a me ka hoʻokō ʻana i nā kulekele pūnaewele Kubernetes (e pili ana i nā hoʻokolohua maoli, ʻaʻole nā ​​palapala).

ʻElua wale CNI hoʻopili i ka ʻikepili: Cilium a me WeaveNet. Hoʻopili WeaveNet hoʻohana ʻia ma ka hoʻonohonoho ʻana i ka ʻōlelo huna hoʻopunipuni ma ke ʻano he hoʻololi kaiapuni CNI. IN palapala WeaveNet wehewehe ia ma kahi ala paʻakikī, akā hana maʻalahi nā mea a pau. Hoʻopili ʻO Cilium i hoʻonohonoho ʻia e nā kauoha, ma ka hana ʻana i nā mea huna Kubernetes, a ma o ka hoʻololi ʻana o ka daemonSet (ʻoi aku ka paʻakikī ma mua o WeaveNet, akā aia ʻo Cilium i kēlā me kēia pae. nā kuhikuhi).

No ka hoʻokōʻana i ka kulekele pūnaewele, ua lanakila lākou Calico, Canal, Cilium a me WeaveNet, kahi e hiki ai iā ʻoe ke hoʻonohonoho i nā lula Ingress a me Egress. No ka mea Kube-router aia nā lula no Ingress wale nō, a Flannel ʻAʻole loaʻa nā kulekele pūnaewele.

Eia nā hopena holoʻokoʻa:

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)
Nā hualoaʻa o ka hoʻokō palekana

'Ohanahana

Hōʻike kēia pae ʻāina i ka awelika o ka hana ma luna o ʻekolu mau holo o kēlā me kēia hoʻokolohua. Hoʻāʻo mākou i ka hana o TCP a me UDP (hoʻohana i ka iperf3), nā noi maoli e like me HTTP (me Nginx a me ka curl) a i ʻole FTP (me vsftpd a me curl) a hope loa ka hana noi me ka hoʻohana ʻana i ka SCP-based encryption (hoʻohana i ka mea kūʻai aku a me ka server OpenSSH).

No nā hoʻāʻo a pau, ua hana mākou i kahi paena metala ʻole (laina ʻōmaʻomaʻo) e hoʻohālikelike i ka hana CNI me ka hana pūnaewele ʻōiwi. Maʻaneʻi mākou hoʻohana i ka pālākiō like, akā i ke kala:

  • Melemele = maikaʻi loa
  • ʻAlani = maikaʻi
  • Polū = so-so
  • ʻulaʻula = ʻino

ʻAʻole mākou e lawe i nā CNI i hoʻonohonoho hewa ʻia a e hōʻike wale i nā hopena no nā CNI me ka MTU pololei. (E hoʻomaopopo: ʻAʻole helu pololei ʻo Cilium i ka MTU inā hiki iā ʻoe ke hoʻopili, no laila pono ʻoe e hōʻemi lima i ka MTU i 8900 ma ka mana 1.4. ʻO ka mana hou, 1.5, e hana maʻalahi i kēia.)

Eia nā hopena:

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)
Hana TCP

Ua hana maikaʻi nā CNI a pau ma ka hōʻailona TCP. ʻO ka CNI me ka hoʻopili ʻana i ka lōʻihi loa ma hope no ka mea he pipiʻi ka hoʻopili.

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)
UDP hana

Eia kekahi, ke hana maikaʻi nei nā CNI a pau. Ua hōʻike ʻo CNI me ka hoʻopili ʻana i ka hopena like. He liʻiliʻi ka Cilium ma hope o ka hoʻokūkū, akā he 2,3% wale nō o ka metala ʻole, no laila ʻaʻole ia he hopena maikaʻi ʻole. Mai poina ʻo Cilium a me Flannel wale nō i hoʻoholo pono i ka MTU iā lākou iho, a ʻo ia kā lākou hopena me ka ʻole o kahi hoʻonohonoho hou.

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)

Pehea e pili ana i kahi noi maoli? E like me kāu e ʻike ai, ʻoi aku ka haʻahaʻa o ka hana holoʻokoʻa no HTTP ma mua o TCP. ʻOiai inā ʻoe e hoʻohana i ka HTTP me TCP, ua hoʻonohonoho mākou i ka iperf3 ma ka ʻaoʻao TCP e pale i ka hoʻomaka lohi e pili ana i ka pae ʻāina HTTP. Ua hana maikaʻi nā kānaka a pau ma ʻaneʻi. Loaʻa ka maikaʻi o Kube-router, akā ʻaʻole i hana maikaʻi ʻo WeaveNet: ma kahi o 20% ʻoi aku ka maikaʻi ma mua o ka metala ʻole. ʻO Cilium a me WeaveNet me ka hoʻopunipuni ke nānā aku i ke kaumaha.

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)

Me FTP, kekahi protocol-based TCP, ʻokoʻa nā hopena. Hana ʻo Flannel a me Kube-router i ka hana, akā ʻo Calico, Canal a me Cilium aia ma hope iki a ma kahi o 10% ʻoi aku ka lohi ma mua o ka metala ʻole. Aia ʻo WeaveNet ma hope o 17%, akā ʻo WeaveNet i hoʻopili ʻia he 40% ma mua o Cilium i hoʻopili ʻia.

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)

Me SCP hiki iā mākou ke ʻike koke i ka nui o ke kumukūʻai SSH encryption iā mākou. Aneane e hana maikaʻi ana nā CNI a pau, akā ua lohi hou ʻo WeaveNet. ʻO Cilium a me WeaveNet me ka hoʻopili ʻana i manaʻo ʻia ʻo ka mea ʻino loa ma muli o ka hoʻopili pālua (SSH + CNI).

Eia kahi papa hōʻuluʻulu me nā hopena:

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)

Hoʻohana waiwai

I kēia manawa, e hoʻohālikelike i ka hoʻohana ʻana o CNI i nā kumuwaiwai ma lalo o nā haʻahaʻa kaumaha (i ka wā o ka hoʻoili ʻana o TCP, 10 Gbps). Ma nā hoʻokolohua hana hoʻohālikelike mākou i ka CNI me ka metala ʻole (laina ʻōmaʻomaʻo). No ka hoʻohana waiwai, e hōʻike kākou i nā Kubernetes maʻemaʻe (laina poni) me ka ʻole o CNI a ʻike i ka nui o nā kumu waiwai ʻē aʻe a CNI e hoʻopau ai.

E hoʻomaka kākou me ka hoʻomanaʻo. Eia ka waiwai maʻamau no nā nodes 'RAM (koe nā buffers a me ka cache) ma MB i ka wā e hoʻoili ai.

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)
Hoʻohana hoʻomanaʻo

Ua hōʻike ʻo Flannel a me Kube-router i nā hopena maikaʻi loa - 50 MB wale nō. Loaʻa iā Calico a me Canal he 70. ʻOi aku ka nui o ka WeaveNet ma mua o nā mea ʻē aʻe - 130 MB, a hoʻohana ʻo Cilium ma kahi o 400.
I kēia manawa e nānā kākou i ka hoʻohana manawa CPU. Hoʻomaopopo: ʻAʻole hōʻike ke kiʻikuhi i nā pākēneka, akā ppm, ʻo ia hoʻi, 38 ppm no ka "hao hao" he 3,8%. Eia nā hopena:

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)
Hoʻohana CPU

ʻO Calico, Canal, Flannel a me Kube-router he CPU maikaʻi loa - ʻo 2% wale nō ma mua o Kubernetes me ka ʻole CNI. WeaveNet i hope loa me ka 5% keu, ukali e Cilium ma 7%.

Eia ka hōʻuluʻulu o ka hoʻohana waiwai:

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)

Nā hopena

Papa me nā hualoaʻa a pau:

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)
Nā hualoaʻa hōʻailona maʻamau

hopena

Ma ka ʻāpana hope e hōʻike wau i koʻu manaʻo pili i nā hopena. E hoʻomanaʻo i ka hoʻāʻo ʻana o kēia benchmark i ka throughput o kahi pilina ma kahi puʻupuʻu liʻiliʻi loa (3 nodes). ʻAʻole pili ia i nā pūʻulu nui (<50 nodes) a i ʻole nā ​​pilina like.

Manaʻo wau e hoʻohana i kēia mau CNI e pili ana i ke ʻano:

  • Loaʻa iā ʻoe i kāu hui nā node me ka liʻiliʻi o nā kumuwaiwai (he mau GB o RAM, he mau cores) a ʻaʻole pono ʻoe i nā hiʻohiʻona palekana - koho Flannel. ʻO kēia kekahi o nā CNI maikaʻi loa. A ua kūpono ia me nā ʻano hana like ʻole (amd64, lima, arm64, etc.). Eia kekahi, ʻo kēia kekahi o ʻelua (ʻo Cilium ka mea ʻē aʻe) CNI hiki ke hoʻoholo maʻalahi i ka MTU, no laila ʻaʻole pono ʻoe e hoʻonohonoho i kekahi mea. He kūpono hoʻi ʻo Kube-router, akā ʻaʻole ia e like me ke ʻano maʻamau a pono ʻoe e hoʻonohonoho lima i ka MTU.
  • Inā pono hoʻopili i ka pūnaewele no ka palekana, e lawe WeaveNet. Mai poina e kuhikuhi i ka nui o ka MTU inā ʻoe e hoʻohana ana i nā kiʻi jumbo, a hiki i ka hoʻopili ʻana ma ke kuhikuhi ʻana i kahi huaʻōlelo ma o ka hoʻololi kaiapuni. Akā ʻoi aku ka maikaʻi o ka poina e pili ana i ka hana - ʻo ia ke kumukūʻai o ka hoʻopili.
  • no ka mea, hoʻohana maʻamau советую ʻO Kalico. Hoʻohana nui ʻia kēia CNI i nā mea hana hoʻolaha Kubernetes (Kops, Kubespray, Rancher, etc.). E like me WeaveNet, pono e hoʻonohonoho i ka MTU ma ConfigMap inā e hoʻohana ana i nā kiʻi jumbo. He mea hana nui ia i kūpono i ka hoʻohana ʻana i ka waiwai, ka hana a me ka palekana.

A ʻo ka hope, ke aʻo aku nei au iā ʻoe e hahai i ka hoʻomohala ʻana ʻO Cilium. He hui ikaika loa kēia CNI e hana nui ana i kā lākou huahana (nā hiʻohiʻona, mālama waiwai, hana, palekana, clustering ...) a he mau hoʻolālā hoihoi loa.

Kubernetes Networking Plugin (CNI) Benchmark Nā hualoaʻa ma luna o 10 Gbps Network (hōʻano hou ʻia ʻApelila 2019)
Kiʻi kiʻi no ke koho CNI

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka