Ssoon
[3주차] Calico CNI 본문
CloudNet@ 가시다님이 진행하는 쿠버네티스 네트워크 스터디 3기
✅ CNI (Container Network Interface)
- CNI는 Kubernetes 같은 컨테이너 오케스트레이션 시스템에서 네트워크 연결을 설정하고 관리하는 표준 인터페이스입니다. Kubernetes에서 각 Pod가 서로 통신할 수 있도록 네트워크를 제공하는데, Calico는 CNI 중 하나로 사용됩니다.
✅ Calico
- Calico는 Kubernetes 클러스터에서 네트워크 정책과 보안을 제공하는 네트워크 플러그인입니다. 특히, Calico는 다음과 같은 특징을 갖고 있습니다:
- L3 기반의 네트워킹: 레이어 3(L3) 네트워크를 사용하여 라우팅 기반의 네트워크를 구현합니다.
- 네트워크 정책: 클러스터 내에서 어떤 Pod가 다른 Pod와 통신할 수 있을지 세부적으로 제어할 수 있는 네트워크 정책을 설정할 수 있습니다.
- BGP 지원: Calico는 BGP(Border Gateway Protocol)를 사용하여 네트워크를 확장하고, 클라우드 환경이나 하이브리드 네트워크에서 클러스터 간 트래픽을 효율적으로 관리합니다.
✅ Calico Components
🧿 Calico API Server
- Calico의 설정 및 상태를 관리하는 중앙 관리 인터페이스입니다.
주요 기능:
- API 제공: Calico의 모든 설정, 네트워크 정책, IP 주소 관리, 라우팅 정보 등을 조회하고 설정할 수 있는 REST API를 제공합니다.
- 데이터 저장소와 상호작용: Calico의 네트워크 및 정책 데이터를 저장하고 관리하는 데이터스토어(Etcd, Kubernetes API 등)와 통신하여 설정 정보를 관리합니다.
🧿 Felix
- calico-node의 핵심 컴포넌트로, 실제 네트워크 정책을 각 노드에 적용하고, 네트워크 트래픽을 제어합니다.
주요 기능:
- 네트워크 정책 적용: Felix는 네트워크 정책에 따라 허용된 트래픽과 차단된 트래픽을 구분합니다. 예를 들어, 특정 Pod는 외부 네트워크로 나갈 수 없도록 차단할 수 있습니다.
- 인터페이스 설정: 각 Pod에 연결된 **가상 네트워크 인터페이스(veth)**를 설정하고, 트래픽이 올바르게 라우팅될 수 있도록 관리합니다.
- 보안 그룹과의 연동: Felix는 네트워크 보안 규칙을 적용하여 Kubernetes 클러스터에서 Pod 간, 또는 Pod와 외부 네트워크 간의 트래픽을 보호합니다.
🧿 BIRD (BGP Daemon)
- BIRD는 BGP 프로토콜을 통해 노드 간의 라우팅 정보를 교환하는 데 사용되는 데몬(프로세스)입니다. Calico는 이를 통해 각 노드가 어디로 트래픽을 보내야 하는지 경로 정보를 자동으로 결정합니다.
주요 기능:
- 노드 간 라우팅: 각 노드에 있는 Pod가 다른 노드의 Pod와 통신할 때, BIRD가 최적의 경로를 설정합니다.
- 동적 경로 교환: BIRD는 노드 간 동적으로 네트워크 경로 정보를 교환하여, 네트워크 경로가 변화하더라도 트래픽이 원활하게 이동할 수 있도록 합니다.
🧿 confd
- Calico 구성 파일을 관리하고, 변경된 설정을 네트워크 시스템에 자동으로 적용하는 구성 관리 도구입니다.
주요 기능:
- 동적 설정 업데이트: Calico의 설정이 변경되면, confd가 이를 감지하여 네트워크 설정 파일을 자동으로 업데이트하고 적용합니다.
- BGP 설정 관리: BIRD와 같은 BGP 데몬의 설정 파일을 관리하여, 라우팅 정보가 변경되면 이를 자동으로 업데이트합니다.
🧿 CNI (Container Network Interface) Plugin
- 컨테이너 네트워크 인터페이스를 설정하는 도구로, Kubernetes에서 Pod가 생성될 때 Pod의 네트워크를 설정합니다.
주요 기능:
- Pod 네트워크 설정: Pod가 생성될 때 가상 네트워크 인터페이스를 생성하고, Pod에 IP 주소를 할당하며, 다른 Pod와 통신할 수 있도록 설정합니다.
- 네트워크 삭제: Pod가 삭제되면, 해당 Pod의 네트워크 인터페이스도 함께 정리합니다.
🧿 Datastore Plugin
- Calico가 네트워크 정책과 설정 정보를 저장하는 데이터 저장소를 관리하는 컴포넌트입니다.
주요 기능:
- Kubernetes API 또는 Etcd와 통신: Calico는 네트워크 설정을 저장할 때 Kubernetes API나 Etcd를 사용할 수 있는데, 이때 datastore 플러그인이 이를 관리합니다.
- 설정 정보 읽기/쓰기: 네트워크 정책, IP 주소 정보 등을 데이터 저장소에 저장하고, 필요할 때 이를 불러옵니다.
🧿 IPAM (IP Address Management) Plugin
- Kubernetes 클러스터에서 각 Pod에 고유한 IP 주소를 할당하는 기능을 담당합니다.
주요 기능:
- IP 주소 할당: Pod가 생성될 때 유일한 IP 주소를 할당하고, 해당 Pod가 어떤 서브넷에 속할지 결정합니다.
- IP 주소 회수: Pod가 삭제되면, 할당되었던 IP 주소를 회수하여 다시 사용할 수 있도록 관리합니다.
🧿 Typha
- Typha는 대규모 클러스터에서 성능을 최적화하기 위한 Calico의 컴포넌트입니다. 특히 노드가 많아질 때 calico-node와 calico-kube-controllers 간의 통신을 최적화해 줍니다.
주요 기능:
- 데이터 전달 최적화: Typha는 컨트롤러에서 발생하는 네트워크 정책, 경로 변경 등의 정보를 여러 노드로 전달할 때 중앙에서 처리하여 통신 오버헤드를 줄입니다.
- 확장성 지원: 클러스터의 노드가 많아질수록 Typha는 각 노드가 컨트롤러와 효과적으로 소통할 수 있게 하여, 성능 저하를 방지합니다.
🧿 Dikastes
- Calico에서 네트워크 정책을 더 세밀하게 관리하는 컴포넌트로, 주로 서비스 메시와의 통합에서 사용됩니다.
주요 기능:
- 서비스 메시 정책 적용: Kubernetes 클러스터에서 Istio 같은 서비스 메시를 사용하는 경우, 네트워크 정책을 더 세밀하게 제어할 수 있도록 도와줍니다.
- 네트워크 정책 확인: 네트워크 정책이 올바르게 적용되었는지 확인하고, 트래픽 제어를 지원합니다.
'쿠버네티스 네트워크 스터디 3기' 카테고리의 다른 글
[3주차] Pod ↔ Pod 통신 (0) | 2024.09.13 |
---|---|
[3주차] Calico CNI 설치 (0) | 2024.09.13 |
[2주차] Pause Container 란 ? (1) | 2024.09.04 |
[2주차] Container Networking Interface (CNI) & Flannel (0) | 2024.09.03 |
[2주차] 쿠버네티스에서 파드 간 통신은 어떻게 작동하나요? (0) | 2024.09.02 |
Comments