프로젝트 소개

Flannel은 주로 Kubernetes 환경을 위해 설계된 간단하고 효율적인 네트워크 패브릭 솔루션으로, Docker 배포도 지원합니다. 핵심 기능은 클러스터 내 여러 노드 간에 Layer 3 IPv4 네트워크를 구축하여 각 컨테이너(파드)가 고유하고 라우팅 가능한 IP 주소를 갖도록 보장하는 것입니다. 이 모델은 호스트 IP 공유와 관련된 복잡성을 제거하여 네트워킹을 단순화합니다. ### 핵심 아키텍처 Flannel은 `flanneld`라는 경량 바이너리 에이전트를 통해 작동하며, 이 에이전트는 클러스터의 모든 호스트에서 실행됩니다. 에이전트는 사전 구성된 더 큰 주소 공간에서 각 호스트에 특정 서브넷 임대를 할당하는 역할을 합니다. 상태와 구성을 유지하기 위해 Flannel은 Kubernetes API(kube 서브넷 관리자로 알려짐)를 직접 사용하거나 외부 etcd 클러스터를 활용합니다. 이러한 유연성 덕분에 네트워크 구성, 할당된 서브넷, 호스트 공용 IP와 같은 보조 데이터를 저장할 수 있습니다. ### 백엔드 메커니즘 호스트 간 패킷 전달은 다양한 백엔드 메커니즘을 통해 처리됩니다. 여기에는 오버레이 네트워크용 VXLAN과 다양한 클라우드 제공업체에 맞춤화된 특정 통합이 포함됩니다. 사용자는 인프라 요구 사항에 가장 적합한 백엔드를 선택할 수 있습니다. ### 네트워크 정책 지원 Flannel은 정책 적용보다는 연결성에 중점을 두지만, 네트워크 정책 통합 옵션을 제공합니다: - **통합 컨트롤러:** Flannel Helm 차트에는 Flannel과 함께 Kubernetes SIGs 네트워크 정책 컨트롤러를 배포하는 옵션이 포함되어 있습니다. - **타사 컨트롤러:** 사용자는 CNI 체이닝을 사용하여 고급 정책 적용을 위해 Calico 또는 Cilium과 같은 다른 프로젝트와 Flannel을 결합할 수 있습니다. ### 배포 옵션 Kubernetes 클러스터의 경우 Flannel은 수동으로 또는 패키지 관리자를 통해 배포할 수 있습니다: - **kubectl:** 사용자는 `kubectl apply`를 사용하여 공식 매니페스트를 직접 적용할 수 있습니다. - **Helm:** 전용 Helm 리포지토리를 통해 간편한 설치 및 구성 관리가 가능합니다. 호환성을 보장하려면 특정 릴리스에 첨부된 매니페스트를 사용하는 것이 좋습니다. 또한 Flannel을 배포하려면 `br_netfilter` 커널 모듈과 `/opt/cni/bin`에 CNI 네트워크 플러그인 설치가 필요합니다. 독립형 Docker 설정과 같은 비Kubernetes 환경의 경우 Flannel은 항상 데이터 저장소로 etcd에 의존합니다. 문서에는 이러한 시나리오에 대한 자세한 지침이 제공됩니다. ### 커뮤니티 및 라이선스 Flannel은 Apache 2.0 라이선스 하에 배포되는 오픈소스 프로젝트입니다. 정기적인 유지관리자 회의, Slack 채널(Rancher Slack의 #k3s, Calico Slack의 #flannel-users)을 통한 지원, 빌드, 구성, 문제 해결 및 통합을 다루는 포괄적인 문서를 갖춘 활발한 커뮤니티를 유지하고 있습니다.