작성자: @asbubam

이 문서는 Open Container Korea 슬랙에서 Infra에 관심있는 분들과 스터디를 진행하면서 Kubernetes Network & Cilium 이란 주제로 발표했던 내용을 정리한 문서입니다.

대부분 영상 북마크는, 클릭하면 해당 스크린샷을 찍은 위치로 이동합니다. 이런 형태로 영상을 스크린샷 찍어 문서로 공유하는 것이 문제가 된다면 노션 코멘트나 @asbubam 으로 연락 부탁드립니다.

Cilium에 대해서 깊게 파보자! 라는 처음 생각과는 달리 Kubernetes Network 그리고 Cilium에 대해서 공부하는 과정, 참고한 자료를 나열하는 수준의 문서에 그쳤지만...

같은 주제에 관심을 가진 누군가에게 도움이 되었으면 하는 마음에서 문서를 공유합니다.

K8s 클러스터를 구성할 때 Network Plugin은 주로 Calico 를 사용했다. 제일 처음 클러스터를 만들 때는 Weave Net을 사용했었는데 운영 중에 원인 모를 네트워크 이슈가 있었고, CNI 를 Calico로 바꾼 것 만으로 문제가 재발하지 않아서 이후에는 Calico를 쭉 써왔다.

그러던 중 Cilium 을 알게 되었고, Bear 에 검색해보니, Cloud Native 행사에서 아래와 같이 정리한 메모가 발견된 걸 보면 대규모 클러스터를 운영하는 카카오, 라인도 쓴다고 하니까 관심을 갖게 된 것 같다.

* 솔루션 업체들은 대부분 calico 를 사용하고 카카오, 라인은 Cilium 을 사용함
* Cilium이 리눅스 커널의 BPF기술을 사용해서 좀 더 성능이 좋은 것으로 알고 있음.

2018.10 Cilium을 처음 사용해본 기억

2018.10 Cilium을 처음 사용해본 기억

Cilium을 사용하기 위해서는 Etcd 버전을 3.1.0 이상으로, 베이스 이미지의 커널버전을 특정 버전(≥4.9) 이상으로 올려야 했다. 이 때, 한번 클러스터에 올려보고 이후에는 괜히 잘 알지도 못하는 거 멋있다고 쓰지말자고 생각해서 왠지 모르게 안정감 느껴지는 Calico를 계속 사용했다.

그리고 쭉 관심만 가지고 있었는데...

2018.12 힙해보이는 삼대장을 하나로 모았다.

2018.12 힙해보이는 삼대장을 하나로 모았다.

2020.03 cilium에서 eBPF를 Golang으로 포팅함

2020.03 cilium에서 eBPF를 Golang으로 포팅함

2년동안 공부는 안하고 링크만 공유하다가, 이번 인프라스터디 때 CNCF 프로젝트 골라 발표하기 코너에서

"이제는 정말 공부해야지." 싶어서 Cilium을 발표한다고 써냈다. 내가 왜 그랬을까?

서론이 길었다.

Network Plugin

앞에서 Cilium은 Network Plugin 중 하나라고 했는데, Network Plugin은 뭘까?