Anda dapat membuat instance virtual machine (VM) di dalam VM lain menggunakan virtualisasi bertingkat. Compute Engine menambahkan petunjuk virtualisasi ke seri mesin tertentu sehingga instance VM tersebut dapat membuat VM bertingkat. Karena Google Kubernetes Engine (GKE) node berjalan di VM Compute Engine, workload GKE Anda dapat membuat dan menggunakan VM bertingkat. Dokumen ini menunjukkan cara mengaktifkan virtualisasi bertingkat di GKE.
Cara kerja VM bertingkat di GKE
Untuk menggunakan VM bertingkat di GKE, Anda harus mengaktifkan virtualisasi bertingkat untuk node atau node pool tertentu. Ekstensi virtualisasi CPU yang sesuai, seperti Intel Virtualization Technology (VT-x) atau AMD Virtualization (AMD-V) diaktifkan di VM yang mendasarinya. Kemudian, Anda dapat memicu pembuatan VM bertingkat dari Pod menggunakan software seperti QEMU atau Kata Containers.
Di GKE, VM bertingkat berguna untuk kasus penggunaan berikut:
- Menjalankan kode yang tidak tepercaya seperti agen AI di VM ringan, seperti Kata Containers. Untuk mengetahui informasi selengkapnya tentang kasus penggunaan ini, lihat Menggunakan Kata Containers open source dengan Agent Sandbox di GKE.
- Menambahkan lapisan isolasi yang dibantu hardware untuk workload multi-tenant.
- Menjalankan software khusus seperti emulator Android di cloud.
Implikasi performa yang berkurang
Dengan virtualisasi bertingkat yang dibantu hardware, workload yang berjalan di VM bertingkat mungkin mengalami penurunan performa jika dibandingkan dengan konfigurasi virtualisasi non-bertingkat. Jumlah dampak performa bergantung pada profil workload tertentu, termasuk karakteristik penggunaan I/O dan memori.
Selain itu, pembuatan VM bertingkat di VM yang mendasari node GKE dapat memengaruhi performa workload lain yang berjalan di node tersebut.
Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah
gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung perintah yang dijalankan dalam dokumen ini.
- Pastikan kebijakan organisasi Anda mendukung pembuatan VM bertingkat.
- Tinjau batasan VM bertingkat .
Persyaratan dan batasan
Pertimbangkan informasi berikut sebelum mengaktifkan virtualisasi bertingkat dengan GKE dan mengizinkan Pod Anda membuat VM bertingkat:
- Anda hanya dapat mengonfigurasi node pool dengan VM bertingkat dengan jumlah seri mesin VM yang terbatas. Lihat baris Virtualisasi bertingkat dari Perbandingan seri mesin untuk mengonfirmasi seri mesin yang didukung.
- Virtualisasi bertingkat tidak didukung di node pool Windows Server.
- Anda tidak dapat menggunakan virtualisasi bertingkat jika batasan Nonaktifkan virtualisasi bertingkat VM diterapkan untuk kebijakan organisasi Anda.
- Anda harus menetapkan
securityContext.privileged:trueagar Pod dapat berinteraksi dengan VM bertingkat. Jika Anda menggunakan GKE Autopilot, Anda tidak dapat membuat node Pod yang memiliki hak istimewa kecuali dalam skenario berikut:
- Pod dimiliki oleh GKE, partner GKE, atau project open source yang disetujui.
- Pod dimiliki oleh Anda dan disertakan dalam WorkloadAllowlist.
Anda tidak dapat mengaktifkan virtualisasi bertingkat di node pool yang ada.
Virtualisasi bertingkat adalah setelan yang tidak dapat diubah di GKE.
Jika Anda menggunakan ComputeClasses untuk mengaktifkan virtualisasi bertingkat, cluster Anda harus menjalankan GKE versi 1.37.0-gke.4713000 atau yang lebih baru.
Mengaktifkan virtualisasi bertingkat
Bagian berikut menunjukkan cara mengaktifkan virtualisasi bertingkat di GKE dengan cara berikut:
- Menggunakan ComputeClasses: dalam mode Autopilot atau mode standar, aktifkan virtualisasi bertingkat untuk konfigurasi node tertentu di ComputeClass. Dengan menggunakan metode ini, Anda dapat mengaktifkan virtualisasi bertingkat di node pool yang dibuat secara otomatis dan melakukan failover di beberapa konfigurasi node yang diprioritaskan.
- Menggunakan GKE API: dalam mode Standard, gunakan klien seperti Google Cloud konsol, gcloud CLI, atau Terraform untuk membuat node pool tertentu yang menggunakan virtualisasi bertingkat.
Mengaktifkan dengan menggunakan ComputeClasses
Anda dapat menggunakan ComputeClass untuk mengaktifkan virtualisasi bertingkat untuk grup node tertentu dalam mode Autopilot atau Standard. ComputeClasses adalah satu-satunya metode yang dapat Anda gunakan untuk mengaktifkan virtualisasi bertingkat untuk node pool yang dibuat secara otomatis dan node Autopilot. Untuk men-deploy contoh ComputeClass yang mengaktifkan virtualisasi bertingkat, ikuti langkah-langkah berikut:
Simpan manifes ComputeClass berikut sebagai file yang diberi nama
nested-virt-class.yaml:apiVersion: cloud.google.com/v1 kind: ComputeClass metadata: name: nested-virt-class spec: priorities: - machineFamily: c3 spot: true enableNestedVirtualization: true - machineFamily: c4 spot: false enableNestedVirtualization: true - machineFamily: c4d spot: true enableNestedVirtualization: true nodePoolConfig: imageType: "cos_containerd" nodePoolAutoCreation: enabled: true whenUnsatisfiable: DoNotScaleUpContoh ComputeClass ini memiliki properti berikut:
- Memprioritaskan instance C3 di Spot VM, melakukan failover ke instance C4 sesuai permintaan, lalu melakukan failover ke instance C4D di Spot VM.
- Mengaktifkan virtualisasi bertingkat untuk semua instance.
- Menghentikan GKE untuk melakukan penskalaan otomatis pada seri mesin default cluster jika instance yang diprioritaskan tidak tersedia.
- Menggunakan image node Container-Optimized OS untuk semua node.
- Mengaktifkan pembuatan node pool otomatis, sehingga GKE dapat membuat node pool baru untuk menjalankan Pod jika diperlukan.
Atau, Anda dapat mengaktifkan virtualisasi bertingkat untuk semua aturan prioritas di ComputeClass dengan menentukan kolom
enableNestedVirtualization: truedi kolomspec.priorityDefaults.Buat ComputeClass:
kubectl apply -f nested-virt-class.yamlSaat Anda mengaktifkan virtualisasi bertingkat di ComputeClass, GKE akan memeriksa seri mesin yang ditentukan untuk kompatibilitas dengan VM bertingkat. Jika seri mesin dalam aturan prioritas yang mengaktifkan virtualisasi bertingkat tidak kompatibel, GKE akan memperingatkan Anda. Namun, pemeriksaan ini mungkin tidak menemukan setiap konfigurasi yang tidak kompatibel.
Untuk memicu pembuatan node pool, buat Pod yang memilih ComputeClass:
Simpan manifes Pod berikut sebagai file yang diberi nama
nested-virt-example-pod.yaml:apiVersion: v1 kind: Pod metadata: name: nested-virt-example-pod spec: nodeSelector: cloud.google.com/compute-class: nested-virt-class containers: - name: example-container image: registry.k8s.io/pause:3.9Buat Pod:
kubectl apply -f nested-virt-example-pod.yaml
Node yang dibuat GKE untuk ComputeClass ini mengaktifkan virtualisasi bertingkat. Anda dapat menjalankan aplikasi yang membuat VM bertingkat di node ini. Setiap Pod yang menggunakan ComputeClass dapat membuat VM bertingkat. Misalnya,
Anda dapat menginstal Kata Containers di node ini dengan menentukan
pemilih node
untuk label cloud.google.com/compute-class="nested-virt-class".
Mengaktifkan di node pool Standard
Jika tidak ingin menggunakan ComputeClasses, Anda dapat mengaktifkan virtualisasi bertingkat secara manual untuk node pool baru tertentu di cluster Standard selama salah satu operasi berikut:
- Saat Anda membuat cluster Standard baru, yang mengaktifkan virtualisasi bertingkat untuk node pool default. Pengaktifan ini hanya berlaku untuk node pool default. GKE tidak otomatis mengaktifkan virtualisasi bertingkat untuk node pool tambahan yang Anda buat nanti.
- Saat Anda membuat node pool baru di cluster Standard yang ada.
Untuk mengaktifkan virtualisasi bertingkat di node pool yang dibuat secara manual, pilih salah satu opsi berikut:
Konsol
Mengaktifkan virtualisasi bertingkat untuk node pool default cluster baru:
- Di Google Cloud konsol, buka halaman Create a Kubernetes cluster.
- Konfigurasikan setelan dasar untuk cluster Anda.
- Di menu navigasi, di bagian Node pools , luaskan bagian default-pool , lalu klik Nodes.
- Di bagian Machine configuration, pilih jenis mesin yang didukung (lihat baris Virtualisasi bertingkat ).
- Setelah bagian Reservations, centang kotak Enable nested virtualization.
- Untuk membuat cluster, klik Create.
Mengaktifkan virtualisasi bertingkat untuk node pool baru di cluster yang ada:
Di Google Cloud konsol, buka halaman Kubernetes clusters.
Klik nama cluster tempat Anda ingin membuat node pool baru.
Konfigurasikan node pool Anda.
Klik tab Nodes.
Di judul bagian Node pools, klik add_box Create user-managed node pool.
Di menu navigasi, pilih Nodes.
Di bagian Machine configuration, pilih seri mesin yang mendukung virtualisasi bertingkat. Untuk mengetahui informasi selengkapnya, filter tabel perbandingan seri mesin untuk properti Virtualisasi bertingkat.
Centang kotak Enable nested virtualization. Jika kotak centang ini dinonaktifkan, pastikan Anda memilih seri mesin yang mendukung virtualisasi bertingkat.
Klik Create.
gcloud
Mengaktifkan virtualisasi bertingkat untuk node pool default cluster baru:
gcloud container clusters create CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION --enable-nested-virtualization \ --node-labels=nested-virtualization=enabled \ --machine-type=MACHINE_TYPEGanti kode berikut:
CLUSTER_NAME: nama untuk cluster.CONTROL_PLANE_LOCATION: region atau zona untuk bidang kontrol cluster.MACHINE_TYPE: jenis mesin yang mendukung virtualisasi bertingkat, sepertin4-standard-8. Untuk mengetahui informasi selengkapnya, filter tabel perbandingan seri mesin untuk properti Virtualisasi bertingkat.
Mengaktifkan virtualisasi bertingkat untuk node pool baru di cluster yang ada:
gcloud container node-pools create NODEPOOL_NAME \ --enable-nested-virtualization \ --node-labels=nested-virtualization=enabled \ --cluster=CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --machine-type=MACHINE_TYPEGanti kode berikut:
NODEPOOL_NAME: nama untuk node pool.CLUSTER_NAME: nama cluster yang ada.CONTROL_PLANE_LOCATION: lokasi bidang kontrol cluster.MACHINE_TYPE: jenis mesin yang mendukung virtualisasi bertingkat, sepertin4-standard-8. Untuk mengetahui informasi selengkapnya, filter tabel perbandingan seri mesin untuk properti Virtualisasi bertingkat.
Setelah membuat cluster atau node pool, Anda dapat
memeriksa apakah virtualisasi bertingkat diaktifkan.
Node di node pool ini memiliki label node nested-virtualization=enabled
Kubernetes, yang dapat Anda gunakan untuk menjadwalkan Pod yang
membuat VM bertingkat.
Menjadwalkan Pod ke node yang mendukung virtualisasi bertingkat
Untuk menjadwalkan Pod di node dengan virtualisasi bertingkat yang diaktifkan, tambahkan pemilih node berikut ke spesifikasi:
nodeSelector:
nested-virtualization: enabled
Selain itu, agar Pod dapat terhubung dengan VM bertingkat, Anda harus menetapkan Pod sebagai memiliki hak istimewa dengan mengonfigurasi securityContext.privileged:true.