본문 바로가기
  • 오늘처럼
소프트웨어 아키텍처

KubeEdge concept

by bluefriday 2021. 9. 24.
반응형

KubeEdge

KubeEdge는 컨테이너화(Containerized)된 어플리케이션에 대한 Kubernetes 의 오케스트레이션 기능을 엣지 영역으로 확장하기 위한 오픈 소스 시스템이다. 클라우드 컴퓨팅에서 사용되고 있는 kubernetes 서비스를 엣지 컴퓨팅에 접목하기 위한 시도 중의 하나로 k3s, micro-k8s 등의 유사 프로젝트가 있다. kubernetes 와 엣지컴퓨팅에 대하여는 본 블로그드의 관련 포스트를 참고하자.

쉽게 말해 KubeEdge 는, 엣지 노드에서 kubernetes를 사용할 수 있게 지원해주는 오픈소스이다. CNCF sandbox project 이며 2019년 3월에 첫 릴리즈를 시작으로 현재 그 기능이 안정화 되어 가고 있다.

 

 

주요 특징과 장점

  • 엣지 컴퓨팅 : 도메인 전용인 로직들을 엣지 단에서 실행하여, 네트워크 대역폭을 줄이고, 데이터의 보안성 증가
  • 개발구성 단순화 : 엣지 단에서 http/mqtt를 모두 지원하므로 원하는 프로토콜로 개발한 후에 edge/cloud 중 적합한 곳에서 실행 가능
  • K8S 네이티브 지원 : 기존의 클라우드 환경에서 k8s 클러스터를 사용하는 방식과 동일하게 엣지 노드를 제어 가능
  • 응용성 : 기존의 ML, 이미지 인식, 이벤트 처리 등의 응용 프로그램을 엣지에 쉽게 배포 가능

 

 

Architecture

위 아키텍처에서 확인할 수 있듯이, KubeEdge 의 구성도는 크게 3가지 영역으로 나눠 볼 수 있다. 

 

 

Components

1. Cloud Part

Component Role
Cloud Hub Cloud Part 에서 디바이스의 변화를 감지하고, EdgeHub로 메세지를 보내는 웹 소켓 서버
EdgeController 데이터가 특정 노드로 전달 될 수 있도록, edge 노드와 pod 의
메타데이터를 관리하는 
확장된(extended) k8s controller
DeviceController Cloud ↔ Edge part 간 디바이스의 메타 데이터와 상태가 동기화 될 수 있도록
디바이스를 관리하는 확장된(extended) k8s controller

 

2. Edge Part

Component Role
EdgeHub 엣지 컴퓨팅을 위해 클라우드 서비스와 상호작용하는 웹 소켓 클라이언트.
Cloud part 에서의 EdgeController 와 유사한 역할.
엣지 사이트의 디바이스 상태를 cloud part 로 전송.
Edged 엣지 노드에서 구동되며, 컨테이너화 된 앱을 관리하는 에이전트
Pod, Volume, Node 와 같은 K8S 의 객체의 수명 주기를 관리하는 경량 Kubelet
EventBus MQTT 서버와 통신
ServiceBus HTTP 서버와 통신. cloud 모듈들이 Edge 에서 구동되는 HTTP 서버들에게 접근할 수 있도록 지원
MetaManager Edged와 EdgeHub 사이의 메세지 프로세서.
경량 DB(SQLite) 에 데이터를 저장하고 가져오는 역할 수행
DeviceTwin 디바이스의 상태를 저장하고, cloud part에 자신의 디바이스 상태를 동기화.
app 에 대한 query interface 제공

 

 

 

 

댓글