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 üzvlər meydana çıxdı
  • 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).

Müqayisə üçün seçilmiş CNI-lərimiz:

  • Antrea v.0.9.1
  • Calico v3.16
  • Canal v3.16 (Flanel şəbəkəsi + Calico Şəbəkə Siyasətləri)
  • Cilium 1.8.2
  • Flanel 0.12.0
  • Ən son Kube-router (2020-08-25)
  • WeaveNet 2.7.0

CNI üçün MTU konfiqurasiyası

Hər şeydən əvvəl, avtomatik MTU aşkarlamasının TCP performansına təsirini yoxlayırıq:

10G şəbəkəsi üzərindən Kubernetes üçün CNI Performans Qiymətləndirilməsi (Avqust 2020)

MTU-nun TCP Performansına təsiri

UDP istifadə edərkən daha böyük boşluq aşkar edilir:

10G şəbəkəsi üzərindən Kubernetes üçün CNI Performans Qiymətləndirilməsi (Avqust 2020)
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.

10G şəbəkəsi üzərindən Kubernetes üçün CNI Performans Qiymətləndirilməsi (Avqust 2020)
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.

10G şəbəkəsi üzərindən Kubernetes üçün CNI Performans Qiymətləndirilməsi (Avqust 2020)
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.

10G şəbəkəsi üzərindən Kubernetes üçün CNI Performans Qiymətləndirilməsi (Avqust 2020)
Pod-to-Pod Ssenarisi

TCP

Pod-to-Pod TCP nəticələri və müvafiq resurs istehlakı:

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)

UDP

Pod-to-Pod UDP nəticələri və müvafiq resurs istehlakı:

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)

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.

10G şəbəkəsi üzərindən Kubernetes üçün CNI Performans Qiymətləndirilməsi (Avqust 2020)
Pod-to-Service Skripti

TCP

Pod-to-Service TCP nəticələri və müvafiq resurs istehlakı:

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)

UDP

Pod-to-Service UDP nəticələri və müvafiq resurs istehlakı:

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)

Şə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:

10G şəbəkəsi üzərindən Kubernetes üçün CNI Performans Qiymətləndirilməsi (Avqust 2020)

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.

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)

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.

10G şəbəkəsi üzərindən Kubernetes üçün CNI Performans Qiymətləndirilməsi (Avqust 2020)

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.

Mənbə: www.habr.com

Добавить комментарий