Kubernetes Ağlarında Yeni Standart: Cilium ve eBPF ile Altyapı Seviyesinde Gözlemlenebilirlik

Kubernetes Ağlarında Yeni Standart: Cilium ve eBPF ile Altyapı Seviyesinde Gözlemlenebilirlik
audio-thumbnail
Kubernetes Ağlarında Yeni Standart: Cilium ve eBPF ile Altyapı Seviyesinde Gözlemlenebilirlik
0:00
/0

Kubernetes Ağlarında Yeni Standart: Cilium ve eBPF ile Altyapı Seviyesinde Gözlemlenebilirlik

Modern bulut tabanlı (cloud-native) dünyada, Kubernetes altyapılarının ölçeği her geçen gün büyüyor. Binlerce podun saniyeler içinde ayağa kalkıp kapandığı, devasa mikro hizmet mimarilerinde ağ trafiğini yönetmek, izlemek ve güvenliğini sağlamak geleneksel yöntemlerle neredeyse imkansız hale geldi.

Uzun yıllar boyunca Kubernetes ağ yönetiminin (CNI) arkasındaki gizli kahraman olan iptables ve kube-proxy ikilisi, artık günümüzün yüksek performans ve derin gözlemlenebilirlik (observability) ihtiyaçlarını karşılamakta zorlanıyor.

İşte tam bu noktada, Linux çekirdeği (kernel) seviyesinde bir devrim gerçekleşti: eBPF (Extended Berkeley Packet Filter) ve bu teknolojiyi Kubernetes dünyasına taşıyan Cilium.

Bu yazımızda, geleneksel proxy ve iptables hantallığını geride bırakan eBPF devrimini, Cilium’un sunduğu benzersiz avantajları ve altyapı seviyesinde gözlemlenebilirliğin yeni standartlarını inceleyeceğiz.


Geleneksel Yöntemlerin Sınırları: iptables Neden Yetersiz Kalıyor?

Kubernetes ilk çıktığında, servis yönlendirmeleri ve ağ kuralları için Linux çekirdeğinin yerleşik bir özelliği olan iptables kullanıldı. kube-proxy bileşeni, Kubernetes servislerini iptables kurallarına dönüştürerek trafiği doğru podlara yönlendiriyordu. Ancak bu yaklaşımın çok ciddi yapısal sınırları vardır:

  • Sıralı Arama (Sequential Lookup) Hantallığı: iptables kuralları doğrusal (sequential) bir liste halinde okunur. Cluster içerisindeki servis ve pod sayısı arttıkça, bu liste on binlerce satıra ulaşır. Gelen her paket için bu listenin baştan sona taranması, CPU kullanımını tavan yaptırır ve gecikme (latency) sürelerini artırır.
  • Dinamik Güncelleme Zorluğu: Kubernetes'te bir pod öldüğünde veya yenisi eklendiğinde, tüm iptables kuralları zincirinin yeniden yazılması gerekir. Büyük cluster'larda bu işlem saniyeler sürebilir ve bu esnada paket kayıpları yaşanabilir.
  • Kör Noktalar (Gözlemlenebilirlik Eksikliği): iptables yalnızca IP ve port seviyesinde (L3/L4) çalışır. Hangi podun, hangi API uç noktasına (L7 - HTTP, gRPC) istek attığını, ağ paketlerinin nerede kaybolduğunu geleneksel araçlarla göremezsiniz.

eBPF Nedir? Çekirdek Seviyesinde Çalışan "JavaScript"

eBPF (Extended Berkeley Packet Filter), Linux çekirdeğini yeniden derlemeye veya harici bir modül yüklemeye gerek kalmadan, çekirdek içinde güvenli ve korumalı (sandboxed) programlar çalıştırmayı sağlayan devrimsel bir teknolojidir.

Bir benzetme yapmak gerekirse; HTML web sayfaları için JavaScript neyse, Linux çekirdeği için de eBPF odur.

eBPF sayesinde, işletim sisteminin çekirdeğinde gerçekleşen her türlü sistem çağrısını (system call), ağ paketini veya disk işlemini doğrudan çekirdek seviyesinde yakalayabilir, analiz edebilir ve yönlendirebilirsiniz. Bu programlar çekirdeğin içinde çalıştığı için, kullanıcı alanına (user-space) geçiş yaparken yaşanan bağlam değiştirme (context switch) maliyetini tamamen ortadan kaldırır.


Cilium: eBPF Gücüyle Donatılmış Kubernetes CNI

Cilium, eBPF teknolojisini temel alarak geliştirilmiş, açık kaynaklı bir Kubernetes Ağ Arayüzü (CNI) ve güvenlik çözümüdür. Cilium, geleneksel kube-proxy ve iptables mekanizmalarını tamamen devre dışı bırakarak ağ trafiğini doğrudan Linux çekirdeğinde yönetir.

