Tutoriales

Kumaha kami nganggo eBPF pikeun niténan métrik jaringan OpenShift

Aliran jaringan nyaéta métrik akumulasi (sapertos jumlah pakét atanapi bait) tina pakét anu ngalangkungan titik observasi anu dipasihkeun sareng ngabagi pasipatan umum (protokol, alamat sumber/tujuan, sareng palabuhan). OpenShift Network Observability mangrupikeun alat anu ngamungkinkeun ngumpulkeun, nyimpen, sareng ningalikeun aliran jaringan kluster OpenShift.

(Mario Macias, CC BY-SA 4.0)

Mimitina, urang ngandelkeun OVN-Kubernetes Container Network Interface (CNI) anu tiasa ngékspor aliran dina format IPFIX (format binér pikeun ékspor data aliran épisién). Kami nyayogikeun kolektor aliran anu nyéépkeun data IPFIX sareng ngahiasna ku metadata tina OpenShift (sapertos Nami sareng Ruang Ngaran). Tungtungna, kolektor nyimpen aliran salaku JSON di Grafana Loki supados urang tiasa nyandak sareng ngabayangkeunana tina plugin OpenShift Console kami (atanapi langsung ti Grafana).

Sanajan kitu, merlukeun OVN-Kubernetes salaku OpenShift cluster CNI ngawatesan ukuran base pamaké poténsi urang. Salaku tambahan, panyebaran asynchronous tina pangirim sareng kolektor aliran tiasa nyababkeun masalah sinkronisasi sareng kumaha IPFIX ngabagi témplat.

Pikeun ngatasi keterbatasan sapertos kitu, kami ngalaksanakeun éksportir aliran jaringan portabel urang sorangan anu dirancang pikeun aya dimana-mana sareng dioptimalkeun pikeun kasus panggunaan observasi Kubernetes.

The observability jaringan Agen eBPF

Tujuan kami nyaéta pikeun nyiptakeun alternatif pikeun IPFIX anu portabel, tiasa dianggo ku kalolobaan CNI, sareng langkung pas kana spésifik operasional OpenShift. Kami milih eBPF sabab sayogi dina kernel Linux panganyarna (versi 4.18 atanapi langkung luhur).

eBPF nyadiakeun mesin virtual nu bisa napel tempat béda dina kernel Linux Ubuntu jeung aman executes program sandboxed pikeun manjangkeun atawa niténan fungsionalitas na. eBPF ogé nyadiakeun mékanisme pikeun komunikasi spasi kernel jeung program pamaké-spasi.

LEER  Cómo instalar la última versión de PHP 8.0 en Rocky Linux 8

[ Get this free eBook: Managing your Kubernetes clusters for dummies. ]

Salaku conto, agén kami ngamuat program kontrol lalu lintas eBPF leutik anu dipasang dina asup sareng kaluar sadaya alat jaringan (fisik sareng virtual). Program kernel-spasi ieu mariksa header sadaya pakét anu ditampi sareng dikintunkeun, teras diteruskeun sacara séri kana kode rohangan-pamaké ngaliwatan panyangga ring. Operasi ieu dilaksanakeun kalawan jaminan kaamanan alatan léngkah pre-verifikasi tina mesin virtual eBPF.

(Mario Macias, CC BY-SA 4.0)

Agen spasi pamaké aggregates dina mémori informasi kuantitatif unggal pakét pikeun nyusun aliran sabenerna sarta périodik diteruskeun ka kolektor aliran, sakumaha didefinisikeun dina skenario IPFIX.

Ayeuna, pangguna tiasa milih antara OVN-Kubernetes atanapi inspeksi lalu lintas eBPF kalayan henteu aya bédana dina fungsionalitas umum.

Pertimbangan palaksanaan sareng kinerja

Komunikasi antara kernel jeung rohangan pamaké rélatif laun, sabab unggal pesen pakét hudang up program pamaké-spasi. Sanajan kitu, ngagunakeun ring panyangga sarta ngalaksanakeun sagala logika aggregation dina spasi pamaké (ngagunakeun Cilium urang Go eBPF perpustakaan) nyadiakeun palaksanaan gancang pikeun ngamimitian validasi feasibility of eBPF dina skenario beragam.

[ Try this learning path to understand how to create a cluster in Red Hat OpenShift Service on AWS with STS. ]

