Overview
오늘은 OpenStack Kuryr에 대해 알아보겠다. Kuryr는 OpenStack 환경에서 컨테이너 네트워크를 Neutron과 직접 연결해주는 서비스다.
Kubernetes나 Docker 같은 컨테이너 환경에서 네트워크를 설정할 때, OpenStack 네이티브 네트워크 기능을 그대로 활용할 수 있게 도와준다. Kuryr 덕분에 컨테이너 네트워크와 OpenStack 네트워크가 이중 관리되는 문제를 방지하고, 일관된 네트워크 정책(Security Group, Subnet, Router 등)을 유지할 수 있다
📅 관련 글
2022.05.11 - [Openstack] - Openstack이란?
2022.07.29 - [Openstack] - Openstack Nova란?
2022.08.08 - [Openstack] - Openstack Neutron이란? (network)
2022.08.08 - [Openstack] - Openstack 배치 서비스 Placement란?
2022.08.08 - [Openstack] - Openstack Glance란? (image)
2022.08.08 - [Openstack] - Openstack Keystone이란? (identity)
2022.08.08 - [Openstack] - Openstack horizon이란? (dashboard)
2022.08.09 - [Openstack] - Openstack Cinder/Swift란? (block storage/object storage)
2025.02.27 - [Openstack] - OpenStack Heat란? (Orchestration)
2025.02.27 - [Openstack] - OpenStack Ceilometer란? (Telemetry & Monitoring)
2025.02.28 - [Openstack] - OpenStack Mistral이란? (Workflow Service)
2025.02.28 - [Openstack] - OpenStack Magnum이란? (Container Orchestration)
Kuryr이란?
- Kuryr는 OpenStack에서 컨테이너 네트워크를 관리할 때 Neutron을 네이티브 네트워크 드라이버로 사용하는 서비스이다.
- Kubernetes, Docker 등의 네트워크 플러그인으로 동작하며, 컨테이너마다 Neutron 포트를 생성하고, OpenStack 네트워크 정책(Security Group 등)을 그대로 적용할 수 있게 한다.
- 쉽게 말해, Kuryr는 컨테이너 네트워크와 OpenStack 네트워크의 연결 브릿지 역할을 한다.
Kuryr의 주요 특징
1️⃣ Neutron 네트워크 자원 재사용
- 컨테이너마다 별도의 네트워크 설정 없이, Neutron 포트를 생성해 바로 연결
- 기존 OpenStack 네트워크 정책(Security Group, Subnet 등)을 그대로 활용 가능
2️⃣ OpenStack RBAC 및 멀티 테넌트 지원
- 각 프로젝트(테넌트)마다 독립된 컨테이너 네트워크 구성
- Neutron의 멀티 테넌트 아키텍처를 그대로 사용
3️⃣ Kubernetes CNI 플러그인 지원
- Kubernetes Pod 네트워크를 Neutron 포트로 직접 매핑
- 네트워크 격리 및 보안 정책을 Kubernetes 레벨에서 관리 가능
4️⃣ 성능 개선 (VIF Direct 지원)
- VM의 SR-IOV 네트워크처럼, 컨테이너에도 VIF Direct 방식으로 네트워크 성능 극대화 가능
5️⃣ 서비스 네트워크 관리 (Kuryr-Kubernetes)
- Kubernetes Service 객체는 Neutron Load Balancer와 연결
- Pod 간 통신은 Neutron Subnet 내에서 처리
Kuryr 아키텍처 구성
구성 요소 | 설명 |
Kuryr Controller | Kubernetes 리소스 감시, Neutron 리소스 생성/삭제 관리 |
Kuryr CNI | 각 노드에서 컨테이너 네트워크 인터페이스 설정 |
Neutron | OpenStack 네트워크 서비스 (Subnet, Port, Router 등 제공) |
CNI Plugin | Kubernetes 네트워크 플러그인 (Kuryr로 교체) |
Kuryr 설정 및 사용 예시
1️⃣ Kubernetes 클러스터 구성 시 CNI로 Kuryr 설정
Magnum으로 Kubernetes 클러스터 생성 시 다음 옵션으로 Kuryr 활성화
openstack coe cluster template create \\
--coe kubernetes \\
--network-driver kuryr \\
...
2️⃣ Kuryr 구성 확인
kubectl get pod -n kube-system | grep kuryr
3️⃣ Pod 생성 시 Neutron 포트 생성 확인
Pod가 생성되면, 해당 Pod를 위한 Neutron 포트가 자동 생성됨:
openstack port list --device-owner kuryr
4️⃣ Kubernetes Service는 Neutron LoadBalancer로 매핑
kubectl expose deployment my-app --type=LoadBalancer --port=80
openstack loadbalancer list
Kuryr vs. 일반 CNI 비교
비교 항목 | Kuryr (OpenStack) | Flannel/Calico (일반) |
네트워크 관리 | Neutron 연동 | Kubernetes 독자 관리 |
보안 정책 | Neutron Security Group | NetworkPolicy |
네트워크 성능 | VIF Direct 가능 | Overlay 기반 |
외부 연결 | Floating IP, Router 자동 연동 | 별도 설정 필요 |
멀티 테넌트 | OpenStack 프로젝트 기반 | Namespace 기반 |
Kuryr 활용 사례
시나리오 | 설명 |
OpenStack 네트워크 정책 재사용 | 기존 보안 정책, 네트워크 구성 그대로 컨테이너에 적용 |
네트워크 성능 극대화 | VIF Direct로 네이티브 성능 확보 (SR-IOV 등과 유사) |
네트워크 가시성 강화 | Neutron에서 전체 네트워크 토폴로지 시각화 가능 |
외부 서비스 연동 | Kubernetes Service → Neutron LB 연동으로 외부 트래픽 처리 간소화 |
Kuryr 한계 및 주의점
항목 | 내용 |
초기 설정 복잡 | Neutron, Kuryr, Kubernetes 연동 구성 난이도 높음 |
Neutron 부하 증가 | Pod마다 Neutron 포트 생성 → Neutron 성능 튜닝 필요 |
CNI 변경 어려움 | 기존 클러스터에서 Flannel → Kuryr 전환은 어려움 (초기 설계 단계에서 결정해야 함) |
서비스 업데이트 이슈 | Neutron LoadBalancer 연동 시 서비스 변경이 느릴 수 있음 |
Kuryr vs. Cloud Provider CNI 비교
비교 항목 | Kuryr (OpenStack) | AWS VPC CNI | GCP CNI | Azure CNI |
네이티브 연동 | Neutron | VPC | VPC | VNet |
성능 | VIF Direct | ENI 기반 | VPC Native | VNet Native |
설정 난이도 | 높음 | 쉬움 | 쉬움 | 쉬움 |
보안 정책 | Security Group | Security Group | NetworkPolicy | NSG |
외부 연결 | Floating IP | Elastic IP | External IP | Public IP |
결론
Kuryr는 OpenStack 환경에서 컨테이너 네트워크를 Neutron과 완벽하게 연동할 수 있는 강력한 솔루션이다.
특히 다음과 같은 경우라면 강력 추천할 수 있다:
- OpenStack에서 Kubernetes를 운영하는 경우
- OpenStack의 기존 네트워크 정책(Security Group 등)을 그대로 사용하고 싶은 경우
- 컨테이너 네트워크 성능(VIF Direct)이 중요한 경우
반면, 다음과 같은 경우에는 다른 CNI를 검토할 필요도 있다:
- OpenStack과의 강한 종속성을 피하고 싶은 경우
- 단순 테스트/개발 환경에서는 Flannel 같은 가벼운 CNI가 더 적합할 수도 있음
➡️ OpenStack 기반 컨테이너 네트워크 표준 솔루션으로 Kuryr를 적극 활용하자!
Reference
'Openstack' 카테고리의 다른 글
OpenStack Magnum이란? (Container Orchestration) (0) | 2025.03.27 |
---|---|
OpenStack Mistral이란? (Workflow Service) (0) | 2025.03.14 |
OpenStack Ceilometer란? (Telemetry & Monitoring) (0) | 2025.03.05 |
OpenStack Heat란? (Orchestration) (0) | 2025.02.27 |
Openstack Cinder/Swift란? (block storage/object storage) (0) | 2022.08.09 |