다음 페이지에서는 중첩된 가상화를 지원하는 노드를 사용하여 Google Kubernetes Engine(GKE) Standard 클러스터를 만드는 방법을 설명합니다. Compute Engine VM은 Intel VT-x 명령어를 지원하므로, GKE 노드의 기본 VM 위에서 중첩된 VM을 실행할 수 있습니다. 그런 다음 QEMU와 같은 도구를 사용하는 포드를 배포하여 중첩된 VM을 만들 수 있습니다. 중첩된 VM을 사용하여 Android Emulator와 같은 특수한 워크로드 또는 VM을 격리 경계로 활용하는 워크로드(예: 오픈소스 Kata Containers를 사용하는 microVM)를 실행할 수 있습니다.
GKE 에이전트 샌드박스와 함께 오픈소스 Kata Containers를 사용하는 방법에 관한 튜토리얼은 GKE에서 Kata Containers 사용 설정을 참고하세요.
성능 영향 감소
비중첩 가상화 구성과 달리 하드웨어 보조 중첩 가상화를 사용할 경우 중첩된 VM에서 실행되는 워크로드에서 성능 감소가 발생할 수 있습니다. 성능 영향의 정도는 I/O 및 메모리 사용 특성을 포함하여 특정 워크로드 프로필에 따라 달라집니다.
또한 GKE 노드의 기본 VM에서 중첩된 VM을 만들면 이러한 노드에서 실행되는 다른 워크로드의 성능에 영향을 줄 수 있습니다.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치했으면
gcloud components update명령어를 실행하여 최신 버전을 가져옵니다. 이전 gcloud CLI 버전에서는 이 문서의 명령어를 실행하지 못할 수 있습니다.
- 조직 정책이 중첩된 VM 만들기를 지원하는지 확인합니다.
- 중첩된 VM 제한사항을 검토합니다.
요구사항 및 제한사항
GKE에서 중첩된 가상화를 사용 설정하고 포드가 중첩된 VM을 만들도록 허용하기 전에 다음 정보를 고려하세요.
- 제한된 수의 VM 머신 시리즈가 있는 중첩된 VM으로만 노드 풀을 구성할 수 있습니다. 지원되는 머신 시리즈는 머신 시리즈 비교의 중첩된 가상화 행을 참조하세요.
- 버전 1.28.4-gke.1083000 이상을 실행하는 노드에
UBUNTU_CONTAINERD이미지 유형 또는COS_CONTAINERD이미지 유형을 사용해야 합니다. - 중첩된 가상화는 Autopilot 클러스터가 아닌 표준 클러스터에만 사용할 수 있습니다.
- 중첩된 가상화가 사용 설정된 노드 풀에는 노드 자동 프로비저닝을 사용할 수 없습니다.
- 조직 정책에 VM 중첩된 가상화 사용 중지 제약조건이 적용되면 중첩된 가상화를 사용할 수 없습니다.
- 중첩된 VM과 상호작용하도록 포드에 대해
securityContext.privileged:true를 설정해야 합니다.
중첩된 가상화 사용 설정
기본 노드 풀에 대해 사용 설정하여 클러스터를 만들거나 노드 풀을 만들 때 중첩된 가상화를 사용 설정할 수 있습니다. 기존 노드 풀에 대해서는 기능을 사용 설정 또는 사용 중지할 수 없습니다.
다음 섹션의 안내에 따라 각 노드에 nested-virtualization=enabled 라벨이 지정된 노드 풀을 만듭니다. GKE에서 노드가 생성된 후 노드의 기본 VM에 중첩된 VM을 만든 포드를 예약할 수 있습니다.
새 Standard 클러스터에서 중첩된 가상화 사용 설정
기본 노드 풀에 대해 중첩된 가상화를 사용 설정하여 새 표준 클러스터를 만듭니다. GKE는 중첩된 가상화를 사용 설정한 상태로만 기본 노드 풀을 만듭니다. GKE는 클러스터에 대해 생성된 모든 새 노드 풀에 대해 이 기능을 자동으로 사용 설정하지 않습니다.
콘솔
- Google Cloud 콘솔에서 Kubernetes 클러스터 만들기 페이지로 이동합니다.
- 클러스터를 구성하세요.
- 탐색 메뉴의 노드 풀에서 default-pool을 선택합니다. 그런 다음 노드를 선택합니다.
- 머신 구성 섹션에서 지원되는 머신 유형 (중첩 가상화 행 참고)을 선택합니다.
- 예약 섹션에서 중첩된 가상화 사용 설정 체크박스를 선택합니다.
- 만들기를 클릭하여 클러스터를 만듭니다.
gcloud
gcloud container clusters create CLUSTER_NAME \
--enable-nested-virtualization \
--node-labels=nested-virtualization=enabled \
--machine-type=MACHINE_TYPE
다음을 바꿉니다.
CLUSTER_NAME: 클러스터의 이름MACHINE_TYPE: 지원되는 머신 유형(중첩된 가상화 행 참조)
필요한 경우 노드 풀의 노드에 중첩된 가상화가 사용 설정되어 있는지 확인합니다.
이제 노드의 기본 VM에서 중첩된 VM을 만든 포드를 예약할 수 있습니다.
새 노드 풀에서 중첩된 가상화 사용 설정
기존 표준 클러스터에 대해 중첩된 가상화를 사용 설정하여 새 노드 풀을 만듭니다.
콘솔
Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.
중첩된 가상화가 사용 설정된 새 노드 풀을 만들려는 클러스터의 이름을 클릭하여 클러스터의 세부정보 페이지를 엽니다.
노드 풀을 구성합니다.
노드 탭을 클릭합니다.
노드 풀 섹션의 헤더에서 add_box 사용자 관리형 노드 풀 만들기를 클릭합니다.
탐색 메뉴에서 노드를 선택합니다.
머신 구성 섹션에서 지원되는 머신 유형 (중첩 가상화 행 참고)을 선택합니다.
예약 섹션에서 중첩된 가상화 사용 설정 체크박스를 선택합니다.
노드 풀을 만들려면 만들기를 클릭합니다.
gcloud
gcloud container node-pools create NODEPOOL_NAME \
--enable-nested-virtualization \
--node-labels=nested-virtualization=enabled \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE
다음을 바꿉니다.
NODEPOOL_NAME: 중첩된 가상화가 사용 설정된 노드 풀의 이름CLUSTER_NAME: 클러스터의 이름MACHINE_TYPE: 지원되는 머신 유형(중첩된 가상화 행 참조)
필요한 경우 노드 풀의 노드에 중첩된 가상화가 사용 설정되어 있는지 확인합니다.
이제 노드의 기본 VM에서 중첩된 VM을 만든 포드를 예약할 수 있습니다.
중첩된 가상화를 지원하는 노드에 포드 예약
중첩된 가상화가 사용 설정된 노드에서 포드를 예약하려면 다음 노드 선택기를 사양에 추가합니다.
nodeSelector:
nested-virtualization: enabled
또한 포드를 중첩된 VM과 연결하려면 securityContext.privileged:true를 구성하여 포드를 권한이 있는 포드로 설정해야 합니다.