ʻO kēia kaʻu mea hou
ʻ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
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:
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 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:
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:
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
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:
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:
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.
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.
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.
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.
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:
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.
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:
ʻ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:
Nā hopena
Papa me nā hualoaʻa a pau:
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.
Source: www.habr.com