Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)
Eyi ni imudojuiwọn mi ti tẹlẹ ala, eyiti o nṣiṣẹ bayi lori Kubernetes 1.14 pẹlu ẹya CNI tuntun bi Oṣu Kẹrin ọdun 2019.

Ni akọkọ, Mo fẹ dupẹ lọwọ ẹgbẹ Cilium: awọn eniyan ṣe iranlọwọ fun mi lati ṣayẹwo ati ṣatunṣe awọn iwe afọwọkọ ibojuwo metiriki.

Kini ti yipada lati Oṣu kọkanla ọdun 2018

Eyi ni ohun ti o yipada lati igba naa (ti o ba nifẹ):

Flannel maa wa ni wiwo CNI ti o yara julọ ati irọrun, ṣugbọn sibẹ ko ṣe atilẹyin awọn ilana nẹtiwọọki ati fifi ẹnọ kọ nkan.

Romana ko ṣe atilẹyin mọ, nitorinaa a ti yọ kuro ni ala-ilẹ.

WeaveNet ni bayi ṣe atilẹyin awọn ilana nẹtiwọọki fun Ingress ati Egress! Ṣugbọn iṣelọpọ ti dinku.

Ni Calico, o tun nilo lati tunto iwọn idii ti o pọju (MTU) pẹlu ọwọ fun iṣẹ ṣiṣe to dara julọ. Calico nfunni awọn aṣayan meji fun fifi sori ẹrọ CNI, nitorinaa o le ṣe laisi ibi ipamọ ETCD lọtọ:

  • ipo ipamọ ni Kubernetes API bi ibi ipamọ data (iwọn iṣupọ <50 awọn apa);
  • ipo fifipamọ sinu Kubernetes API gẹgẹbi ile itaja data pẹlu aṣoju Typha kan lati tu ẹru lori K8S API (iwọn iṣupọ> awọn apa 50).

Calico kede atilẹyin ohun elo ipele imulo lori oke Istio fun aabo ipele elo.

Cilium ṣe atilẹyin fifi ẹnọ kọ nkan bayi! Cilium n pese fifi ẹnọ kọ nkan pẹlu awọn tunnels IPSec ati pe o funni ni yiyan si nẹtiwọọki WeaveNet ti paroko. Ṣugbọn WeaveNet yiyara ju Cilium pẹlu fifi ẹnọ kọ nkan ṣiṣẹ.

Cilium ni bayi rọrun lati ran lọwọ ọpẹ si oniṣẹ ETCD ti a ṣe sinu rẹ.

Ẹgbẹ Cilium ti gbiyanju lati gee diẹ ninu iwuwo lati CNI rẹ nipa idinku agbara iranti ati awọn idiyele Sipiyu, ṣugbọn awọn oludije rẹ tun fẹẹrẹ.

Itumọ ala

Aṣepari naa jẹ ṣiṣe lori awọn olupin Supermicro mẹta ti kii ṣe foju foju kan pẹlu 10 Gb Supermicro yipada. Awọn olupin naa ti sopọ taara si iyipada nipasẹ palolo DAC SFP + awọn kebulu ati pe a tunto lori VLAN kanna pẹlu awọn fireemu jumbo (MTU 9000).

Kubernetes 1.14.0 ti fi sori ẹrọ lori Ubuntu 18.04 LTS pẹlu Docker 18.09.2 (ẹya Docker aiyipada ni idasilẹ yii).

Lati mu atunṣe pada, a pinnu lati tunto oluwa nigbagbogbo lori ipade akọkọ, gbe apakan olupin ti ala-ilẹ lori olupin keji, ati apakan onibara lori kẹta. Lati ṣe eyi, a lo NodeSelector ni awọn imuṣiṣẹ Kubernetes.

A yoo ṣe apejuwe awọn abajade ala-ilẹ lori iwọn atẹle:

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)

Yiyan CNI kan fun ala

Eyi jẹ ala-ilẹ nikan fun CNI lati atokọ ni apakan nipa ṣiṣẹda ọkan titunto si iṣupọ pẹlu kubeadm Wo awọn iwe aṣẹ Kubernetes. Ninu awọn CNI 9, a yoo gba 6 nikan: a yoo yọkuro awọn ti o ṣoro lati fi sori ẹrọ ati / tabi ko ṣiṣẹ laisi iṣeto ni ibamu si iwe-ipamọ (Romana, Contiv-VPP ati JuniperContrail/TungstenFabric).

