Openstack

OpenStack Kuryr이란? (Container Networking)

Somaz 2025. 4. 11. 11:35
728x90
반응형

Overview

오늘은 OpenStack Kuryr에 대해 알아보겠다. Kuryr는 OpenStack 환경에서 컨테이너 네트워크를 Neutron과 직접 연결해주는 서비스다.


Kubernetes나 Docker 같은 컨테이너 환경에서 네트워크를 설정할 때, OpenStack 네이티브 네트워크 기능을 그대로 활용할 수 있게 도와준다. Kuryr 덕분에 컨테이너 네트워크와 OpenStack 네트워크가 이중 관리되는 문제를 방지하고, 일관된 네트워크 정책(Security Group, Subnet, Router 등)을 유지할 수 있다

출처 : https://docs.openstack.org/kuryr-kubernetes/latest/installation/services.html

 

 

 

📅 관련 글

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

728x90
반응형