연재 시리즈

쿠버네티스 네트워크 스터디 7주차 - Cilium CNI 등장배경

악분 2022. 3. 1. 15:31
반응형

스터디 목차

 

안녕하세요. 이 글은 facebook 쿠버네티스 그룹에서 올라온 "쿠버네티스 네트워크 스터디" 5주차 내용을 정리했습니다.

스터디 모집글: https://www.facebook.com/groups/k8skr/posts/3202691746679143

 

1. 7주차 첫번째 주제

7주차 첫번째 주제는 Cilium CNI 등장배경 이해입니다.

 

2. Cilium 소개

Cilium은 공식문서 소개 글처럼 linux eBPF를 이용한 고성능 네트워킹 솔루션입니다. 쿠버네티스에서는 CNI로 동작합니다. 고성능 네트워킹 초점을 둔 이유는 iptables을 이용한 쿠버네티스 트래픽 라우팅의 단점을 보완하려는 목적이 있기 때문입니다.

출처: https://cilium.io/learn

 

3. iptables 라우팅 단점

iptables의 특징때문에 파드와 서비스 갯수의 합이 몇천개, 몇만개 이상이라면 네트워크 성능이 낮아집니다.

 

첫 번째 특징은, iptables는 일치한 iptables 규칙을 찾을 때까지 모든 규칙을 평가하는 특징이 있습니다. 파드와 서비스가 많아질수록 규칙을 찾는 시간이 지연되므로 네트워크 성능에 영향을 끼칩니다.

kube-proxy가 iptables모드를 사용하면, 파드 또는 서비스로 가는 트래픽은 iptables 규칙(rule)에 따라서 흘러갑니다. 파드/서비스가 생성될 때마다 iptables규칙이 여러개 생성됩니다. 예를 들어 파드 1개가 생성되면 iptables가 5개 이상 생성될 수 있습니다. [그림 1]처럼 파드/서비스 갯수가 많아질수록 iptables는 기하급수적으로 증가합니다. 결국, 일치하는 iptables를 찾을 때까지 수많은 iptables 규칙을 검사합니다. 

그림 1 쿠버네티스 클러스터 노드 iptables 규칙(출처: 스터디 공유자료)

 

두번째 특징은 iptaebls규칙 추가방법입니다. 새로운 규칙이 추가될 때마다 기존의 전체 규칙을 바꿔야 합니다. 데이터베이스 행(row)을 추가하는 방법이 아닙니다. 이러한 결함을 "Incremental Update"기능 미지원이라고 부릅니다. 블로그 인용에 따르면 5000개의 서비스가 존재하는 상태에서 iptables 규칙을 추가하면 11분 정도가 소요된다고 합니다.

출처: https://cilium.io/blog/2018/04/17/why-is-the-kernel-community-replacing-iptables
출처: https://blog.naver.com/kangdorr/222593265958

 

4. 라우팅 단순화를 위한 eBPF 활용

많은 연구자와 실무자들이 좋은 방법을 찾기 위해 방법을 연구했었고, 지금 많이 주목받고 있는 주제가 eBPF입니다. eBPF는 BPF의 확장개념입니다.

 

공식문서에서 소개된것 처럼 eBPF는 두가지 키워드가 있습니다. ①커널 소스코드 또는 모듈로드 없이 기능 확장과 ②실행될 때 샌드박스로 작업이 수행됩니다. 간단하게 리눅스에서 지원하는 필터기능인데 샌드박스로 실행된다라고 이해하면 됩니다. eBPF는 이벤트 hook기반으로 동작합니다. 

출처: https://ebpf.io/what-is-ebpf

 

 

eBPF는 다양한 분야에서 활용되고 연구중입니다. 네트워크 분야에서는 리눅스 네트워크 스택에 eBPF를 활용하여 사용자 정의 기능을 추가하거나 커널레벨 네트워크 레이어 흐름을 수정할 수 있습니다.

출처: https://ebpf.io/what-is-ebpf

 

컨테이너 분야에서는 컨테이너로 트래픽이 라우팅 되는 과정을 eBPF를 이용합니다. 사용자가 직접 컨테이너에 eBPF를 적용하기 어려우니, Cilium이 쉽게 적용할 수 있도록 도와줍니다.

출처: https://youtu.be/ilKlmTDdFgk?t=1636

 

쿠버네티스에 분야에서는 Cilium이 CNI로 도입되어서 쿠버네티스 클러스터 네트워킹 역할을 담당합니다.

출처: https://cilium.io/blog/2020/11/10/ebpf-future-of-networking/

 

eBPF만 공부하려면 최소 몇개월이 필요할 것 같아서... 왜 도입하게 되었는지 배경만 이해하고 이만 글을 줄이겠습니다.

 

참고자료

[1] [블로그] [Kubernetes/Networking] eBPF Basic -  https://blog.naver.com/kangdorr/222593265958

[2] [노션] https://anotioneer.notion.site/asbubam/Kubernetes-Network-Cilium-1d4371f562ea4acdb5e679e376a7c992

[3] [유투브] Cilium: Network and Application Security with BPF and XDP - https://youtu.be/ilKlmTDdFgk?t=1636

공백

반응형