연재 시리즈

쿠버네티스 네트워크 스터디 7주차 - Cilium CNI 살펴보기

악분 2022. 3. 1. 17:07
반응형

스터디 목차

 

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

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

 

1. 7주차 두번째 주제

7주차 첫번째 주제는 Cilium CNI 살펴보기입니다.

 

2. 아키텍처

음.. 아직은 아키텍처를 깊게 이해하지 못해서 생략합니다. 나중에 글 수정을 위해 챕터를 남겨둡니다. 아키텍처를 이해하기 위해 BPF와 eBPF를 더 공부해야할 것 같습니다.

 

3. 기능

공식문서(https://cilium.io/blog/2020/11/10/ebpf-future-of-networking/)에서 3가지 기능을 수행합니다. 각 기능은 세부기능으로 분리되고 세부기능을 수행하기 위한 구성요소가 존재합니다. 세부기능은 공식문서에서 참고하시길 바랍니다.

  • 네트워킹(Networking)
  • 보안(Security)
  • 옵저버빌리티(Observability)

 

4. 구성요소

기능을 수행하기 위해 4가지 구성요소가 있습니다. 자세한내용은 공식문서(https://docs.cilium.io/en/stable/concepts/overview/)를 참고하시길 바랍니다.

 

  • Cilium
    • agent: Cilium을 실행하기 위한 네트워크 정책, 설정 등을 수행합니다. 쿠버네티스에서는 데몬셋으로 실행되어 각 노드마다 pod로 실행되고 API서버를 이용하여 작업을 수행합니다.
    • client: Cilium 명령어를 실행하기 위한 클라이언트 입니다. 
    • operator: 쿠버네티스 클러스터에 전체에 한번씩 수행되어야 하는 작업을 담당합니다.
  • Hubble: 네트워크와 보안 모니터링 역할을 수행하며 server, relay, client, graphical UI로 구성되어 있습니다.
  • eBPF: 네트워킹 처리를 담당합니다.
  • Data Source: 각 노드간 실행하고 있는 cilium agent상태를 동기화 하기 위한 데이터를 저장합니다. 

 

출처: https://docs.cilium.io/en/stable/concepts/overview/

 

쿠버네티스에서 실행되고 있는 구성요소는 kube-system 네임스페이스에서 확인할 수 있습니다.

kubectl get po -n kube-system

 

5. 네트워크 모드

2022년 2월 기준 터널모드(VXLAN, GENEVE), native routing 총 2가지 네트워크 모드를 지원합니다.

출처: 스터디 공유자료

 

6. 네트워크 인터페이스 확인

cilium_host와 cilium_net, cilium_vxlan의 세 가지 가상 인터페이스를 생성합니다.

 

cilium_net과 cilium_host는 veth쌍으로 파드의 게이트웨이 역할을 수행합니다. vxlan모드로 동작할 시 vxlan인터페이스가 생성됩니다. 파드가 생성되면 lxc인터페이스가 생성되어 파드와 연결됩니다.

출처: http://arthurchiao.art/blog/ctrip-network-arch-evolution/

 

참고자료

[1] [블로그] https://ichi.pro/ko/kubernetes-dajung-keulleoseuteo-neteuwoking-cilium-keulleoseuteo-mesi-207399494778244

공백

반응형