Cloud/OCI(Oracle Cloud Infrastructure)

[OCI] OKE Cluster 구축(1) - CNI

학슈퍼맨 2025. 3. 8. 15:02

 

1. CNI (Container Network Interface)

1.1. CNI란?

  • CNCF(Cloud Native Computing Foundation) 프로젝트 중 하나로, 컨테이너의 네트워크 연결을 관리하는 표준 플러그인 시스템
  • 쿠버네티스 클러스터 내에서 네트워크 인터페이스를 설정하고 관리하는 데 중요한 역할

1.2. 주요 목적

  1. 네트워크 연결 : 클러스터 내에서 네트워크 상으로 통신할 수 있도록 네트워크 인터페이스를 설정하고 연결 -> 컨테이너들이 서로 통신 가능
  2. 네트워크 관리 : 컨테이너가 종료 되거나 재시작 될 때, 해당 컨테이너의 네트워크 인터페이스를 제거하거나 다시 설정하는 등의 관리 작업
  3. 플러그인 방식 : 표준화 된 API를 통해 다양한 네트워크 플러그인을 통합 가능 -> 다양한 네트워크 요구사항을 충족해 확장 가능

1.3. 작동 원리

  1. 컨테이너 네트워크 요청 : kubelet이 컨테이너를 시작할 때, CNI 플러그인에게 네트워크 인터페이스 설정을 요청
  2. 네트워크 인터페이스 설정 : CNI 플러그인은 컨테이너에 대한 네트워크 인터페이스 설정
    ex) IP 주소 할당 및 네트워크 연결 수행
  3. CNI 후크 : CNI 플러그인은 네트워크 연결이 이루어진 후, 각종 후크를 통해 추가적인 작업 가능
    ex) 네트워크 보안 정책 적용, 로깅 등
  4. 네트워크 해제 : 컨테이너가 종료되면, 해당 컨테이너의 네트워크 연결 해제 및 할당된 리소스 정리

1.4. 주요 CNI 플러그인

  1. Calico
    • 네트워크 보안, 라우팅, IPAM(주소 관리) 등의 기능 제공
    • 고급 네트워크 정책 지원 -> 네트워크 보안 관리 강화
  2. Flannel
    • 단순하고 경량화 된 CNI  플러그인
    • Overlay 네트워크 제공 -> 여러 노드 간 IP 주소 공간 연결
  3. Canal
    • Calico와 Flannel을 결합 -> 네트워크 보안과 간단한 네트워크 연결을 동시 제공

 

2. Flannel vs VCN-Native Pod Networking

2.1. 개요

  • 2022년 7월 이전 릴리스에서 생성된 쿠버네티스 클러스터는 Flannel CNI 플러그인만 사용
  • 2022년 7월 이후 릴리스에서는 OCI 웹 콘솔을 사용해 클러스터를 생성하는 경우(Kuberenetes 1.22 이상) VCN-Native Pod Networking CNI 플러그인이 기본 값으로 제공

2.2. Flannel CNI 플러그인

  1. Pods 네트워크 가상 생성
  2. 가상 네트워크 대역에 맞는 IP를 Pod에 할당
  3. 가상 네트워크 인터페이스 생성
  4. 파드-파드 간, 파드-노드 간 통신 가능

2.3. VCN-Native Pod Networking

  1. VCN Subnet 이용 -> 별도 Overlay 네트워크 사용 x
    1. Native 자체 VCN 기능 활용 가능
    2. VCN Flow log를 통해 트래픽 로깅 가능
  2. VCN Subnet 대역에 맞는 IP를 Pod에 할당
  3. VCN 네트워크 인터페이스(VCN의 라우터와 서브넷)를 통해 통신
    -> Route table 룰에 따라 파드로 라우팅
  4. 파드-파드 간, 파드-노드 간 통신 가능