A yoo ṣe afiwe awọn CNI wọnyi:

  • Calico v3.6
  • Canal v3.6 (pataki Flannel fun Nẹtiwọki + Calico bi ogiriina)
  • Siliomu 1.4.2
  • Flannel 0.11.0
  • Kube-olulana 0.2.5
  • WeaveNet 2.5.1

eto

Rọrun CNI ni lati fi sori ẹrọ, dara julọ sami akọkọ wa yoo jẹ. Gbogbo awọn CNI lati ala-ilẹ jẹ rọrun pupọ lati fi sori ẹrọ (pẹlu awọn aṣẹ kan tabi meji).

Gẹgẹbi a ti sọ, awọn olupin ati yipada ni tunto pẹlu awọn fireemu jumbo ṣiṣẹ (a ṣeto MTU si 9000). Inu wa yoo dun ti CNI ba pinnu laifọwọyi MTU da lori iṣeto awọn oluyipada. Sibẹsibẹ, Cilium ati Flannel nikan ni o ṣakoso eyi. Awọn iyokù CNI ni awọn ibeere lori GitHub lati ṣafikun wiwa MTU laifọwọyi, ṣugbọn a yoo tunto rẹ pẹlu ọwọ nipa yiyipada ConfigMap fun Calico, Canal ati Kube-router, tabi gbigbe iyipada agbegbe fun WeaveNet.

Kini iṣoro pẹlu MTU ti ko tọ? Aworan yi fihan iyatọ laarin WeaveNet pẹlu MTU aiyipada ati awọn fireemu jumbo ṣiṣẹ:

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)
Bawo ni MTU ṣe ni ipa lori iṣelọpọ?

A ti rii bii MTU ṣe ṣe pataki fun iṣẹ ṣiṣe, ni bayi jẹ ki a wo bii awọn CNI wa ṣe pinnu rẹ laifọwọyi:

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)
CNI ṣe iwari MTU laifọwọyi

Aworan naa fihan pe o nilo lati tunto MTU fun Calico, Canal, Kube-router ati WeaveNet fun iṣẹ ṣiṣe to dara julọ. Cilium ati Flannel ni anfani lati pinnu MTU funrararẹ laisi awọn eto eyikeyi.

Aabo

A yoo ṣe afiwe aabo CNI ni awọn aaye meji: agbara lati encrypt data ti a firanṣẹ ati imuse ti awọn eto nẹtiwọọki Kubernetes (da lori awọn idanwo gidi, kii ṣe iwe).

Nikan meji CNIs encrypt data: Cilium ati WeaveNet. ìsekóòdù WeaveNet ṣiṣẹ nipa siseto ọrọ igbaniwọle fifi ẹnọ kọ nkan bi iyipada ayika CNI. IN iwe WeaveNet ṣe apejuwe rẹ ni ọna idiju, ṣugbọn ohun gbogbo ni a ṣe ni irọrun. ìsekóòdù Siliomu tunto nipasẹ awọn aṣẹ, nipa ṣiṣẹda awọn aṣiri Kubernetes, ati nipasẹ iyipada ti daemonSet (idiju diẹ sii ju WeaveNet, ṣugbọn Cilium ni igbese-nipasẹ-igbesẹ awọn ilana).

Bi fun imuse ti eto imulo nẹtiwọki, wọn ti ṣaṣeyọri Calico, Canal, Cilium ati WeaveNet, ninu eyiti o le tunto Awọn ofin Ingress ati Egress. Fun Kube-olulana nibẹ ni o wa ofin nikan fun Ingress, ati Flannel Ko si awọn ilana nẹtiwọki ni gbogbo.

Eyi ni awọn abajade lapapọ:

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)
Awọn abajade Iṣe Aabo

Ise sise

Iṣe ala yii ṣe afihan agbejade apapọ lori o kere ju awọn ṣiṣe mẹta ti idanwo kọọkan. A ṣe idanwo iṣẹ TCP ati UDP (lilo iperf3), awọn ohun elo gidi bii HTTP (pẹlu Nginx ati curl) tabi FTP (pẹlu vsftpd ati curl) ati nikẹhin iṣẹ ohun elo nipa lilo fifi ẹnọ kọ nkan ti SCP (lilo alabara ati olupin OpenSSH).

