이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

Kubernetes/네트워크

CNI 리서치 : Kubernetes의 CNI Flow

이쿠우우 2024. 8. 8. 20:39
반응형

 

Kubernetes의 CNI Flow

 

kubernetes cluster에 CNI가 설정되는 과정

1. kubernetes cluster 의 node에 kubelet이 배포되면 CNI 기본 plugin도 함께 배포가 됨.
2. kubelet containerd CRI를 통해 container runtime tool의 설정파일 내용을 수정함
즉 containerd의 경우 /etc/containerd/config.toml에 CNI 설정이 추가됨.
 
 

Pod network namespace에 IP가 할당되는 과정

1. Pod배포를 위해 kube-apiserver가 kubelet을 호출
2. kubelet은 container 생성을 위해 CRI를 통해 container runtime 호출
3. container runtime은 pause container를 생성. container의 network namespace 생성
4. container runtime의 CNI설정에 의해 CNI Plugin 호출
5. CNI 설정파일에 명시 되어있는데로 container namespace에 IP할당, host에 network interface생성, pod와 host network namespace간 통신 구성.
 
 

container runtime과 CNI

위 그림처럼 CNI는 container runtime에 의해 호출됨.
kubelet과는 연관이 없음.
각 container runtime의 설정 파일을 참조하여 CNI가 호출됨.
예를 들어 container runtime이 containerD인 경우 /etc/containerd/config.toml 을 참조하게 되고 아래 와 같이 CNI설정을 할 수 있음.
[plugins]
  [plugins."io.containerd.grpc.v1.cri"]
    [plugins."io.containerd.grpc.v1.cri".cni]
      bin_dir = "/opt/cni/bin"
      conf_dir = "/etc/cni/net.d"
      max_conf_num = 1
      conf_template = ""

 

 

  • bin_dir : CNI Plugin 실행파일 경로
  • conf_dir : CNI 설정파일 경로

 

 

 

 

 

반응형