ProHoster > Blog > İdarə > 10G şəbəkəsi üzərindən Kubernetes üçün CNI Performans Qiymətləndirilməsi (Avqust 2020)
10G şəbəkəsi üzərindən Kubernetes üçün CNI Performans Qiymətləndirilməsi (Avqust 2020)
TL; DR: Kube-Router və Kube-OVN istisna olmaqla, bütün CNI-lər lazım olduğu kimi işləyir, avtomatik MTU aşkarlanması istisna olmaqla, Calico ən yaxşısıdır.
Keçmiş yoxlamalarımın məqalə yenilənməsi (2018 и 2019), sınaq zamanı mən Ubuntu 1.19-də Kubernetes 18.04-dan 2020-ci ilin avqust ayından etibarən yenilənmiş CNI-lərlə istifadə edirəm.
Metriklərə keçməzdən əvvəl...
2019-cu ilin aprelindən nə yeniliklər var?
Öz klasterinizdə test edə bilərsiniz: Alətimizdən istifadə edərək öz klasterinizdə testlər keçirə bilərsiniz Kubernetes Network Benchmark: knb
Yeni Ssenarilər: Cari yoxlamalar "Pod-to-Pod" şəbəkə performans testlərini həyata keçirir və testləri real dünya şərtlərinə yaxınlaşdıran yeni "Pod-to-Service" skripti əlavə edilib. Praktikada, API ilə Podunuz Pod ip ünvanı vasitəsilə deyil, bir xidmət kimi baza ilə işləyir (əlbəttə ki, hər iki ssenari üçün həm TCP, həm də UDP-ni yoxlayırıq).
Resurs istehlakı: hər testin indi öz resurs müqayisəsi var
Tətbiq Testlərinin Silinməsi: Biz artıq HTTP, FTP və SCP testlərini etmirik, çünki icma və CNI baxıcıları ilə səmərəli əməkdaşlığımız CNI işə salınmasında gecikmə (Pod-un ilk bir neçə saniyəsi) səbəbindən TCP üzərində iperf nəticələri və curl nəticələri arasında fərq aşkar etdi. real şəraitdə tipik olmayan başlanğıc).
Açıq mənbə: bütün test mənbələri (skriptlər, yml parametrləri və orijinal “xam” məlumatlar) mövcuddur burada
İstinad Test Protokolu
Protokol ətraflı təsvir edilmişdir buradaNəzərə alın ki, bu məqalə standart nüvəli Ubuntu 18.04 haqqındadır.
Qiymətləndirmə üçün CNI-nin seçilməsi
Bu test bir yaml faylı ilə konfiqurasiya edilmiş CNI-ləri müqayisə etmək məqsədi daşıyır (buna görə də VPP və başqaları kimi skriptlər tərəfindən quraşdırılmış bütün proqramlar istisna olunur).
Hər şeydən əvvəl, avtomatik MTU aşkarlamasının TCP performansına təsirini yoxlayırıq:
MTU-nun TCP Performansına təsiri
UDP istifadə edərkən daha böyük boşluq aşkar edilir:
MTU-nun UDP Performansına təsiri
Sınaqlarda aşkar edilən BÖYÜK performans təsirini nəzərə alaraq, biz bütün CNI xidmətçilərinə ümid məktubu göndərmək istərdik: lütfən, CNI-yə avtomatik MTU aşkarlamasını əlavə edin. Siz pişik balalarını, təkbuynuzluları və hətta ən şirinini xilas edəcəksiniz: balaca Devop.
Bununla belə, avtomatik MTU aşkarlanması dəstəyi olmadan CNI-dən istifadə etməlisinizsə, performans əldə etmək üçün onu əl ilə konfiqurasiya edə bilərsiniz. Nəzərə alın ki, bu Calico, Canal və WeaveNet-ə aiddir.
Müşayiət edən CNI-lərə kiçik xahişim...
CNI Testi: Xam məlumat
Bu bölmədə biz CNI-ni düzgün MTU ilə müqayisə edəcəyik (avtomatik olaraq müəyyən edilir və ya əl ilə təyin olunur). Burada əsas məqsəd xam məlumatları qrafiklərdə göstərməkdir.
Rəng əfsanəsi:
boz - nümunə (yəni çılpaq dəmir)
yaşıl - 9500 Mbps-dən yuxarı bant genişliyi
sarı - 9000 Mbps-dən yuxarı bant genişliyi
narıncı - 8000 Mbps-dən yuxarı bant genişliyi
qırmızı - 8000 Mbps-dən aşağı bant genişliyi
mavi - neytral (band genişliyi ilə əlaqəli deyil)
Yüksüz resurs istehlakı
Hər şeydən əvvəl, klaster "yatarkən" resurs istehlakını yoxlayın.
Yüksüz resurs istehlakı
Pod-to-Pod
Bu ssenari, müştəri Pod-un IP ünvanından istifadə edərək birbaşa server Pod-a qoşulmasını nəzərdə tutur.
Pod-to-Pod Ssenarisi
TCP
Pod-to-Pod TCP nəticələri və müvafiq resurs istehlakı:
UDP
Pod-to-Pod UDP nəticələri və müvafiq resurs istehlakı:
Pod-to-Service
Bu bölmə real istifadə halları üçün aktualdır, müştəri Pod ClusterIP xidməti vasitəsilə server Pod-a qoşulur.
Pod-to-Service Skripti
TCP
Pod-to-Service TCP nəticələri və müvafiq resurs istehlakı:
UDP
Pod-to-Service UDP nəticələri və müvafiq resurs istehlakı:
Şəbəkə siyasəti dəstəyi
Bütün yuxarıda göstərilənlər arasında siyasəti dəstəkləməyən yeganə Flaneldir. Bütün digərləri daxil olan və gedən daxil olmaqla şəbəkə siyasətini düzgün şəkildə həyata keçirir. Əla işdir!
CNI şifrələməsi
Yoxlanılan CNI-lər arasında Podlar arasında şəbəkə mübadiləsini şifrələyə bilənlər var:
IPsec istifadə edərək antrea
Tel qoruyucu istifadə edərək Calico
IPsec istifadə edərək Cilium
IPsec istifadə edərək WeaveNet
Ötürmə qabiliyyəti
Daha az CNI qaldığından, bütün ssenariləri bir qrafikdə yerləşdirək:
Resurs istehlakı
Bu bölmədə biz TCP və UDP-də Pod-to-Pod rabitəsini emal edərkən istifadə olunan resursları qiymətləndirəcəyik. Pod-to-Service qrafikini çəkməyin mənası yoxdur, çünki o, əlavə məlumat vermir.
Hamısını bir yerə yığmaq
Bütün qrafikləri təkrarlamağa çalışaq, biz burada bir az subyektivlik təqdim etdik, faktiki dəyərləri “vwry fast”, “aşağı” və s. sözləri ilə əvəz etdik.
Nəticə və mənim nəticələrim
Bu, bir az subyektivdir, çünki mən nəticələri öz şərhimi çatdırıram.
Şadam ki, yeni CNI-lər meydana çıxdı, Antrea yaxşı çıxış etdi, bir çox funksiyalar hətta ilkin versiyalarda həyata keçirildi: avtomatik MTU aşkarlanması, şifrələmə və asan quraşdırma.
Performansı müqayisə etsək, Kube-OVN və Kube-Router istisna olmaqla, bütün CNI-lər yaxşı işləyir. Kube-Router də MTU-nu aşkar edə bilmədi, sənədlərin heç bir yerində onu konfiqurasiya etmək üçün bir yol tapmadım (burada bu mövzuda sorğu açıqdır).
Resurs istehlakı baxımından, Cilium hələ də digərlərinə nisbətən daha çox RAM istifadə edir, lakin istehsalçı açıq şəkildə böyük klasterləri hədəfləyir, bu, açıq şəkildə üç qovşaqlı çoxluqdakı testlə eyni deyil. Kube-OVN də çoxlu CPU və RAM resursları istehlak edir, lakin Open vSwitch-ə əsaslanan gənc CNI-dir (Antrea kimi, daha yaxşı işləyir və daha az istehlak edir).
Flaneldən başqa hər kəsin şəbəkə siyasətləri var. Çox güman ki, o, heç vaxt onları dəstəkləməyəcək, çünki məqsəd buxarda hazırlanmış şalgamdan daha sadədir: nə qədər yüngül olsa, bir o qədər yaxşıdır.
Həmçinin, digər şeylər arasında, şifrələmə performansı heyrətamizdir. Calico ən qədim CNI-lərdən biridir, lakin şifrələmə yalnız bir neçə həftə əvvəl əlavə edilib. Onlar IPsec əvəzinə wireguard seçdilər və sadəcə desək, testin bu hissəsində digər CNI-ləri tamamilə üstələyən əla və heyrətamiz işləyir. Əlbəttə ki, resurs istehlakı şifrələmə səbəbindən artır, lakin əldə edilən ötürmə qabiliyyəti buna dəyər (Calico ikinci yerdə olan Cilium ilə müqayisədə şifrələmə testində altı dəfə yaxşılaşma göstərdi). Üstəlik, Calico-nu klasterə yerləşdirdikdən sonra istənilən vaxt tel qoruyucusunu aktivləşdirə bilərsiniz və istədiyiniz zaman onu qısa müddətə və ya daimi olaraq söndürə bilərsiniz. Baxmayaraq ki, inanılmaz dərəcədə rahatdır! Xatırladırıq ki, Calico hazırda MTU-nu avtomatik aşkarlamır (bu xüsusiyyət gələcək versiyalar üçün nəzərdə tutulub), ona görə də şəbəkəniz Jumbo Çərçivələri (MTU 9000) dəstəkləyirsə, MTU-nu konfiqurasiya etməyi unutmayın.
Digər şeylər arasında qeyd edin ki, Cilium klaster qovşaqları arasında (yalnız Podlar arasında deyil) trafiki şifrələyə bilər ki, bu da ictimai klaster qovşaqları üçün çox vacib ola bilər.
Nəticə olaraq aşağıdakı istifadə hallarını təklif edirəm:
Çox kiçik klaster üçün CNI lazımdır YA mühafizəyə ehtiyacım yoxdur: ilə işləmək Flanel, ən yüngül və ən sabit CNI (o, həm də ən qədimlərdən biridir, əfsanəyə görə onu Homo Kubernautus və ya Homo Contaitorus icad etmişdir.). Ən dahiyanə layihə ilə də maraqlana bilərsiniz k3s, yoxlayın!
Adi klaster üçün CNI lazımdır: kolenkor - öz seçiminizdir, lakin lazım olduqda MTU-nu konfiqurasiya etməyi unutmayın. Siz asanlıqla və təbii şəkildə şəbəkə siyasətləri ilə oynaya, şifrələməni yandırıb söndürə və s.
(çox) geniş miqyaslı klaster üçün CNI lazımdır: Yaxşı, test böyük klasterlərin davranışını göstərmir, testlər keçirməkdən məmnun olardım, lakin bizdə 10Gbps bağlantısı olan yüzlərlə server yoxdur. Beləliklə, ən yaxşı seçim, ən azı Calico və Cilium ilə qovşaqlarınızda dəyişdirilmiş bir test aparmaqdır.