+-------------------------------------------------------------+
|                       KULLANICI ALANI                       |
|  [ Pod A ]                                    [ Pod B ]     |
+------------------------------------+------------------------+
|                                    | (Bağlam Değişimi Yok)  |
|                         ÇEKİRDEK (KERNEL)                   |
|  +-------------------------------------------------------+  |
|  |                     eBPF Programı                     |  |
|  |  (Doğrudan soket seviyesinde hızlı paket yönlendirme) |  |
|  +-------------------------------------------------------+  |
+-------------------------------------------------------------+

Cilium ve eBPF’in Sağladığı Temel Avantajlar

1. Ultra Yüksek Performans ve Düşük Gecikme

Cilium, eBPF kullanarak paketleri doğrudan soket seviyesinde (socket layer) yönlendirir. İki pod aynı düğüm (node) üzerinde haberleşiyorsa, paketlerin TCP/IP yığınını dolaşmasına bile gerek kalmaz; eBPF paketi doğrudan bir soketten diğerine kopyalar. Bu, milisaniyeler seviyesinde hız kazanımı ve minimum CPU tüketimi demektir.

2. Hubble ile L7 Seviyesinde Derin Gözlemlenebilirlik

Cilium ile entegre gelen Hubble, ağ trafiğini ve güvenliğini izlemek için geliştirilmiş bir gözlemlenebilirlik platformudur. eBPF sayesinde Hubble, uygulamanıza hiçbir yan konteyner (sidecar proxy) eklemeden şu detayları görebilir: * Hangi servis, hangi servisle konuşuyor (Ağ topolojisi görselleştirmesi). * HTTP isteklerinin metotları (GET, POST), yanıt kodları (200, 404, 500) ve gecikme süreleri. * gRPC, Kafka ve DNS protokollerinin analizi. * Hangi ağ paketlerinin, hangi güvenlik politikası (Network Policy) nedeniyle engellendiği.

3. API Duyarlı (API-Aware) Ağ Güvenliği

Geleneksel Kubernetes Network Policy'leri yalnızca IP ve port kısıtlaması yapabilir. Cilium ise L7 seviyesinde kurallar yazmanıza olanak tanır. Örneğin:

"Ön yüz (Frontend) podu, Arka yüz (Backend) podunun yalnızca /public API uç noktasına GET isteği atabilsin, /admin uç noktasına veya POST isteklerine izin verilmesin."

4. Sidecar'sız Service Mesh (Sidecarless Service Mesh)

Geleneksel Service Mesh çözümleri (örneğin Istio), her podun yanına bir proxy (Envoy) konumlandırır. Bu durum bellek tüketimini ciddi oranda artırır ve yönetim karmaşası yaratır. Cilium, eBPF tabanlı Service Mesh mimarisiyle, proxy ihtiyacını pod seviyesinden alıp node seviyesine indirir veya tamamen çekirdek seviyesinde çözerek Sidecar'sız Service Mesh dönemini başlatır.


Cilium ile Gözlemlenebilirlik: Pratikte Nasıl Görünür?

Hubble CLI veya Hubble UI kullanarak, cluster içerisindeki tüm trafiği gerçek zamanlı olarak izleyebilirsiniz. Örneğin, aşağıdaki komutla gerçek zamanlı olarak reddedilen paketleri izlemek mümkündür:

hubble observe --verdict DROPPED

Bu komut size hangi podun, hangi kurala takılarak engellendiğini anında gösterir:

TIMESTAMP             SOURCE                DESTINATION             TYPE      VERDICT
Oct 24 14:32:10.123   frontend-pod-xyz      db-service-abc:5432     to-endpoint  DROPPED (Policy denied)

Bu seviyede bir görünürlüğü geleneksel araçlarla (tcpdump vb.) elde etmek hem çok zahmetli hem de sistem üzerinde ciddi bir yük oluşturur.


Sonuç: Geleceğin Altyapı Standardı

Kubernetes ekosistemi olgunlaştıkça, altyapı katmanındaki hantallıklardan kurtulmak bir lüks değil, zorunluluk haline geliyor. eBPF, Linux çekirdeğini programlanabilir hale getirerek ağ, güvenlik ve gözlemlenebilirlik dünyasında yeni bir çağ açtı.

Cilium ise bu gücü Kubernetes kullanıcılarının hizmetine sunarak, geleneksel proxy ve iptables darboğazlarını tarihe gömüyor. Eğer siz de: * Büyük ölçekli Kubernetes cluster'ları yönetiyorsanız, * Mikro hizmetleriniz arasındaki trafiği mikro saniyeler seviyesinde optimize etmek istiyorsanız, * "Hangi servis neden yavaş yanıt veriyor?" sorusuna anında yanıt arıyorsanız,

Cilium ve eBPF dünyasına adım atmanın zamanı gelmiş demektir. Geleceğin altyapı standartları çekirdekte yazılıyor ve bu standartların lideri şüphesiz Cilium.