Anda dapat membuat instance virtual machine (VM) di dalam VM lain menggunakan virtualisasi bertingkat. Compute Engine menambahkan instruksi virtualisasi ke seri mesin tertentu sehingga instance VM tersebut dapat membuat VM bertingkat. Karena node Google Kubernetes Engine (GKE) 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 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 dengan menggunakan software seperti QEMU atau Kata Containers.
Di GKE, VM bertingkat berguna untuk kasus penggunaan berikut:
- Jalankan 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 GKE Agent Sandbox.
- Menambahkan lapisan isolasi yang dibantu hardware untuk workload multi-tenant.
- Jalankan 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. Besarnya dampak performa bergantung pada profil workload tertentu, termasuk karakteristik penggunaan I/O dan memori.
Selain itu, membuat VM bertingkat di VM pokok node GKE dapat memengaruhi performa beban kerja 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
- Untuk 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 menjalankan perintah 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 sejumlah seri mesin VM yang terbatas. Lihat baris Virtualisasi bertingkat pada 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 menyetel
securityContext.privileged:trueuntuk Pod agar dapat berinteraksi dengan VM bertingkat. Jika menggunakan GKE Autopilot, Anda tidak dapat membuat node Pod 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 sudah ada.
Virtualisasi bertingkat adalah setelan yang tidak dapat diubah di GKE.
Jika Anda menggunakan ComputeClass 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 ComputeClass: 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 penggantian di beberapa konfigurasi node yang diprioritaskan.
- Gunakan GKE API: dalam mode Standar, gunakan klien seperti konsol Google Cloud , gcloud CLI, atau Terraform untuk membuat node pool tertentu yang menggunakan virtualisasi bertingkat.
Diaktifkan dengan menggunakan ComputeClasses
Anda dapat menggunakan ComputeClass untuk mengaktifkan virtualisasi bertingkat untuk grup node tertentu dalam mode Autopilot atau Standard. ComputeClass adalah satu-satunya metode yang dapat Anda gunakan untuk mengaktifkan virtualisasi bertingkat untuk node pool yang dibuat otomatis dan node Autopilot. Untuk men-deploy contoh ComputeClass yang mengaktifkan virtualisasi bertingkat, ikuti langkah-langkah berikut:
Simpan manifes ComputeClass berikut sebagai file yang bernama
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:
- Membuat prioritas instance C3 di Spot VM, beralih kembali ke instance C4 on-demand, lalu beralih kembali ke instance C4D di Spot VM.
- Mengaktifkan virtualisasi bertingkat untuk semua instance.
- Mencegah GKE menskalakan seri mesin default cluster jika instance yang diprioritaskan tidak tersedia.
- Menggunakan image node Container-Optimized OS untuk semua node.
- Mengaktifkan pembuatan otomatis node pool, 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 mengetahui kompatibilitasnya 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 bernama
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 Standar yang ada.
Untuk mengaktifkan virtualisasi bertingkat di node pool yang dibuat secara manual, pilih salah satu opsi berikut:
Konsol
Aktifkan virtualisasi bertingkat untuk node pool default cluster baru:
- Di konsol Google Cloud , buka halaman Create a Kubernetes cluster.
- Konfigurasi setelan dasar untuk cluster Anda.
- Di menu navigasi, di bagian Node pools, luaskan bagian default-pool, lalu klik Nodes.
- Di bagian Konfigurasi mesin, pilih jenis mesin yang didukung (lihat baris Virtualisasi bertingkat).
- Setelah bagian Reservations, centang kotak Enable nested virtualization.
- Untuk membuat cluster, klik Buat.
Mengaktifkan virtualisasi bertingkat untuk node pool baru di cluster yang ada:
Di konsol Google Cloud , buka halaman Kubernetes clusters.
Klik nama cluster tempat Anda ingin membuat node pool baru.
Konfigurasikan node pool Anda.
Klik tab Nodes.
Di heading bagian Node pool, klik add_box Buat node pool yang dikelola pengguna.
Di menu navigasi, pilih Node.
Di bagian Konfigurasi mesin, pilih seri mesin yang mendukung virtualisasi bertingkat. Untuk mengetahui informasi selengkapnya, filter tabel perbandingan seri mesin untuk properti Virtualisasi bertingkat.
Centang kotak Aktifkan virtualisasi bertingkat. Jika kotak centang ini dinonaktifkan, pastikan Anda memilih rangkaian mesin yang mendukung virtualisasi bertingkat.
Klik Create.
gcloud
Aktifkan 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 Kubernetes nested-virtualization=enabled, 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
hak istimewa dengan mengonfigurasi securityContext.privileged:true.