CNI란?

날아올라돼지야·2024년 9월 2일

쿠버네티스 마스터

목록 보기
1/27

CNI (Container Network Interface)란?

쿠버네티스에서 CNI(Container Network Interface)는 네트워크 플러그인과 관련된 표준 인터페이스로, 클러스터 내에서 Pod 간의 네트워킹을 설정하고 관리하는 데 사용됩니다. 쿠버네티스는 여러 네트워크 플러그인을 지원하며, 이러한 플러그인들이 네트워크를 설정할 수 있도록 CNI 규격을 따릅니다.

비유를 통해 CNI 이해하기

CNI를 이해하는 데 도움이 될 수 있는 비유는 "배관 시스템"입니다.

  • 네트워크 플러그인(CNI 플러그인)은 마치 건물의 배관 시스템과 같습니다. 건물 내의 모든 방(Pod)이 서로 연결되기 위해서는 물이 흘러야 하고, 이를 위해 배관이 필요합니다.
  • 쿠버네티스 클러스터는 건물과 같습니다. 이 건물에는 여러 방(Pod)이 있으며, 이 방들은 물(네트워크 트래픽)을 주고받아야 합니다.
  • CNI는 이 배관 시스템을 설치하는 표준 절차입니다. CNI 규격을 따르면, 어떤 배관(네트워크 플러그인)을 사용하든지 상관없이 건물의 모든 방이 물을 잘 받을 수 있게 됩니다.

이 비유에서 CNI는 "어떻게 방들 간에 물이 흐를지"를 결정하는 규칙이자 설치 가이드입니다. 네트워크 플러그인은 "실제 배관"이고요. 쿠버네티스는 이 배관 시스템을 통해 각 방이 물을 원활히 주고받도록 관리합니다.

CNI 플러그인 사용법

쿠버네티스에서 CNI 플러그인을 사용하는 방법은 비교적 간단합니다. 여기서는 대표적인 CNI 플러그인인 Calico를 예로 들어 설명하겠습니다.

1. CNI 플러그인 설치

Calico 설치 예제:

kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml

이 명령어를 실행하면, Calico 네트워크 플러그인이 설치되어 쿠버네티스 클러스터에서 작동하게 됩니다. Calico는 네트워크 정책, IP 주소 관리, 보안 등을 제공하는 CNI 플러그인입니다.

2. CNI 플러그인 설정

설치 후, Calico는 자동으로 Pod 간의 네트워킹을 관리하기 시작합니다. 또한, 네트워크 정책(Network Policy)을 통해 특정 Pod 간의 트래픽을 허용하거나 차단할 수 있습니다.

예제: 특정 네임스페이스의 Pod 간 통신 허용

# network-policy.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: allow-frontend-to-backend
  namespace: default
spec:
  podSelector:
    matchLabels:
      role: backend
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          role: frontend

이 YAML 파일은 frontend 라벨이 붙은 Pod가 backend 라벨이 붙은 Pod에 접근할 수 있도록 허용하는 네트워크 정책입니다.

3. CNI 플러그인 확인

네트워크 플러그인이 제대로 작동하고 있는지 확인하기 위해서는 Pod 간의 네트워크 연결을 테스트해볼 수 있습니다.

네트워크 테스트 예제:

kubectl exec -it <frontend-pod-name> -- ping <backend-pod-ip>

위 명령어를 통해 frontend Pod에서 backend Pod로 네트워크 연결이 잘 되는지 확인할 수 있습니다.

정리

CNI는 쿠버네티스에서 네트워크를 설정하고 관리하기 위한 표준 인터페이스입니다. 이를 통해 다양한 네트워크 플러그인을 사용할 수 있으며, 각 플러그인은 쿠버네티스의 네트워킹을 담당하게 됩니다. 배관 시스템 비유를 통해 CNI가 어떻게 작동하는지 이해하고, 실습을 통해 직접 CNI 플러그인을 설치하고 설정해보세요.

profile
무슨 생각하며 사니

0개의 댓글