vSphere IaaS control plane는 DevOps 엔지니어가 공통의 공유 Kubernetes 환경에서 컨테이너뿐 아니라 VM을 배포하고 실행할 수 있는 VM 서비스 기능을 제공합니다. VM 서비스를 사용하여 네임스페이스에서 가상 시스템의 수명 주기를 관리할 수 있습니다. VM 서비스는 Tanzu Kubernetes Grid 클러스터를 구성하는 VM 및 독립형 VM을 관리합니다.

VM 서비스는 Kubernetes를 사용하지만 쉽게 컨테이너화할 수 없는 기존 VM 기반 워크로드가 있는 DevOps 팀의 요구 사항을 해결합니다. 또한 컨테이너 플랫폼과 함께 Kubernetes가 아닌 플랫폼 관리의 오버헤드를 줄이는 데에도 도움이 됩니다. Kubernetes 플랫폼에서 컨테이너와 VM을 실행하는 경우 DevOps팀은 워크로드 공간을 하나의 플랫폼으로 통합할 수 있습니다.

참고: VM 서비스는 독립형 VM 외에도 Tanzu Kubernetes Grid 클러스터를 구성하는 VM을 관리합니다. 클러스터에 대한 자세한 내용은 " vSphere IaaS 제어부에서 TKG 서비스 사용" 설명서를 참조하십시오.
VM 서비스는 Tanzu Kubernetes Grid 클러스터를 구성하는 VM 및 독립형 VM을 관리합니다.

VM 서비스를 통해 배포된 각 VM은 vSphere IaaS control plane 인프라를 기반으로 자체 운영 체제를 포함한 모든 구성 요소를 실행하는 완전한 시스템으로 작동합니다. VM은 감독자가 제공하는 네트워킹 및 스토리지에 액세스할 수 있으며 표준 Kubernetes kubectl 명령을 사용하여 관리됩니다. VM은 Kubernetes 환경에서 다른 VM 또는 워크로드의 영향을 받지 않는 완전히 분리된 시스템으로 실행됩니다.

Kubernetes 플랫폼에서 가상 시스템을 사용하는 경우

일반적으로 컨테이너 또는 VM에서 워크로드를 실행하기로 결정하는 경우는 비즈니스 요구와 목표에 따라 다릅니다. VM을 사용하는 이유 중에는 다음과 같은 경우가 있습니다.

  • 애플리케이션을 컨테이너화할 수 없습니다.
  • 프로젝트에 대한 특정 하드웨어 요구 사항이 있습니다.
  • 애플리케이션이 사용자 지정 커널 또는 사용자 지정 운영 체제용으로 설계되었습니다.
  • 애플리케이션이 VM에서 실행하는 데 더 적합합니다.
  • 일관된 Kubernetes 환경을 유지하고 오버헤드를 방지하려고 합니다. Kubernetes가 아닌 플랫폼 및 컨테이너 플랫폼에 대해 별도의 인프라를 실행하는 대신 해당 스택을 통합하고 익숙한 kubectl 명령으로 관리할 있습니다.

VM 서비스의 개념

vSphere 네임스페이스에 배포할 VM의 상태를 설명하려면 VM 클래스, VM 이미지 및 스토리지 클래스와 같은 매개 변수를 사용합니다. 그런 다음 VM 서비스는 이러한 규격을 함께 사용하여 독립형 VM 또는 Tanzu Kubernetes Grid 클러스터를 지원하는 VM을 생성합니다.

VM 규격은 VM 클래스, VM 이미지 및 스토리지 클래스를 결합하여 VM을 생성합니다.
VM 서비스
VM 서비스는 VM 및 연결된 vSphere 리소스를 관리하기 위한 선언적 Kubernetes 스타일 API를 제공하는 vSphere IaaS control plane의 구성 요소입니다. VM 서비스를 통해 vSphere 관리자는 리소스를 제공하고 VM 클래스 및 VM 이미지와 같은 템플릿을 Kubernetes에 제공할 수 있습니다. DevOps 엔지니어는 이러한 리소스를 사용하여 원하는 VM 상태를 설명할 수 있습니다. DevOps 엔지니어가 VM 상태를 지정하면 VM 서비스는 지원 인프라 리소스에 대해 원하는 상태를 실현된 상태로 변환합니다.

