Part 2: 아키텍처

지원 버전: Calico v3.29+ / Kubernetes 1.28+ 마지막 업데이트: 2026년 2월 23일

개요

Calico의 아키텍처는 확장성, 성능, 유연성을 중심으로 설계되었습니다. 이 장에서는 각 컴포넌트의 역할, 내부 동작 방식, 그리고 컴포넌트 간 상호작용을 심층적으로 분석합니다.

전체 아키텍처 다이어그램

Calico 아키텍처
spinner

Felix 심층 분석

Felix는 Calico의 핵심 데이터플레인 에이전트로, 각 노드에서 DaemonSet으로 실행됩니다.

Felix의 주요 책임

spinner

Felix 내부 워크플로우

spinner

Felix 설정 상세

Felix iptables 규칙 구조

Felix가 생성하는 iptables 규칙 체인 구조:

spinner

BIRD 심층 분석

BIRD (BIRD Internet Routing Daemon)는 BGP 라우팅을 담당하는 컴포넌트입니다.

BIRD의 역할

spinner

BGP 클러스터 토폴로지

Full Mesh (소규모 클러스터)

spinner

Route Reflector (대규모 클러스터)

spinner

외부 네트워크 연동

spinner

confd 심층 분석

confd는 BIRD 설정 파일을 동적으로 생성하는 템플릿 엔진입니다.

confd 동작 방식

spinner

생성되는 BIRD 설정 예시

Typha 심층 분석

Typha는 대규모 클러스터(50+ 노드)에서 필수적인 팬아웃 프록시입니다.

Typha의 필요성

spinner
spinner

Typha 스케일링 계산

노드 수
권장 Typha 복제본
계산 공식

1-49

0 (불필요)

-

50-199

3

최소 3

200-499

3-5

nodes / 100

500-999

5-10

nodes / 100

1000+

10+

nodes / 200 (최대)

권장 공식: max(3, ceil(nodes / 200))

Typha 배포 설정

kube-controllers 심층 분석

kube-controllers는 Kubernetes와 Calico 데이터스토어 간의 동기화를 담당합니다.

포함된 컨트롤러

spinner

컨트롤러별 역할

컨트롤러
역할
Watch 대상

Policy

K8s NetworkPolicy → Calico Policy 변환

NetworkPolicy

Namespace

네임스페이스 라벨 기반 프로필 관리

Namespace

ServiceAccount

SA 라벨을 프로필에 반영

ServiceAccount

WorkloadEndpoint

삭제된 Pod의 엔드포인트 정리

Pod, WorkloadEndpoint

Node

노드 정보 동기화, 제거된 노드 정리

Node

kube-controllers 설정

데이터스토어 옵션

Calico는 두 가지 데이터스토어 백엔드를 지원합니다.

etcd vs Kubernetes API 비교

특성
Kubernetes API (권장)
etcd 직접 연결

설정 복잡도

낮음 (기본 연동)

높음 (별도 etcd 클러스터)

운영 오버헤드

낮음

높음 (etcd 관리 필요)

확장성

좋음 (Typha와 함께)

매우 좋음

일관성

K8s와 자연스러운 통합

독립적 관리

백업/복원

K8s 백업에 포함

별도 백업 필요

권장 환경

대부분의 환경

초대규모 (5000+ 노드)

Kubernetes API 데이터스토어 (권장)

etcd 데이터스토어

컴포넌트 상호작용 시퀀스

Pod 생성 시 전체 흐름

spinner

패킷 흐름 (Pod-to-Pod, 다른 노드)

spinner

요약

이 장에서 학습한 내용:

  1. Felix: 각 노드의 핵심 에이전트, iptables/eBPF 규칙 및 라우팅 관리

  2. BIRD: BGP 라우팅 데몬, 노드 간 및 외부 네트워크 라우트 교환

  3. confd: BIRD 설정 동적 생성, 데이터스토어 변경 감지

  4. Typha: 대규모 클러스터를 위한 팬아웃 프록시, API 서버 부하 감소

  5. kube-controllers: Kubernetes ↔ Calico 리소스 동기화

  6. 데이터스토어: Kubernetes API (권장) 또는 etcd 선택

다음 장에서는 네트워킹 모드를 심층적으로 분석합니다.


← 이전: 소개 및 기본 개념 | 메인 페이지 | 다음: 네트워킹 모드 →

퀴즈

이 장에서 배운 내용을 테스트하려면 Part 2 퀴즈를 풀어보세요.

마지막 업데이트