[Networking] Kubernetes에서 CNI (Container Network Interface)

IMKUNYOUNG·2024년 6월 30일
0

KCNA

목록 보기
18/56

컨테이너 오케스트레이션 시스템인 Kubernetes에서 네트워킹은 매우 중요한 요소입니다. 특히 CNI (Container Network Interface)는 Kubernetes가 컨테이너 네트워크를 관리하고 연결하는 데 필수적인 표준 인터페이스입니다. 이번 글에서는 Kubernetes에서 CNI가 어떻게 구성되며 사용되는지에 대해 자세히 살펴보겠습니다.

1. CNI의 역할과 필요성

CNI는 컨테이너 런타임(Kubernetes에서는 kubelet)이 컨테이너 네트워크 네임스페이스를 생성하고 적절한 네트워크에 연결하는 데 사용하는 표준 인터페이스입니다. 이를 통해 다양한 네트워크 플러그인을 손쉽게 통합할 수 있으며, 네트워크 구성의 유연성과 확장성을 제공합니다.

2. Kubernetes에서의 CNI 구성

Kubernetes 클러스터에서 각 노드는 kubelet 서비스를 통해 관리됩니다. 각 kubelet은 CNI 플러그인을 설정하여 해당 노드의 컨테이너 네트워크를 관리합니다. 이 설정은 주로 kubelet 서비스의 구성 파일에서 이루어집니다.

kubelet의 구성 파일에서는 다음과 같은 핵심 설정을 찾을 수 있습니다:

  • network plugin: CNI로 설정되어야 하며, 이를 통해 Kubernetes는 해당 노드에서 CNI 플러그인을 사용하도록 지시합니다.
  • CNI 바이너리 디렉토리: 이 디렉토리에는 사용 가능한 CNI 플러그인들이 위치하며, 예를 들어 bridge, flannel 등의 네트워크 플러그인이 여기에 포함될 수 있습니다.


3. CNI 설정 파일

CNI 플러그인은 각자의 설정 파일을 가지고 있습니다. 예를 들어 bridge.conf 파일은 bridge 타입의 CNI 플러그인을 설정하는 데 사용됩니다. 이 파일에서는 다음과 같은 구성 옵션들을 지정할 수 있습니다.

  • IP masquerade: IP 마스커레이딩을 추가하여 네트워크 패킷의 출발지 IP 주소를 가릴 수 있습니다.
  • IPAM 설정: 팟에 할당될 서브넷 또는 IP 주소 범위를 설정합니다. host-local 타입의 IPAM을 사용하면 각 호스트에서 로컬로 IP 주소를 관리할 수 있습니다.

4. Kubernetes에서의 CNI 사용 예시

Kubernetes 클러스터에서는 kubelet이 각 노드에서 CNI 플러그인을 활용하여 네트워크를 구성합니다. 예를 들어, 노드 A에서는 bridge 플러그인을 사용하여 네트워크를 구성하고 IP masquerade를 적용할 수 있습니다. 반면 노드 B에서는 flannel을 사용하여 다른 네트워크 구성을 할 수 있습니다.

마무리

이 글에서는 Kubernetes에서 CNI의 역할과 구성 방법에 대해 살펴보았습니다. CNI는 Kubernetes 네트워크 관리의 핵심 요소로, 각 노드의 kubelet을 통해 설정되고 사용됩니다. 각각의 CNI 플러그인은 자체 설정 파일을 가지며, 이를 통해 다양한 네트워크 구성 옵션을 제공합니다.

0개의 댓글