Halaman berikut menjelaskan cara membuat cluster Standar Google Kubernetes Engine (GKE) dengan node yang mendukung virtualisasi bertingkat. VM Compute Engine menggunakan petunjuk Intel VT-x sehingga VM bertingkat dapat berjalan di VM yang mendasari node GKE. Kemudian, Anda dapat men-deploy Pod yang menggunakan alat seperti QEMU untuk membuat VM bertingkat. Anda dapat menggunakan VM bertingkat untuk menjalankan workload khusus seperti emulator Android, atau workload yang diuntungkan dari VM sebagai batas isolasi, seperti microVM yang menggunakan Kata Containers open source.
Untuk mengetahui tutorial tentang cara menggunakan Kata Containers open source dengan GKE Agent Sandbox, lihat Mengaktifkan Kata Containers di GKE.
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 yang tidak bertingkat. Jumlah dampak performa akan 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. Mengaktifkan 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 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 pada Perbandingan seri mesin untuk mengonfirmasi seri mesin yang didukung.
- Anda harus menggunakan jenis image
UBUNTU_CONTAINERD, atau jenis imageCOS_CONTAINERDdengan node yang menjalankan versi 1.28.4-gke.1083000 atau yang lebih baru. - Anda hanya dapat menggunakan virtualisasi bertingkat dengan cluster Standar, bukan cluster Autopilot.
- Anda tidak dapat menggunakan penyediaan otomatis node dengan node pool yang mengaktifkan virtualisasi bertingkat.
- 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.
Mengaktifkan virtualisasi bertingkat
Anda dapat mengaktifkan virtualisasi bertingkat saat membuat cluster—dengan mengaktifkannya untuk node pool default—atau saat membuat node pool. Anda tidak dapat mengaktifkan atau menonaktifkan fitur untuk node pool yang ada.
Petunjuk di bagian berikut membuat node pool dengan node yang memiliki label nested-virtualization=enabled. Setelah GKE membuat node, Anda dapat menjadwalkan Pod yang membuat VM bertingkat di VM yang mendasari node.
Mengaktifkan virtualisasi bertingkat dengan cluster Standar baru
Buat cluster Standar baru dengan virtualisasi bertingkat diaktifkan untuk node pool default. GKE hanya membuat node pool default dengan virtualisasi bertingkat diaktifkan. GKE tidak otomatis mengaktifkan fitur untuk semua node pool baru yang dibuat untuk cluster:
Konsol
- Di Google Cloud konsol, buka halaman Create a Kubernetes cluster.
- Konfigurasikan cluster Anda.
- Di menu navigasi, pilih default-pool di bagian NODE POOLS. Kemudian, pilih 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.
gcloud
gcloud container clusters create CLUSTER_NAME \
--enable-nested-virtualization \
--node-labels=nested-virtualization=enabled \
--machine-type=MACHINE_TYPE
Ganti kode berikut:
CLUSTER_NAME: Nama cluster.MACHINE_TYPE: Jenis mesin yang didukung (lihat baris Virtualisasi bertingkat).
Secara opsional, periksa apakah virtualisasi bertingkat diaktifkan untuk node di node pool.
Sekarang Anda dapat menjadwalkan Pod yang membuat VM bertingkat di VM yang mendasari node.
Mengaktifkan virtualisasi bertingkat dengan node pool baru
Buat node pool baru dengan virtualisasi bertingkat diaktifkan untuk cluster Standar yang ada:
Konsol
Di Google Cloud konsol, buka halaman Kubernetes clusters.
Untuk membuka halaman detail cluster, klik nama cluster tempat Anda ingin membuat node pool baru dengan virtualisasi bertingkat diaktifkan.
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 jenis mesin yang didukung (lihat baris Virtualisasi bertingkat ).
Setelah bagian Reservations, centang kotak Enable nested virtualization.
Untuk membuat node pool, klik Create.
gcloud
gcloud container node-pools create NODEPOOL_NAME \
--enable-nested-virtualization \
--node-labels=nested-virtualization=enabled \
--cluster=CLUSTER_NAME \
--machine-type=MACHINE_TYPE
Ganti kode berikut:
NODEPOOL_NAME: Nama node pool tempat virtualisasi bertingkat diaktifkan.CLUSTER_NAME: Nama cluster.MACHINE_TYPE: Jenis mesin yang didukung (lihat baris Virtualisasi bertingkat).
Secara opsional, periksa apakah virtualisasi bertingkat diaktifkan untuk node di node pool.
Sekarang Anda dapat menjadwalkan Pod yang membuat VM bertingkat di VM yang mendasari node.
Menjadwalkan Pod ke node yang mendukung virtualisasi bertingkat
Untuk menjadwalkan Pod di node dengan virtualisasi bertingkat 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 istimewa dengan mengonfigurasi securityContext.privileged:true.