Pikeun nguji kinerja, urang ngajalankeun sababaraha generator lalulintas ngirim pakét leutik User Datagram Protocol (UDP) ka conto 16-vCPU AWS ngajalankeun komponén handap:

  • Agen eBPF
  • A kolektor aliran dummy nu ngalaporkeun jumlah total pakét olahan
  • Sababaraha panarima lalulintas UDP
(Mario Macias, CC BY-SA 4.0)

Agen eBPF tiasa ngolah dugi ka 1 juta pakét per detik kalayan biaya ampir linier sakitar 200,000 pakét per detik per satengah CPU.

(Mario Macias, CC BY-SA 4.0)

Tuning tukang sampah Go ngamungkinkeun urang ningkatkeun jumlah pakét olahan ku 20%.

Karya hareup

Pelepasan munggaran Agen eBPF museurkeun kana kabeneran, portabilitas, sareng waktos ka pasar.

Nanging, sanaos Agen eBPF tiasa dianggo saé dina lingkungan kalayan beban jaringan rata-rata rendah, éta tiasa ngonsumsi seueur teuing sumber daya CPU di lingkungan anu lalu lintas anu luhur pisan.

[ Free download: Advanced Linux commands cheat sheet. ]

Akibatna, urang nempo sababaraha garis gawé hareup pikeun ngaleutikan tapak suku agén urang.

Salah sahiji calon pikeun évaluasi nyaéta sampling rasio acara hudang dina rohangan pangguna. Ideally, tinimbang bangun spasi pamaké pikeun tiap pakét, éta bakal ngidinan sakumpulan pakét pikeun ngumpulkeun lajeng hudang spasi pamaké. Sababaraha laporan ngaku hiji pamutahiran kinerja lima kali maké panyangga perf eBPF (urang ngagunakeun panyangga ring, nu rada béda).

Salila sasih anu bakal datang, urang bakal ngusahakeun mindahkeun agrégasi aliran tina rohangan pangguna ka rohangan kernel sareng komunikasi duanana rohangan pangguna sareng kernel nganggo peta hash:

(Mario Macias, CC BY-SA 4.0)

Sababaraha percobaan awal nunjukkeun yén jumlah pakét olahan tiasa ningkat sakitar 20% dugi ka 30% sareng konsumsi CPU tiasa ngirangan ku 90%.

Pagawean nu patali

Aya seueur palaksanaan Agen eBPF open source sanés anu sayogi gratis, sapertos Cilium, Pixie, sareng Skydive. Gantina reusing aranjeunna, urang mutuskeun pikeun ngamimitian palaksanaan urang sorangan ti scratch sabab agén saméméhna mangrupa bagian tina solusi nu leuwih gede, tur éta kompléks ngasingkeun kode jeung ukur make deui bagian ékstraksi aliran eBPF. Ogé, loba di antarana ngandelkeun parabot eBPF heubeul atawa luntur anu hese compile atawa port kana distribusi sistem operasi ayeuna.

Bérésan

Agen eBPF nunjukkeun janten alternatif anu tiasa dianggo pikeun koleksi OVN IPFIX, sabab ngajaga fungsionalitas pinuh ku OpenShift Network Observability pikeun pangguna anu henteu acan nganggo OVN-Kubernetes.

Kami nyiptakeun tés awal Agen eBPF kalayan prinsip-prinsip ieu dina pikiran:

  • Ubiquity: Agén tiasa dieksekusi di jero pods tapi ogé salaku prosés Linux.
  • Portability: Kami nargétkeun palaksanaan Compile-Once Run Everywhere (CO-RE) panganyarna tina eBPF, ku kituna agén disebarkeun salaku file binér.
  • Fleksibilitas: Agen eBPF tiasa ngajalankeun mandiri. Protokol ékspor na (dumasar kana panyangga GRPC + Protokol) dibuka, sareng kami nyayogikeun conto palaksanaan supados batur tiasa ngagunakeunana dina sistemna.

Agén éta tiasa ngesahkeun sababaraha skénario tapi kalayan biaya kinerja anu luhur. Sanaos ieu, kinerja sigana bakal nyugemakeun dina klaster OpenShift kalayan beban kerja anu sedeng. Numutkeun kana panilitian awal urang, kami ngarepkeun ngirangan beban CPU Agen eBPF ku hiji urutan gedéna.

Kanggo langkung seueur wawasan ngeunaan topik ieu, tingali presentasi kami ti Red Hat Summit 2022, Pamakéan eBPF dina observasi jaringan OpenShift (video sayogi dugi ka Désémber 2022).

LEER  Cómo definir múltiples condiciones when en Ansible

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba