[K8s] K8s 네트워크의 진화와 성능 최적화: kube-proxy의 한계와 eBPF/Cilium

2026. 8. 12. 22:50·▣ Infra & DevOps/Kubernetes🚢
728x90
반응형

이번 글에서는 K8s 내부 네트워킹의 심장부인 kube-proxy가 대규모 환경에서 어떤 한계에 부딪히는지 살펴보고, 이를 근본적으로 해결하는 eBPF 기반의 Cilium이 왜 차세대 K8s 네트워크 표준으로 떠오르고 있는지 알아봅니다.


1. kube-proxy와 iptables의 한계

K8s에서 Service로 트래픽을 보내면, 실제로는 각 노드에서 실행 중인 kube-proxy가 트래픽을 적절한 Pod로 전달합니다. 전통적으로 kube-proxy는 iptables 규칙을 사용합니다. 문제는 규모가 커지면 iptables 규칙이 선형으로 급증한다는 것입니다.

  • Service 1,000개 × 각 Service당 Pod 10개 = iptables 규칙 수만 개
  • 패킷 하나가 도착할 때마다 이 규칙들을 순차적으로(O(n)) 탐색

 

💡 실제 사례: 대규모 클러스터에서 Service 수가 5,000개를 넘어가면
iptables 규칙 업데이트에만 수 분이 소요되는 현상이 보고되었습니다.

 

kube-proxy(iptables) vs eBPF 패킷 처리 경로 비교


2. eBPF: 리눅스 커널 안에서 동작하는 프로그래밍 가능한 네트워크

eBPF(extended Berkeley Packet Filter)는 리눅스 커널의 네트워크 스택 안에 사용자 정의 프로그램을 주입할 수 있는 기술입니다.

  • iptables는 커널의 netfilter 훅에서 규칙 체인을 순차 평가하지만, eBPF는 네트워크 스택 훨씬 앞단(XDP/tc)에서 패킷을 가로채 처리
  • O(n) 선형 탐색 대신 해시맵 기반 O(1) 조회로 성능이 Service 수에 영향을 받지 않음
  • 패킷이 불필요한 네트워크 스택 계층을 건너뛸 수 있어 레이턴시 감소

물론 kube-proxy도 손 놓고 있었던 것은 아닙니다. iptables 외에 커널 해시테이블 기반의 IPVS 모드를 제공해 대규모 환경의 탐색 비용을 줄였고, 최근에는 nftables 모드도 추가됐습니다.

 

다만 어느 쪽이든 커널 네트워크 스택 전체를 타야 한다는 구조적 제약은 남습니다. eBPF는 바로 이 지점을 건드립니다.


3. Cilium: eBPF 위에 세운 K8s 네트워크 플랫폼

Cilium은 eBPF를 K8s 환경에서 쉽게 활용할 수 있도록 만든 CNI(Container Network Interface) 플러그인이자 종합 네트워크 플랫폼입니다.

 

Cilium이 제공하는 핵심 기능:

  • kube-proxy 완전 대체: iptables 없이 eBPF만으로 Service 라우팅 처리
  • L3/L4/L7 Network Policy: HTTP 경로나 gRPC 메서드 단위의 정교한 보안 정책
  • 투명 암호화(WireGuard): Pod 간 트래픽을 애플리케이션 수정 없이 자동 암호화
  • 사이드카 없는 서비스 메시: Istio처럼 각 Pod에 Envoy 사이드카를 붙이지 않고도 mTLS, 트래픽 관측 가능
  • Hubble: 네트워크 플로우를 실시간으로 시각화하는 관측 도구

Cilium 아키텍처: eBPF 기반 K8s 네트워크 플랫폼


4. 요약: kube-proxy에서 Cilium으로의 전환

항목 kube-proxy (iptables) Cilium (eBPF)
패킷 처리 커널 netfilter 규칙 체인 순차 탐색 커널 레벨 해시맵 O(1)
대규모 성능 Service 5,000+ 시 규칙 업데이트 병목 Service 수에 무관한 일정 성능
암호화 별도 설정 필요 WireGuard 내장 투명 암호화
관측성 제한적 Hubble로 네트워크 플로우 실시간 시각화

 

현재 GKE는 Dataplane V2를 통해, AKS는 "Azure CNI Powered by Cilium" 옵션을 통해 Cilium 기반 네트워킹을 제공하는 등 주요 매니지드 K8s 서비스들이 eBPF 데이터플레인을 채택하기 시작했으며, CNCF 컨퍼런스에서도 eBPF/Cilium 관련 세션이 해마다 증가하는 추세입니다.

728x90
반응형
'▣ Infra & DevOps/Kubernetes🚢' 카테고리의 다른 글
  • [K8s] 제로 트러스트를 향한 클러스터 내부 보안: Network Policy와 RBAC
  • [K8s] 트래픽 폭주에 대비하는 K8s 자동 확장 전략: HPA와 KEDA
  • [K8s] 상태가 있는(Stateful) 데이터를 위한 스토리지 전략: PV, PVC와 StatefulSet
  • [K8s] 눈을 가리고 운전할 수는 없다: K8s 옵저버빌리티(Observability)와 AIOps의 도래
예르미(yermi)
예르미(yermi)
끊임없이 제 자신을 계발하는 개발자입니다👨🏻‍💻
  • 예르미(yermi)
    예르미의 코딩노트
    예르미(yermi)
  • 전체
    오늘
    어제
    • 분류 전체보기 (1024) N
      • ◎ Java (133)
        • Java☕ (93)
        • JSP📋 (26)
        • Applet🧳 (6)
        • Interview👨🏻‍🏫 (8)
      • ◎ JavaScript (48)
        • JavaScript🦎 (25)
        • jQuery🌊 (8)
        • React🌐 (2)
        • Vue.js🔰 (6)
        • Node.js🫒 (3)
        • Google App Script🐑 (4)
      • ◎ HTML5+CSS3 (17)
        • HTML5📝 (8)
        • CSS3🎨 (9)
      • ──────────── (0)
      • ▣ Framework (67)
        • Spring🍃 (36)
        • Spring Boot🍀 (12)
        • Bootstrap💜 (3)
        • Selenium🌕 (6)
        • MyBatis🐣 (10)
      • ▣ Tools (47)
        • API🎯 (18)
        • Library🎲 (15)
        • JitPack🚀 (3)
        • Jenkins👨🏻 (7)
        • Thymeleaf🌿 (4)
      • ▣ Server (30)
        • Apache Tomcat🐱 (14)
        • Apache HTTP Server🛡️ (1)
        • Nginx🧶 (7)
        • OracleXE💿 (4)
        • VisualSVN📡 (4)
      • ▣ Infra & DevOps (19) N
        • LGTM Stack🔭 (5)
        • Kafka🐦‍🔥 (0)
        • Kubernetes🚢 (8)
        • KubeCon Japan 2026⚓ (6) N
      • ▣ OS : 운영체제 (18)
        • cmd : 명령프롬프트💻 (10)
        • Linux🐧 (8)
      • ▣ SQL : Database (56)
        • Oracle SQL🏮 (26)
        • PL SQL💾 (9)
        • MySQL🐬 (6)
        • MariaDB🦦 (6)
        • H2 Database🔠 (3)
        • SQL 실전문제🐌 (6)
      • ────────── (0)
      • ◈ Human Project (86)
        • Mini : Library Service📚 (15)
        • 화면 설계 [HTML]🐯 (10)
        • 서버 프로그램 구현🦁 (15)
        • Team : 여수어때🛫 (19)
        • Custom : Student🏫 (9)
        • Custom : Board📖 (18)
      • ◈ Yermi Project (49) N
        • 조사모아(Josa-moa)📬 (5)
        • Riddle-Game🧩 (6)
        • 맛있을 지도🍚 (2)
        • 어디 가! 박대리!🙋🏻‍♂️ (5)
        • 조크베어🐻‍❄️ (4)
        • Looks Like Thirty🦉 (2)
        • Toy Project💎 (12)
        • 오픈소스 파헤치기🪐 (5)
        • 오늘가챠🃏 (8) N
      • ◈ Refactoring (15)
        • Mini : Library Service📚 (8)
        • 서버 프로그램 구현🦁 (1)
        • Team : 여수어때🛫 (0)
        • 쿼리 튜닝일지🔧 (6)
      • ◈ Coding Test (80)
        • 백준(BOJ)👨🏻‍💻 (71)
        • 프로그래머스😎 (2)
        • 코드트리🌳 (7)
      • ◈ Study (129)
        • 기초튼튼 개발지식🥔 (25)
        • HTTP 웹 지식💡 (4)
        • 클린코드(Clean Code)🩺 (1)
        • 디자인패턴(GoF)🥞 (12)
        • 알고리즘(Algorithm)🎡 (14)
        • 다이어그램(Diagram)📈 (4)
        • 파이썬(Python)🐍 (16)
        • 에러노트(Error Note)🧱 (34)
        • 웹 보안(Web Security)🔐 (11)
        • 인공지능 AI🛸 (8)
      • ◈ 공부모임 (57)
        • 혼공학습단⏰ (18)
        • 코드트리 챌린지👊🏻 (2)
        • 개발도서 100독👟 (8)
        • 나는 리뷰어다🌾 (17)
        • 국가기술자격 서포터즈🌻 (12)
      • ◈ 자격증 공부 (48)
        • 정보처리기사🔱 (16)
        • 정보처리산업기사🔅 (9)
        • 정보보안기사⚜️ (11)
        • 컴퓨터활용능력 1급📼 (12)
      • ─────────── (0)
      • ◐ 기타 (124)
        • 알아두면 좋은 팁(tip)✨ (46)
        • 개발자의 일상🎈 (55)
        • 개발도서 서평🔍 (10)
        • 개발관련 세미나🎤 (2)
        • 블로그 꾸미기🎀 (9)
        • 사도신경 프로젝트🎚️ (2)
  • 인기 글

  • 최근 댓글

  • 반응형
    250x250
  • 태그

    Project
    꿀팁
    SQL
    코딩
    jsp
    spring
    javascript
    백준 티어
    CSS
    Database
    프로그래밍
    Java
    백준
    spring boot
    Error Note
    일상
    Oracle
    BOJ
    자바스크립트
    코딩 테스트
  • hELLO· Designed By정상우.v4.10.3
예르미(yermi)
[K8s] K8s 네트워크의 진화와 성능 최적화: kube-proxy의 한계와 eBPF/Cilium
상단으로

티스토리툴바