2023. 5. 27. 18:44ㆍDev
Karmada란?
Karmada는 다수의 Kubernetes 클러스터를 하나의 클러스터처럼 사용할 수 있게 해주는 멀티 클러스터 관리 도구입니다.
멀티 클러스터, 멀티 클라우드 환경에서 클라우드 네이티브 애플리케이션을 관리, 실행할 수 있는 Kubernetes 관리 시스템입니다.
공식 문서에서는 아래와 같이 한 줄로 표현합니다.
Open, Multi-Cloud, Multi-Cluster Kubernetes Orchestration
Karmada라는 이름은 Kubernetes와 Armada(함대)의 합성어입니다.
쿠버네티스 클러스터가 스페인 무적함대처럼 집단을 이루고 있다고 생각하면 멀티 클러스터를 관리하는 Karmada의 역할과 매우 잘 맞는 이름이라고 느껴집니다. 로고도 돛이 여러 개 있는 모습입니다.
Karmada는 Kubernetes 네이티브 API를 사용하고 고급 스케줄링 기능을 제공함으로써 Karmada는 진정한 개방형 멀티클라우드 Kubernetes를 구현한다고 합니다.
CNCF의 Sandbox Project이며 2023년 5월 현재 공식 깃헙에서 3.3k의 star 수를 기록하고 있습니다.
https://github.com/karmada-io/karmada
Karmada는 중앙 집중식 멀티클라우드 관리, 고가용성, 장애 복구, 트래픽 스케줄링과 같은 주요 기능을 제공합니다.
퍼블릭 클라우드, 프라이빗 클라우드, 엣지 클러스터 등을 가리지 않고 모든 쿠버네티스 클러스터를 통합하여 관리할 수 있게 도와줍니다.
멀티 클라우드, 하이브리드 클라우드를 쓰는 상황에서 멀티클러스터 애플리케이션 관리를 위한 턴키 자동화를 제공하는 것을 목표로 합니다.
왜 Karmada인가
Karmada 공식 사이트에서는 이에 6가지 키워드를 들었습니다.
Kubernetes Native API Compatible
Zero change upgrade: from single-cluster to multi-cluster; Seamless integration of existing K8s tool chain
변경 사항 없는 업그레이드: 단일 클러스터에서 멀티 클러스터로; 기존 k8s 툴체인과 원활한 통합
Open and Neutral
Jointly initiated by Internet, finance, manufacturing, teleco, cloud providers, etc. Target for open governance with CNCF
인터넷, 금융, 제조, 통신, 클라우드 제공업체 등이 공동으로 주도합니다. CNCF를 통한 개방형 거버넌스 목표
Avoid Vendor Lock-in
Integration with mainstream cloud providers; Automatic allocation, migration across clusters; Not tied to proprietary vendor orchestration
주류 클라우드 제공업체와의 통합; 클러스터 간 자동 할당, 마이그레이션; 독점 공급업체 오케스트레이션에 종속되지 않음
Out of the Box
Built-in policy sets for scenarios: Active-active, Remote DR, Geo Redundant
액티브-액티브, 원격 DR, 지리적 이중화 같은 시나리오에 대한 기본적인 정책 제공
Fruitful Scheduling Policies
Cluster Affinity; Multi Cluster Splitting/Rebalancing; Multi-Dimension HA: Region/AZ/Cluster/Provider
클러스터 어피니티, 멀티 클러스터 분할/리밸런싱; 다양한 차원의 HA: 리전/AZ/클러스터/공급자
Centralized Management
Cluster location agnostic; Support clusters in public cloud, on-prem or edge
클러스터 위치와 상관없음; 퍼블릭 클라우드, 온프레미스, 엣지 클러스터 지원
How It Works
Karmada는 Kubernetes API, Karmada Policy API 등을 이용하여 여러 클러스터의 Lifecycle을 관리합니다.
Karmada Concepts
Karmada의 핵심 개념에는 Resource Template, Propagation Policy, Override Policy가 있습니다.
Resource Template는 Kubernetes Native API 정의를 이용하여 쿠버네티스와 통합을 쉽게 해 줍니다.
Propagation Policy는 멀티클러스터에서 스케쥴링과 요구사항 전파를 위한 정책을 정의합니다.
Override Policy는 클러스터 구성 관련 자동화를 쉽게 해 줍니다. 예를 들면, 클러스터 리전에 따라 이미지의 prefix를 재정의한다거나, 클라우드 제공업체에 따라 StorageClass를 재정의합니다.
Karmada Architecture
Karmada 컨트롤 플레인은 다음 요소들로 구성됩니다.
- Karmada API Server
- Karmada Controller Manager
- Karmada Scheduler
ETCD는 Karmada API 객체를 저장하고, API 서버는 다른 모든 컴포넌트가 통신하는 REST 엔드포인트이며, Karmada 컨트롤러 매니저는 API 서버를 통해 생성한 API 객체를 기반으로 작업을 수행합니다.
Karmada의 컨트롤러 매니저는 여러 컨트롤러를 실행하며, 이 컨트롤러들이 Karmada 오브젝트를 감시하고 기본 클러스터의 API 서버와 통신하여 일반 쿠버네티스 리소스를 생성합니다.
Cluster Controller: 클러스터의 라이프사이클을 관리하기 위해 Karmada에 쿠버네티스 클러스터를 연결합니다.
Policy Controller: PropagationPolicy 오브젝트를 감시합니다. PropagationPolicy 오브젝트가 추가되면 resourceSelector와 일치하는 리소스 그룹을 선택하고 각 단일 리소스 오브젝트와 함께 ResourceBinding을 생성합니다.
Binding Controller: ResourceBinding 객체를 감시하고 단일 리소스 매니페스트가 있는 각 클러스터에 해당하는 Work 객체를 생성합니다.
Execution Controller: Work 객체를 감시합니다. Work 개체가 생성되면 컨트롤러가 멤버 클러스터에 리소스를 배포합니다.
Kubernetes의 아키텍처와 비슷한 것 같기도 하네요.
'Dev' 카테고리의 다른 글
브랜치 쓰지 마세요. 여러 GitOps 환경에 배포할 때요 (0) | 2023.06.01 |
---|---|
턴키(Turnkey) 방식과 Out of the box (0) | 2023.05.31 |
컨피그레이션 드리프트란? Configuration Drift (0) | 2023.04.25 |
find log where string does not exist, with grep -iv (0) | 2023.04.25 |
Kubernetes Dashboard Token Expired Issue (0) | 2023.03.21 |