Fun gbogbo awọn idanwo, a ṣe ala-ilẹ irin (laini alawọ ewe) lati ṣe afiwe iṣẹ CNI pẹlu iṣẹ nẹtiwọọki abinibi. Nibi a lo iwọn kanna, ṣugbọn ni awọ:

  • Yellow = dara julọ
  • Orange = dara
  • Blue = bẹ-bẹ
  • Pupa = buburu

A kii yoo gba awọn CNI ti a tunto ti ko tọ ati pe yoo ṣafihan awọn abajade fun awọn CNI nikan pẹlu MTU to pe. (Akiyesi: Cilium ko ṣe iṣiro MTU ni deede ti o ba mu fifi ẹnọ kọ nkan, nitorinaa iwọ yoo ni lati dinku MTU pẹlu ọwọ si 8900 ni ẹya 1.4. Ẹya ti o tẹle, 1.5, ṣe eyi laifọwọyi.)

Eyi ni awọn abajade:

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)
TCP Performance

Gbogbo awọn CNI ṣe daradara ni ala ala TCP. CNI pẹlu ìsekóòdù lags jina sile nitori ìsekóòdù jẹ gbowolori.

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)
UDP iṣẹ

Nibi, paapaa, gbogbo awọn CNI n ṣe daradara. CNI pẹlu ìsekóòdù fihan fere esi kanna. Cilium jẹ diẹ lẹhin idije naa, ṣugbọn o jẹ 2,3% ti irin igboro, nitorinaa kii ṣe abajade buburu. Maṣe gbagbe pe Cilium ati Flannel nikan pinnu MTU ni deede, ati pe iwọnyi ni awọn abajade wọn laisi iṣeto ni afikun.

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)

Kini nipa ohun elo gidi kan? Bii o ti le rii, iṣẹ gbogbogbo fun HTTP jẹ kekere diẹ ju fun TCP. Paapa ti o ba lo HTTP pẹlu TCP, a tunto iperf3 ninu aami ala TCP lati yago fun ibẹrẹ ti o lọra ti yoo ni ipa lori aami HTTP. Gbogbo eniyan ṣe iṣẹ to dara nibi. Kube-router ni anfani ti o daju, ṣugbọn WeaveNet ko ṣe daradara: nipa 20% buru ju irin lọ. Cilium ati WeaveNet pẹlu ìsekóòdù wo gan ìbànújẹ.

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)

Pẹlu FTP, Ilana ti o da lori TCP miiran, awọn abajade yatọ. Flannel ati Kube-router ṣe iṣẹ naa, ṣugbọn Calico, Canal ati Cilium jẹ diẹ lẹhin ati pe o jẹ nipa 10% losokepupo ju irin igboro lọ. WeaveNet wa lẹhin nipasẹ bii 17%, ṣugbọn WeaveNet ti paroko jẹ 40% niwaju Cilium ti paroko.

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)

Pẹlu SCP a le rii lẹsẹkẹsẹ iye ti fifi ẹnọ kọ nkan SSH jẹ iye owo wa. O fẹrẹ jẹ pe gbogbo awọn CNI n ṣe daradara, ṣugbọn WeaveNet n dinku lẹhin lẹẹkansi. Cilium ati WeaveNet pẹlu fifi ẹnọ kọ nkan ni a nireti pe o buru julọ nitori fifi ẹnọ kọ nkan meji (SSH + CNI).

Eyi ni tabili akojọpọ pẹlu awọn abajade:

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)

Lilo awọn oluşewadi

Bayi jẹ ki a ṣe afiwe bii CNI ṣe n gba awọn orisun labẹ awọn ẹru iwuwo (lakoko gbigbe TCP, 10 Gbps). Ninu awọn idanwo iṣẹ a ṣe afiwe CNI pẹlu irin igboro (ila alawọ ewe). Fun agbara awọn oluşewadi, jẹ ki a ṣe afihan Kubernetes mimọ (laini eleyi ti) laisi CNI ati wo iye awọn orisun afikun CNI n gba.

Jẹ ká bẹrẹ pẹlu iranti. Eyi ni iye apapọ fun Ramu awọn apa (laisi awọn buffers ati kaṣe) ni MB lakoko gbigbe.

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)
Lilo iranti