VM 서비스를 통해 생성된 VM은 kubectl 명령을 사용하여 Kubernetes 네임스페이스에서만 관리할 수 있습니다. vSphere 관리자는 vSphere Client에서 VM을 관리할 수 없지만 세부 정보를 표시하고 사용하는 리소스를 모니터링할 수 있습니다. 자세한 내용은 vSphere IaaS control plane에서 사용 가능한 가상 시스템 모니터링 항목을 참조하십시오.

VM 클래스
VM 클래스는 VM에 대한 리소스 집합을 요청하는 데 사용할 수 있는 VM 규격입니다. VM 클래스는 vSphere 관리자가 제어 및 관리하며 가상 CPU 수, 메모리 용량 및 예약 설정과 같은 매개 변수를 정의합니다. 정의된 매개 변수는 감독자의 기본 인프라 리소스에 의해 지원되고 보장됩니다.

vSphere 관리자는 사용자 지정 VM 클래스를 생성할 수 있습니다.

또한 워크로드 관리는 몇 가지 기본 VM 클래스를 제공합니다. 일반적으로 각 기본 클래스 유형에는 보장됨 및 사용 시도라는 두 가지 버전이 있습니다. 보장됨 버전은 VM 규격이 요청하는 리소스를 완전히 예약합니다. 사용 시도 클래스 버전은 그렇지 않으며, 리소스가 오버 커밋되도록 허용합니다. 일반적으로 보장됨 유형은 운영 환경에서 사용됩니다.

기본 VM 클래스의 예에는 다음이 포함됩니다.

클래스 CPU 메모리(GB) 예약된 CPU 및 메모리
guaranteed-large 4 16
best-effort-large 4 16 아니요
guaranteed-small 2 4
best-effort-small 2 4 아니요

vSphere 관리자는 특정 네임스페이스 내에서 DevOps 엔지니어가 사용할 수 있도록 기존 VM 클래스를 원하는 만큼 할당할 수 있습니다.

VM 클래스는 DevOps 엔지니어에게 간소화된 환경을 제공합니다. DevOps는 생성하려는 각 VM의 전체 구성을 이해할 필요가 없습니다. 대신 사용 가능한 옵션에서 VM 클래스를 선택할 수 있으며 VM 서비스를 통해 VM 구성이 관리됩니다.

Kubernetes 측에서 VM 클래스는 VirtualMachineClass 리소스로 나타납니다.

VM 이미지
VM 이미지는 운영 체제, 애플리케이션 및 데이터를 비롯한 소프트웨어 구성이 포함된 템플릿입니다.

DevOps 엔지니어는 VM을 생성할 때 네임스페이스와 연결된 컨텐츠 라이브러리에서 이미지를 선택할 수 있습니다. DevOps에 이미지는 VirtualMachineImage 개체로 노출됩니다.

vSphere 관리자는 vSphere IaaS control plane와 호환되는 VM 이미지를 생성하고 컨텐츠 라이브러리에 이를 업로드할 수 있습니다.

