K8S Calico 정리

Seung·2022년 3월 13일
0

K8S

목록 보기
12/14
post-thumbnail

Calico

  • L3 기반 오버레이 네트워크를 구축하게 도와주는 CNI 플러그인
  • calico CNI 설치시 calico-node라는 daemonset 생성

Calico components

calico는 etcd, felix, bird, confd로 구성된다.
etcd는 k8s control plane의 etcd로 사용되며, felix, bird, confd는 하나의 pod 형태로 통합되어서 동작한다.


  • etcd
    • network 정보 및 calico 설정 정보 저장
    • key-value 값이 변경될 때 마다 felix나 bird에게 변경 정보를 전달
  • felix
    • host의 네트워크를 설정하는 데몬
    • etcd에 저장되어 있는 네트워크 정보를 바탕으로 host의 network interface, route table, iptables를 설정
    • 네트워크 상태 정보를 수집하여 다른 호스트의 felix나 confd에게 설정 내용이 전달되도록 한다.
  • bird
    • BGP 프로토콜을 이용하여 호스트의 Pod 네트워크 대역을 다른 호스트의 bird로 전파
    • BGP는 라우터간 라우팅 프로토콜로 패킷을 어느 라우터로 보낼 것인지 결정
  • confd
    • etcd의 변경 내용을 감지하고, bird conf 파일을 생성하고, bird를 깨우는 역할을 함

calico mode

1. direct 모드

  • 호스트의 물리적인 인터페이스를 이용해서 포드의 네트워크 정보를 처리
  • 물리적인 네트워크 인터페이스에서 바로 처리되기 때문에 성능적으로 가장 우수
  • 구조가 단순

2. overlay 모드

  • 포드의 네트워크 정보를 노드에서 한번 encapsulation을 거쳐서 목적지 노드로 전송
  • ip 기반의 터널링 방식으로 노드간의 터널링 구간을 통해 포드의 패킷이 전달
  • 각 노드에서 패킷에 대한 암호화와 복호화 과정을 거치기 때문에 네트워크 성능 저하가 발생할 수 있음
  • 헤더의 크기에 따라 IPIP 모드(20 bytes)(default 모드)와 VxLAN 모드(50bytes)가 있다.

3. crosssubnet 모드

  • direct 방식과 overlay 방식이 혼합된 방식
  • 노드간 같은 네트워크 대역일 경우 direct 방식
  • 노드간 다른 네트워크 대역일 경우 overlay 방식의 ipip모드로 동작

Reference

https://ssup2.github.io/theory_analysis/Kubernetes_Calico_Plugin/
https://eddie.ee/186
https://projectcalico.docs.tigera.io/reference/architecture/overview

profile
인프라 마스터가 되고 싶어요

0개의 댓글