KubeVirt란?
KubeVirt는 쿠버네티스를 기반 오케스트레이션 플랫폼으로 사용하여 가상 머신(VM)을 실행, 배포, 관리할 수 있는 오픈소스 프로젝트입니다. 컨테이너 내에서 가상 머신을 실행하는 프로세스를 컨테이너 네이티브 가상화라고 합니다. KubeVirt는 가상 머신을 컨테이너 내에서 패키징하고 두 워크로드를 단일 콘솔에서 관리하여 컨테이너 네이티브 가상화를 지원합니다.
KubeVirt를 사용하면 가상 머신은 기존 가상화 환경에서와 동일한 방식으로 작동하면서도 컨테이너화된 마이크로서비스 및 클라우드 네이티브 애플리케이션과 동일한 플랫폼에서 실행될 수 있습니다. VM을 비롯해 환경의 모든 워크로드는 동일한 쿠버네티스 인프라, 툴 및 관리의 이점을 얻을 수 있습니다.
KubeVirt는 Cloud Native Computing Foundation(CNCF)의 후원을 받으며, 신뢰할 수 있는 하이브리드 클라우드 애플리케이션 플랫폼에서 기존 가상 머신의 마이그레이션 및 관리를 지원하는 Red Hat OpenShift 기능인 Red Hat® OpenShift® Virtualization의 오픈소스 기반입니다.
KubeVirt의 작동 방식
KubeVirt는 쿠버네티스 애플리케이션 프로그래밍 인터페이스(API)를 확장하여 작동하므로 다른 쿠버네티스 리소스 및 툴과 동일한 방식으로 가상 머신과 상호작용할 수 있습니다. 따라서 컨테이너와 가상 머신은 동일한 클러스터, 노드, 네트워크를 공유할 수 있습니다.
KubeVirt의 추가 기능은 다음과 같은 3가지 주요 요소로 구성됩니다.
- 사용자 정의 리소스 정의(Custom Resource Definitions, CRD): 쿠버네티스 API를 확장하거나 자체 API를 프로젝트 또는 클러스터에 가져올 수 있도록 허용하는 오브젝트입니다. 사용자 정의 리소스 정의 파일을 통해 사용자의 오브젝트 종류를 정의하고 API 서버가 전체 라이프사이클을 처리할 수 있습니다. KubeVirt는 CRD를 쿠버네티스 API에 가져옵니다. 그러면 가상 머신을 다른 쿠버네티스 오브젝트(예: 포드)처럼 처리할 수 있습니다.
- 컨트롤러: 클러스터에서 실행되는 배포 집합으로, 새 KubeVirt CRD를 관리하기 위한 API 엔드포인트를 제공합니다.
- 에이전트: 클러스터의 작업자 노드에서 실행되어 가상화와 관련된 노드 태스크를 관리합니다.
KubeVirt를 내부에 KVM 기반 가상 머신이 실행되는 포드로 생각할 수도 있습니다. 쿠버네티스에서 포드는 함께 실행되며 동일한 리소스를 공유하는 컨테이너 그룹이며, KVM(커널 기반 가상 머신)은 Linux® 커널을 하이퍼바이저로 작동하도록 확장하는 오픈소스 기술입니다. KubeVirt의 경우 가상 머신 인스턴스가 포드처럼 실행됩니다. 따라서 KubeVirt는 VM 상태(예: '중단됨', '일시 중지됨', '실행 중')를 관리하는 것은 물론, 가상 머신의 프로비저닝, 스케줄링, 마이그레이션 등과 같은 작업을 수행합니다.
Red Hat 리소스
KubeVirt의 기능
가상 머신 생성
하위 커맨드 'create vm'이 포함된 virtctl 커맨드라인에서 쿠버네티스 환경 내에 가상 머신을 생성할 수 있습니다. 또한 인스턴스 유형과 기본 설정을 관리하여 성능 프로필 설정, 런타임 특성 사용자 정의 등 여러 가상 머신의 구성을 한 번에 제어할 수 있습니다.
가상 머신 관리
virtctl 커맨드라인 인터페이스(CLI)는 표준 쿠버네티스 커맨드라인 툴인 kubectl과 함께 작동하여 쿠버네티스 클러스터에서 가상 머신을 관리하기 위한 가상화 관련 작업을 제공합니다. 가상 머신 관리자는 virtctl을 사용하여 다음을 수행할 수 있습니다.
- 가상 머신 중단, 시작, 다시 시작, 일시 중지
- 디스크 이미지 관리
- 가상 머신의 직렬, 그래픽 및 ssh 콘솔에 액세스
- 노드 간 마이그레이션
쿠버네티스 오케스트레이션 및 스케줄링은 VM의 원활한 가동과 실행을 위해 여러 계층으로 이루어진 관리를 제공합니다. 컨테이너 워크로드도 실행 중이라면 KubeVirt는 단일 컨트롤 플레인에서 컨테이너와 VM을 관리하고 모니터링하는 데 도움이 됩니다.
가상 머신 마이그레이션
KubeVirt는 여러 가상 머신 마이그레이션 방법을 지원하며, 그중에는 실시간 마이그레이션도 포함됩니다. 실시간 마이그레이션은 가상 머신에 대한 액세스를 중단하지 않고 한 호스트에서 다른 호스트로 해당 VM을 이동하고 관련 스토리지를 다시 매핑하는 프로세스입니다. 지속적인 가동 시간이 요구되는 VM에 적합한 옵션으로, 노드 또는 플랫폼 간 마이그레이션 시 운영 중단을 피할 수 있습니다.
실험 및 확장
쿠버네티스에서 가상 머신을 실행하면 추가 기능을 실험할 수 있습니다. 예를 들어, CDI(Containerized Data Importer)는 KubeVirt VM용 디스크 스토리지를 지원하고 스토리지 리소스를 관리할 수 있는 호환 가능한 기술입니다.
또한 쿠버네티스는 확장을 위해 개발되었습니다. 새 기능을 실험하고, 워크로드에 기능을 추가하고, 레거시 애플리케이션을 현대화할 때 CPU(중앙 처리 장치) 사용량에 따라 자동으로 스케일 업과 스케일 다운이 가능합니다.
Kubevirt의 이점
클라우드 네이티브 통합
KubeVirt를 사용하면 쉽게 컨테이너화되지 않는 워크로드를 클라우드 네이티브 애플리케이션 및 마이크로서비스와 함께 실행할 수 있습니다. 가상화된 애플리케이션 구성 요소는 개발자가 구성 요소의 컨테이너화나 가상화 여부에 상관없이 애플리케이션을 빌드, 관리, 배포, 확장할 수 있는 통합 개발 플랫폼의 일부가 됩니다.
또한 KubeVirt를 통해 가상 머신은 역할 기반 액세스 제어(RBAC), 통합 모니터링 및 로깅, 서비스 메쉬 등과 같은 다양한 쿠버네티스 네이티브 기능과의 통합을 활용할 수 있습니다.
현대화
가상화를 사용하면 단일 하드웨어에서 다양한 운영 체제 환경을 빠르게 시작하고 중단할 수 있습니다. 이러한 접근 방식은 IT 에코시스템에 유연성, 속도, 안정성 등 다양한 장점을 제공합니다. 그러나 가상화 플랫폼이 발전하고 더 많은 비용이 들면서 일부 기업은 새로운 솔루션을 모색하고 있습니다. KubeVirt는 단순히 하이퍼바이저를 대체하는 것이 아니라 현대화를 위한 경로와 플랫폼을 제공하므로 아주 매력적인 옵션입니다.
KubeVirt를 사용하면 컨테이너와 VM을 동시에 생성하고 실행할 수 있을 뿐만 아니라, 새로운 애플리케이션을 개발하고 레거시 워크로드를 현대화하는 통합 플랫폼을 확보할 수 있습니다. 그리고 현대화하는 과정에서 클라우드 네이티브 개발, 인공지능, 머신 러닝의 발전 사항을 알아가는 데 필요한 리소스와 기술을 활용할 수 있습니다.
고급 기능 및 동등성
CNCF 인큐베이팅 프로젝트로서 KubeVirt는 쿠버네티스 네이티브의 고급 특징 및 기능이 포함된 상태에서 출시될 뿐만 아니라 오픈소스 커뮤니티 기여자들이 지속적으로 개선하고 확장합니다.
또한 KubeVirt는 VMware vSphere, HyperV 등 다른 엔터프라이즈 가상화 플랫폼과의 기능 동등성을 제공하므로 기존 가상화 환경에서 수행하던 태스크를 동일하게 수행할 수 있습니다.
성능
KubeVirt는 변화하는 CPU 요구 사항과 메모리 할당을 처리할 수 있으므로 기존 가상화 솔루션에 비해 대기 시간이 짧습니다. 또한 KubeVirt는 베어 메탈 하드웨어와 실행(runtime) 환경 간 추상화 레이어를 간소화하므로 리소스 사용의 효율성을 높이고 성능을 개선합니다.
KubeVirt 커뮤니티의 스케일 분과회(SIG-scale)는 KubeVirt의 성능과 확장성을 모든 릴리스에서 평가해야 한다고 판단하여 KubeVirt가 데이터센터 환경에서 확장하는 방법을 모니터링할 수 있는 기술을 개발했습니다. 이제 KubeVirt는 각 릴리스 후에 이러한 성능 및 확장성 데이터를 공유합니다.
빌트인 보안
KubeVirt는 가상 머신을 비롯해 모든 환경에서 정책이 일관되게 적용되도록 하는 쿠버네티스 네이티브 보안을 활용합니다. 사용자는 클러스터의 모든 호스트에서 시스템 수준의 제어를 구성할 필요 없이 배포에 포함된 모든 포드에 적용해야 하는 단일 구성(예: 네트워크 정책)을 지정할 수 있습니다. 이 기능을 사용하면 가상 머신의 보안을 일관되고 규모에 맞게 관리하기가 더 쉽습니다.
정책을 CI/CD 시스템과 쿠버네티스 권한 컨트롤러 프레임워크에 연결함으로써 조직은 소프트웨어 개발 라이프사이클의 초기에 제어 정책을 더욱 쉽게 적용하여 런타임 시 노출을 방지할 수 있습니다.
KubeVirt와 Red Hat
Red Hat OpenShift Virtualization은 가상 머신과 컨테이너를 동시에 실행할 수 있는 KubeVirt와 KVM을 기반으로 한 현대적인 애플리케이션 플랫폼입니다. 포함되어 있는 가상화를 위한 마이그레이션 툴킷은 몇 단계로 간단히 기존 가상화 플랫폼에서 마이그레이션하는 데 필요한 툴을 제공합니다. Red Hat Ansible® Automation Platform을 통해 규모에 따른 마이그레이션에서 Day 2 오퍼레이션과 문제 해결까지 제공을 가속화할 수 있습니다. Red Hat Advanced Cluster Management for Kubernetes로 단일 콘솔에서 VM의 보안과 성능을 모니터링할 수 있습니다. 스토리지, 백업 및 재해 복구, 네트워킹 등을 위한 추가 지원 옵션과 파트너 통합 등으로 Red Hat은 조직이 하이브리드 클라우드 전체에 걸쳐 가상 인프라의 원활한 운영을 유지하고 준비가 되었을 때 현대화할 수 있도록 지원합니다.
레드햇 공식 블로그
레드햇 공식 블로그에서 고객, 파트너, 커뮤니티 에코시스템 등 현재 화제가 되는 최신 정보를 살펴 보세요.