ProHoster > Օրագիր > Վարչակազմը > CNI-ի կատարողականի գնահատում Kubernetes-ի համար 10G ցանցի համար (օգոստոս 2020)
CNI-ի կատարողականի գնահատում Kubernetes-ի համար 10G ցանցի համար (օգոստոս 2020)
TL; DR. Բոլոր CNI-ները աշխատում են այնպես, ինչպես պետք է, բացառությամբ Kube-Router-ի և Kube-OVN-ի, Calico-ն, բացառությամբ MTU-ի ավտոմատ հայտնաբերման, լավագույնն է:
Իմ անցյալ ստուգումների հոդված-թարմացում (2018 и 2019), փորձարկման պահին ես օգտագործում եմ Kubernetes 1.19 Ubuntu 18.04-ում թարմացված CNI-ներով 2020 թվականի օգոստոսի դրությամբ:
Նախքան չափումների մեջ մտնելը...
Ի՞նչ նորություններ կան 2019 թվականի ապրիլից:
Կարող եք փորձարկել ձեր սեփական կլաստերի վրա. Դուք կարող եք փորձարկել ձեր սեփական կլաստերի վրա՝ օգտագործելով մեր գործիքը Kubernetes ցանցի չափանիշ: knb
Նոր սցենարներ. Ընթացիկ ստուգումները կատարում են «Pod-to-Pod» ցանցի կատարողականի թեստեր, և ավելացվել է նոր «Pod-to-Service» սկրիպտը, որն իրականացնում է թեստերը ավելի մոտ իրական աշխարհի պայմաններին: Գործնականում ձեր Pod with API-ն աշխատում է բազայի հետ՝ որպես ծառայություն, և ոչ թե Pod ip հասցեի միջոցով (իհարկե մենք ստուգում ենք և՛ TCP, և՛ UDP երկու սցենարների համար)։
Ռեսուրսների սպառում. յուրաքանչյուր թեստ այժմ ունի իր ռեսուրսների համեմատությունը
Հավելվածի թեստերի հեռացում. մենք այլևս չենք կատարում HTTP, FTP և SCP թեստեր, քանի որ մեր արդյունավետ համագործակցությունը համայնքի և CNI սպասարկողների հետ բացահայտել է Iperf արդյունքների միջև TCP-ի և curl արդյունքների միջև բացը CNI-ի գործարկման հետաձգման պատճառով (Pod-ի առաջին մի քանի վայրկյանները): ստարտափ, որը բնորոշ չէ իրական պայմաններում):
Բաց աղբյուր. բոլոր թեստային աղբյուրները (սկրիպտներ, yml կարգավորումներ և բնօրինակ «հում» տվյալներ) հասանելի են այստեղ
Հղման փորձարկման արձանագրություն
Արձանագրությունը մանրամասն նկարագրված է այստեղԽնդրում ենք նկատի ունենալ, որ այս հոդվածը Ubuntu 18.04-ի մասին է լռելյայն միջուկով:
Գնահատման համար CNI ընտրելը
Այս թեստավորման նպատակն է համեմատել CNI-ները, որոնք կազմաձևված են մեկ yaml ֆայլի հետ (հետևաբար, բոլոր սկրիպտներով տեղադրվածները, ինչպիսիք են VPP-ը և այլն, բացառված են):
Համեմատության համար մեր ընտրած CNI-ները.
Antrea v.0.9.1
Calico v3.16
Canal v3.16 (Flannel ցանց + Calico ցանցային քաղաքականություն)
Կիլիում 1.8.2
Ֆլանել 0.12.0
Kube-երթուղիչը վերջին (2020–08–25)
WeaveNet 2.7.0
MTU-ի կարգավորում CNI-ի համար
Առաջին հերթին մենք ստուգում ենք ավտոմատ MTU հայտնաբերման ազդեցությունը TCP-ի կատարողականի վրա.
MTU-ի ազդեցությունը TCP-ի կատարողականի վրա
Նույնիսկ ավելի մեծ բաց է հայտնաբերվում UDP-ի օգտագործման ժամանակ.
MTU-ի ազդեցությունը UDP-ի կատարողականի վրա
Հաշվի առնելով թեստերում բացահայտված աշխատանքի հսկա ազդեցությունը, մենք ցանկանում ենք հույսի նամակ ուղարկել բոլոր CNI սպասարկողներին. խնդրում ենք ավելացնել ավտոմատ MTU հայտնաբերումը CNI-ին: Դուք կփրկեք ձագերին, միաեղջյուրներին և նույնիսկ ամենասիրունին՝ փոքրիկ Դևոպին:
Այնուամենայնիվ, եթե Ձեզ անհրաժեշտ է օգտագործել CNI առանց ավտոմատ MTU հայտնաբերման աջակցության, կարող եք այն ձեռքով կարգավորել՝ կատարողականություն ստանալու համար: Խնդրում ենք նկատի ունենալ, որ դա վերաբերում է Calico-ին, Canal-ին և WeaveNet-ին:
Իմ փոքրիկ խնդրանքը ուղեկցող CNI-ներին...
CNI թեստավորում. չմշակված տվյալներ
Այս բաժնում մենք կհամեմատենք CNI-ն ճիշտ MTU-ի հետ (որոշվում է ավտոմատ կերպով կամ սահմանվում է ձեռքով): Այստեղ հիմնական նպատակն է ցույց տալ չմշակված տվյալները գրաֆիկներում:
Գույնի լեգենդ.
մոխրագույն - նմուշ (այսինքն՝ մերկ երկաթ)
կանաչ - 9500 Մբիթ/վրկ թողունակություն
դեղին - թողունակությունը 9000 Մբիթ/վրկ-ից բարձր
նարնջագույն - 8000 Մբիթ/վրկ թողունակություն
կարմիր - 8000 Մբիթ/վրկ-ից ցածր թողունակություն
կապույտ - չեզոք (կապված չէ թողունակության հետ)
Առանց բեռի ռեսուրսների սպառում
Առաջին հերթին ստուգեք ռեսուրսների սպառումը, երբ կլաստերը «քնած է»:
Առանց բեռի ռեսուրսների սպառում
Pod-to-Pod
Այս սցենարը ենթադրում է, որ հաճախորդի Pod-ը ուղղակիորեն միանում է սերվերի Pod-ին՝ օգտագործելով իր IP հասցեն:
Pod-to-Pod սցենար
TCP
Pod-to-Pod TCP արդյունքները և համապատասխան ռեսուրսների սպառումը.
UDP
Pod-to-Pod UDP արդյունքները և համապատասխան ռեսուրսների սպառումը.
Pod-to-Service
Այս բաժինը վերաբերում է իրական օգտագործման դեպքերին, հաճախորդը Pod-ը միանում է սերվերի Pod-ին ClusterIP ծառայության միջոցով:
Pod-to-Service սցենար
TCP
Pod-to-Service TCP արդյունքները և համապատասխան ռեսուրսների սպառումը.
UDP
Pod-to-Service UDP արդյունքները և համապատասխան ռեսուրսների սպառումը.
Ցանցային քաղաքականության աջակցություն
Վերոնշյալ բոլորի մեջ միակը, ով չի աջակցում քաղաքականությանը, Ֆլանելն է։ Բոլոր մյուսները ճիշտ են իրականացնում ցանցային քաղաքականությունը, ներառյալ ներգնա և ելքային: Հիանալի աշխատանք:
CNI կոդավորումը
Ստուգված CNI-ների թվում կան այնպիսիք, որոնք կարող են ծածկագրել ցանցային փոխանակումը Pods-ի միջև.
Antrea օգտագործելով IPsec
Calico օգտագործելով մետաղալարեր
Cilium օգտագործելով IPsec
WeaveNet օգտագործելով IPsec
Շրջանառություն
Քանի որ ավելի քիչ CNI-ներ են մնացել, եկեք բոլոր սցենարները դնենք մեկ գրաֆիկի մեջ.
Ռեսուրսների սպառում
Այս բաժնում մենք կգնահատենք այն ռեսուրսները, որոնք օգտագործվում են TCP-ում և UDP-ում Pod-to-Pod հաղորդակցությունը մշակելիս: Pod-to-Service գրաֆիկը գծելու իմաստ չկա, քանի որ այն լրացուցիչ տեղեկատվություն չի տրամադրում:
Այս ամենը միասին դնելով
Փորձենք կրկնել բոլոր գրաֆիկները, մենք այստեղ մի փոքր սուբյեկտիվություն ներկայացրինք՝ իրական արժեքները փոխարինելով «vwry fast», «low» և այլն բառերով։
Եզրակացություն և իմ եզրակացությունները
Սա մի փոքր սուբյեկտիվ է, քանի որ ես փոխանցում եմ արդյունքների իմ մեկնաբանությունը։
Ուրախ եմ, որ հայտնվեցին նոր CNI-ներ, Antrea-ն լավ կատարեց, շատ գործառույթներ իրականացվեցին նույնիսկ վաղ տարբերակներում՝ ավտոմատ MTU հայտնաբերում, կոդավորում և հեշտ տեղադրում:
Եթե համեմատենք կատարողականը, ապա բոլոր CNI-ները լավ են աշխատում, բացառությամբ Kube-OVN-ի և Kube-Router-ի: Kube-Router-ը նույնպես չկարողացավ հայտնաբերել MTU-ն, ես փաստաթղթերում որևէ տեղ այն կարգավորելու միջոց չգտա (այստեղ հարցումը բաց է այս թեմայով):
Ռեսուրսների սպառման առումով, Cilium-ը դեռ օգտագործում է ավելի շատ օպերատիվ հիշողություն, քան մյուսները, բայց արտադրողը ակնհայտորեն թիրախավորում է մեծ կլաստերները, ինչը ակնհայտորեն նույնը չէ, ինչ երեք հանգույցների կլաստերի վրա փորձարկումը: Kube-OVN-ը նույնպես սպառում է CPU-ի և RAM-ի շատ ռեսուրսներ, սակայն այն երիտասարդ CNI է, որը հիմնված է Open vSwitch-ի վրա (ինչպես Antrea-ն, այն ավելի լավ է աշխատում և ավելի քիչ սպառում):
Բոլորը, բացի Flannel-ից, ունեն ցանցային քաղաքականություն: Շատ հավանական է, որ նա երբեք չի աջակցի նրանց, քանի որ նպատակն ավելի պարզ է, քան շոգեխաշած շաղգամը՝ որքան թեթև, այնքան լավ։
Բացի այդ, ի թիվս այլ բաների, գաղտնագրման կատարումը զարմանալի է: Calico-ն ամենահին CNI-ներից մեկն է, սակայն գաղտնագրումն ավելացվել է ընդամենը մի քանի շաբաթ առաջ: Նրանք IPsec-ի փոխարեն ընտրեցին wireguard-ը, և պարզ ասած, այն աշխատում է հիանալի և զարմանալի՝ ամբողջովին խավարելով այլ CNI-ները թեստավորման այս մասում: Իհարկե, ռեսուրսների սպառումն ավելանում է գաղտնագրման շնորհիվ, բայց ձեռք բերված թողունակությունը արժե այն (Calico-ն վեց անգամ բարելավում է գաղտնագրման թեստում՝ համեմատած Cilium-ի հետ, որը երկրորդ տեղում է): Ավելին, Calico-ն կլաստերի մեջ տեղակայելուց հետո ցանկացած պահի կարող եք միացնել wireguard-ը, ինչպես նաև կարող եք կարճ ժամանակով կամ ընդմիշտ անջատել այն, եթե ցանկանում եք: Այնուամենայնիվ, դա աներևակայելի հարմար է: Հիշեցնում ենք ձեզ, որ Calico-ն ներկայումս ավտոմատ կերպով չի հայտնաբերում MTU-ն (այս հնարավորությունը նախատեսված է ապագա տարբերակների համար), այնպես որ համոզվեք, որ կարգավորեք MTU-ն, եթե ձեր ցանցն աջակցում է Jumbo Frames-ին (MTU 9000):
Ի թիվս այլ բաների, նշեք, որ Cilium-ը կարող է գաղտնագրել երթևեկությունը կլաստերային հանգույցների միջև (և ոչ միայն Pods-ի միջև), ինչը կարող է շատ կարևոր լինել հանրային կլաստերային հանգույցների համար:
Որպես եզրակացություն, ես առաջարկում եմ հետևյալ օգտագործման դեպքերը.
Պետք է CNI շատ փոքր կլաստերի համար, ԿԱՄ ես անվտանգության կարիք չունեմ: հետ աշխատել Ֆլանել, ամենաթեթև և կայուն CNI (նա նաև ամենահիններից մեկն է, ըստ լեգենդի նա հորինել է Homo Kubernautus-ը կամ Homo Contaitorus-ը։) Ձեզ նույնպես կարող է հետաքրքրել ամենահնարամիտ նախագիծը k3-ականներ, ստուգեք
Պետք է CNI կանոնավոր կլաստերի համար: Calico- ն - ձեր ընտրությունը, բայց անհրաժեշտության դեպքում մի մոռացեք կարգավորել MTU-ն: Դուք կարող եք հեշտությամբ և բնականաբար խաղալ ցանցային քաղաքականության հետ, միացնել և անջատել գաղտնագրումը և այլն:
Անհրաժեշտ է CNI (շատ) լայնածավալ կլաստերի համարԴե, թեստը ցույց չի տալիս մեծ կլաստերների վարքագիծը, ես ուրախ կլինեմ թեստեր անցկացնել, բայց մենք չունենք հարյուրավոր սերվերներ 10 Գբիտ/վրկ կապով։ Այսպիսով, լավագույն տարբերակը ձեր հանգույցների վրա փոփոխված թեստ կատարելն է, գոնե Calico-ի և Cilium-ի հետ: