핵심 요약
eBPF는 커널 안에서 안전하게 실행되는 작은 프로그램. 직접 작성은 어렵지만, 이미 만들어진 도구를 사용하면 강력한 관측·보안·네트워크가 가능. 2026년 시점 가장 검증된 3개를 정리.
- Cilium: 네트워크 (이전 글 참고)
- Pixie: 자동 관측성 (코드 변경 0)
- Falco: 런타임 보안 (이상 행위 감지)
1. eBPF 기본 — 왜 강력한가
- 커널 안에서 실행 → 커널 함수 호출·네트워크 패킷 즉시 가시성
- verifier가 안전성 보장 — 무한 루프·메모리 침범 불가
- JIT 컴파일 — native 코드 속도
- userspace 코드 변경 0 — 기존 앱 그대로
2. Pixie — 자동 관측성
# 설치
curl -fsSL https://withpixie.ai/install.sh | bash
px deploy설치 후 즉시:
- 모든 HTTP 요청·응답 자동 캡처 (코드 변경 0)
- SQL 쿼리 자동 추적
- gRPC·DNS·TLS handshake 추적
- 플레임 그래프 자동 생성
- 저장 비용 0 (커널 ring buffer, 휘발성)
# 사용 예시 — PxL (Pixie 쿼리 언어)
df = px.DataFrame(table='http_events', start_time='-1m')
df = df[df.req_method == 'POST']
df = df.groupby('remote_addr').agg(
count=('req_path', px.count),
avg_latency=('latency_ns', px.mean)
)
px.display(df)Datadog APM 같은 도구를 코드 변경 없이 즉시. 단 데이터 보관 짧음 (4~24시간 권장).
3. Falco — 런타임 보안
# Helm
helm install falco falcosecurity/falco \
--namespace falco --create-namespace# 룰 예시 — falco_rules.yaml
- rule: Unexpected outbound connection
desc: Pod이 외부 IP로 연결
condition: >
outbound and not allowed_outbound_destinations
output: >
Outbound connection to %fd.rip:%fd.rport from %k8s.pod.name
priority: WARNING
- rule: Container shell access
desc: Pod에서 shell 실행
condition: spawned_process and shell_procs and container
output: >
Shell %proc.name in container %container.name
priority: NOTICE이상 행위 즉시 감지: cryptominer 실행, 의심 프로세스, sensitive 파일 접근 등. CNCF Graduated.
4. Falco 실전 룰 5가지
- rule: Write below /etc
condition: write_etc_common
priority: ERROR
- rule: K8s ServiceAccount Token Read
condition: open_read and fd.name = /var/run/secrets/kubernetes.io/serviceaccount/token
priority: WARNING
- rule: Crypto Miner Process
condition: spawned_process and (proc.name in ("xmrig", "minerd"))
priority: CRITICAL
- rule: Suspicious DNS Query
condition: outbound and fd.l4proto=udp and fd.rport=53 and proc.cmdline contains "curl"
priority: NOTICE5. eBPF 도구 매트릭스
| 도구 | 용도 | 설치 부담 |
|---|---|---|
| Cilium | CNI + Service Mesh | 중간 |
| Pixie | 자동 관측성 | 낮음 |
| Falco | 런타임 보안 | 낮음 |
| Hubble | 네트워크 관측 (Cilium 종속) | Cilium 함께 |
| Tetragon | 커널 이벤트 보안 | 중간 |
| BCC·bpftrace | 커스텀 디버깅 | 높음 (커널 코드) |
| parca | continuous profiling | 낮음 |
6. continuous profiling — Parca·Pyroscope
# Parca 설치
kubectl apply -f https://github.com/parca-dev/parca/releases/latest/download/kubernetes-manifest.yaml
# 모든 Pod의 CPU·메모리 프로파일을 자동 수집
# 코드 변경 0
# 어느 함수가 CPU를 가장 많이 쓰는지 즉시 보임Sentry·NewRelic의 profiling을 self-hosted로. 비용 $0.
7. 실전 — eBPF로 디버깅 사례
케이스 1: Pod이 가끔 OOMKilled
# Pixie로 메모리 사용 패턴 추적
px run px/oom_analysis -- --namespace prod
# → 특정 endpoint 호출 시 메모리 spike 발견
# → 메모리 leak 코드 위치 즉시 식별케이스 2: 외부 API latency 증가
# Pixie로 요청 추적
df = px.DataFrame('http_events')
df = df[df.remote_addr == 'api.external.com']
df = df[df.latency_ns > 1_000_000_000] # 1초 초과
# → DNS resolution이 느림 발견 → DNS 캐시 추가케이스 3: 의심 활동 감지
# Falco 알람
[ERROR] Pod web-prod-abc123: Crypto Miner Process detected
# → 즉시 Pod 격리 + 침해 분석8. 운영 권장 스택
# 표준 eBPF 관측·보안 스택
1. Cilium (CNI + Service Mesh)
2. Hubble (Cilium 관측)
3. Pixie (자동 application 관측)
4. Falco (런타임 보안)
5. Parca/Pyroscope (continuous profiling)
# 합쳐서:
# - 네트워크: Cilium
# - 응용 관측: Pixie
# - 보안: Falco
# - 성능: Parca9. 한계·주의
- 커널 5.10+ 필수 (대부분 모던 클라우드 만족)
- 관리형 Kubernetes (EKS·GKE)에서 일부 제약
- eBPF 프로그램 verifier 통과 어려운 경우 있음
- 커스텀 eBPF 작성은 깊은 학습 필요
10. 학습 자료
- ebpf.io — 시작점
- "BPF Performance Tools" — Brendan Gregg 책
- Cilium·Pixie·Falco 공식 워크숍
- Linux Plumbers Conference eBPF 트랙
자주 묻는 질문
eBPF 직접 작성해야 하나?
대부분 아니다. Cilium·Pixie·Falco 같은 도구로 90% 해결. 커스텀 디버깅 한정에서 직접 작성.

댓글 0