[Kubernetes] CNI(Container Network Interface)

INYEONG KIM·2024년 8월 19일
post-thumbnail

CNI(Container Network Interface)

쿠버네티스 클러스터 내의 컨테이너들이 네트워크 상에서 서로 통신할 수 있도록 네트워크 기능을 제공하는 표준 인터페이스
CNI는 네트워크 플러그인 시스템으로, 네트워크 리소스의 할당과 관리를 담당

CNI의 주요 역할
1. IP 주소 할당: 각 컨테이너에 고유한 IP 주소를 할당
2. 네트워크 정책 적용: 네트워크 보안정책을 적용
3. 네트워크 격리: 서로 다른 네임스페이스에 있는 컨테이너 간의 네트워크 격리 지원

Kubernetes에서 사용 가능한 CNI

  • Calico: 보안에 중점을 둔 네트워크 플러그인으로, 네트워크 정책을 강력하게 관리가능
  • Flannel: 간단한 네트워크 오버레이 플러그인으로, 설정이 쉽고 가벼운 것이 장점
  • Weave: 분산된 네트워크를 쉽게 구성할 수 있도록 해주는 플러그인
  • Cilium: BPF 기술을 사용해 고성능과 보안성을 제공하는 플러그인
  • Canal: Calico와 Flannel의 기능을 결합한 플러그인으로, 네트워크 정책과 간단한 오버레이 네트워크를 제공

현재 Kuberntes 클러스터의 CNI 정보 확인

CNI는 kubelet 서비스 실행 시 설정 가능

  • kubelet --network-plugin=cni
  • kubelet service의 정보를 통해 환경 설정 정보를 tracking 가능
## CNI에서 사용가능한 바이너리(default path)
controlplane /opt/cni/bin ➜  ls
bandwidth  dhcp   firewall  host-device  ipvlan    macvlan  ptp  static  tuning  vrf
bridge     dummy  flannel   host-local   loopback  portmap  sbr  tap     vlan


## 설치되어 있는 CNI의 정보 및 설정 관련 파일 (default path)
controlplane /etc/cni/net.d ➜  cat 10-flannel.conflist 
{
  "name": "cbr0",
  "cniVersion": "0.3.1",
  "plugins": [
    {
      "type": "flannel",
      "delegate": {
        "hairpinMode": true,
        "isDefaultGateway": true
      }
    },
    {
      "type": "portmap",
      "capabilities": {
        "portMappings": true
      }
    }
  ]
}

참고

https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/

profile
미래의 저를 위해 작성하는 중입니다 🙆‍♂️

0개의 댓글