컨텐츠 라이브러리
DevOps 엔지니어는 컨텐츠 라이브러리를 이미지 소스로 사용하여 VM을 생성합니다. VM 클래스와 마찬가지로 vSphere 관리자는 기존 컨텐츠 라이브러리를 네임스페이스 또는 클러스터에 할당하여 DevOps 엔지니어가 사용할 수 있도록 합니다. vSphere 관리자는 네임스페이스 컨텐츠 라이브러리를 쓰기 가능으로 만들 수도 있습니다. 이 추가 사용 권한을 통해 DevOps 사용자는 해당 이미지를 라이브러리에 게시할 수 있습니다.
스토리지 클래스
VM 서비스는 스토리지 클래스를 사용하여 가상 디스크를 배치하고 영구 볼륨을 동적으로 연결합니다. 스토리지 클래스에 대한 자세한 내용은 vSphere IaaS control plane에서 감독자 워크로드와 함께 영구 스토리지 사용 항목을 참조하십시오.
VM 규격
DevOps 엔지니어는 VM 이미지, VM 클래스 및 스토리지 클래스를 함께 제공하는 YAML 파일에서 원하는 VM 상태를 설명합니다.
Kubernetes용 VM Operator
VM Operator를 사용하면 Kubernetes 스타일의 선언적 API를 사용하여 가상 시스템을 관리할 수 있습니다.
vSphere 8.0 업데이트 3 릴리스부터 vSphere IaaS control plane은 VM Operator v1alpha2를 지원합니다. 다른 이점 중에서도 이 버전은 다음과 같은 기능을 제공합니다.
  • 인라인 Cloud-Init 및 Windows 지원을 비롯한 부트스트랩 제공자 지원 향상.
  • 게스트 네트워킹 구성이 향상.
  • 확대된 상태 기능.
  • 사용자 정의 준비 상태 게이트 지원.
  • 새로운 VirtualMachineWebConsoleRequest API.

v1alpha2와 관련된 새로운 API 변경 사항 외에도 v1alpha2의 다른 API 대부분은 v1alpha1과 패리티로 작동할 수 있습니다. VM 규격의 대부분의 필드는 v1alpha1 이전 버전과 호환됩니다.

v1alpha2 릴리스 후에도 v1alpha1 개체를 계속 사용할 수 있습니다. 모든 v1alpha1 개체는 VM Operator에 내장된 변환 Webhook을 사용하여 v1alpha2로 자동 변환됩니다.

VM Operator v1alpha2 및 지원되는 필드에 대한 자세한 내용은 https://vm-operator.readthedocs.io/en/stable/ref/api/v1alpha2/ 항목을 참조하십시오.

네트워킹
VM 서비스에는 특정 요구 사항이 없으며 vSphere IaaS control plane에서 사용할 수 있는 네트워크 구성에 의존합니다. VM 서비스는 두 가지 유형의 네트워킹, 즉 vSphere네트워킹 또는 NSX를 지원합니다. VM이 배포되면 사용 가능한 네트워크 제공자가 정적 IP 주소를 VM에 할당합니다. 자세한 내용은 " vSphere IaaS 제어부 개념 및 계획" 설명서에서 감독자 네트워킹을 참조하십시오.

VM 서비스 및 vSphere 영역이 있는 감독자

3개 영역 감독자에서 VM을 생성하면 VM 인스턴스가 사용 가능한 모든 영역에 복제됩니다. YAML 파일을 통해 VM 배치를 제어하기 위해 DevOps 팀에서 Kubernetes 레이블 topology.kubernetes.io/zone을 사용할 수 있습니다. 예: topology.kubernetes.io/zone: zone-a02

VM 프로비저닝 및 모니터링 워크플로

vSphere 관리자는 VM의 정책 및 거버넌스에 대한 가드레일을 설정하고 VM 클래스 및 VM 템플릿과 같은 VM 리소스를 DevOps 엔지니어에게 제공합니다. VM이 배포된 후 vSphere Client를 사용하여 모니터링할 수 있습니다.

단계 수행자 설명
1 vSphere 관리자 컨텐츠 라이브러리를 생성하고 네임스페이스 또는 감독자에 할당
2 vSphere 관리자 VM 클래스를 생성하고 네임스페이스에 할당

NVIDIA vGPU를 사용하려면 VM 클래스에서 PCI 디바이스를 구성합니다. vSphere IaaS control plane에서 vGPU 및 기타 PCI 디바이스를 사용하여 VM 배포의 내용을 참조하십시오.

3 DevOp 엔지니어 Kubernetes 네임스페이스에서 VM 프로비저닝

Tanzu Kubernetes Grid 클러스터 VM에 대한 자세한 내용은 "vSphere IaaS 제어부에서 TKG 서비스 사용" 항목을 참조하십시오.

4 vSphere 관리자 배포된 VM 모니터링
5 DevOps 엔지니어 VM 이미지를 컨텐츠 라이브러리에 게시