Flannel ati Kube-router fihan awọn esi to dara julọ - 50 MB nikan. Calico ati Canal kọọkan ni 70. WeaveNet njẹ kedere diẹ sii ju awọn miiran lọ - 130 MB, ati Cilium nlo bi 400.
Bayi jẹ ki ká ṣayẹwo awọn Sipiyu akoko agbara. Ohun akiyesi: aworan atọka ko fihan awọn ipin ogorun, ṣugbọn ppm, iyẹn ni, 38 ppm fun “irin igboro” jẹ 3,8%. Eyi ni awọn abajade:

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)
Sipiyu agbara

Calico, Canal, Flannel ati Kube-router jẹ daradara Sipiyu daradara - nikan 2% diẹ sii ju Kubernetes laisi CNI. WeaveNet lags jina sile pẹlu afikun 5%, atẹle nipa Cilium ni 7%.

Eyi ni akopọ ti lilo awọn orisun:

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)

Awọn esi

Tabili pẹlu gbogbo awọn abajade:

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)
Awọn abajade ala gbogbogbo

ipari

Ni apakan ti o kẹhin Emi yoo ṣalaye ero-ara mi lori awọn abajade. Ranti pe ala yii nikan ṣe idanwo igbejade ti asopọ ẹyọkan lori iṣupọ kekere pupọ (awọn apa 3). Ko kan awọn iṣupọ nla (<50 nodes) tabi awọn asopọ ti o jọra.

Mo ṣeduro lilo awọn CNI wọnyi da lori oju iṣẹlẹ naa:

  • Ṣe o ni ninu rẹ iṣupọ apa pẹlu diẹ oro (ọpọlọpọ GB ti Ramu, ọpọlọpọ awọn ohun kohun) ati pe o ko nilo awọn ẹya aabo - yan Flannel. Eyi jẹ ọkan ninu awọn CNI ti o munadoko julọ. Ati pe o ni ibamu pẹlu ọpọlọpọ awọn ayaworan ile (amd64, apa, arm64, bbl). Ni afikun, eyi jẹ ọkan ninu awọn meji (keji jẹ Cilium) CNI ti o le ṣe ipinnu MTU laifọwọyi, nitorina o ko ni lati tunto ohunkohun. Kube-router tun dara, ṣugbọn kii ṣe bii boṣewa ati pe iwọ yoo nilo lati tunto MTU pẹlu ọwọ.
  • Ti o ba nilo encrypt nẹtiwọki fun ailewu, gba WeaveNet. Maṣe gbagbe lati pato iwọn MTU ti o ba nlo awọn fireemu jumbo, ati mu fifi ẹnọ kọ nkan ṣiṣẹ nipa sisọ ọrọ igbaniwọle kan nipasẹ oniyipada ayika. Ṣugbọn o dara lati gbagbe nipa iṣẹ ṣiṣe - iyẹn ni idiyele fifi ẹnọ kọ nkan.
  • fun lilo deede советую Calico. CNI yii jẹ lilo pupọ ni ọpọlọpọ awọn irinṣẹ imuṣiṣẹ Kubernetes (Kops, Kubespray, Rancher, bbl). Gẹgẹbi WeaveNet, rii daju pe o tunto MTU ni ConfigMap ti o ba nlo awọn fireemu jumbo. O jẹ ohun elo iṣẹ-ọpọlọpọ ti o munadoko ni awọn ofin ti lilo awọn orisun, iṣẹ ati aabo.

Ati nikẹhin, Mo gba ọ ni imọran lati tẹle idagbasoke naa Siliomu. CNI yii ni ẹgbẹ ti nṣiṣe lọwọ pupọ ti o ṣiṣẹ pupọ lori ọja wọn (awọn ẹya ara ẹrọ, ifowopamọ awọn orisun, iṣẹ ṣiṣe, aabo, iṣupọ…) ati pe wọn ni awọn ero ti o nifẹ pupọ.

Kubernetes Network Plugin (CNI) Awọn abajade ipilẹ ala lori 10 Gbps Network (Imudojuiwọn: Oṣu Kẹrin ọdun 2019)
Aworan aworan fun CNI yiyan

orisun: www.habr.com

Fi ọrọìwòye kun