Dengan Runtime VM di GDC, Anda dapat menjalankan dan mengelola virtual machine (VM) Linux langsung di bare metal. Dalam tutorial ini, Anda akan menyiapkan dependensi penting, termasuk StorageClass dan jaringan virtual, lalu membuat VM yang menggunakan resource ini. Anda juga akan mengubah konfigurasi VM untuk memasang disk tambahan.
Tujuan
- Mengonfigurasi dependensi dasar
- Membuat
StorageClassuntuk VM Runtime di GDC - Membuat jaringan virtual untuk digunakan VM Anda
- Membuat
- Membuat boot disk virtual machine
- Membuat VM
- Mengedit VM untuk menambahkan disk virtual baru
Sebelum memulai
Untuk menyelesaikan tutorial ini, Anda memerlukan akses ke resource dan alat berikut:
- Akses ke cluster Google Distributed Cloud versi 1.12.0 (
anthosBareMetalVersion: 1.12.0) atau yang lebih tinggi. Anda dapat menggunakan jenis cluster apa pun yang mampu menjalankan workload. Jika perlu, coba Google Distributed Cloud di Compute Engine atau lihat ringkasan pembuatan cluster. - Alat klien
virtctldiinstal sebagai plugin untukkubectl. Jika diperlukan, instal alat klien virtctl.
Membuat StorageClass
Anda menggunakan StorageClass untuk menentukan jenis penyimpanan yang Anda sediakan untuk VM. Kelas penyimpanan yang berbeda mungkin dipetakan ke jenis hardware penyimpanan, sistem file, atau performa yang berbeda.
Tutorial ini tidak mencakup petunjuk khusus untuk setiap partner StorageClass dan penyimpanan.
Partner penyimpanan Google Distributed Cloud Ready menyediakan driver Container Storage Interface (CSI) yang memenuhi syarat untuk menginstal dan mengonfigurasi resource kustom yang diperlukan untuk penyimpanan Anda. Untuk menginstal driver CSI di cluster Anda, tinjau daftar partner penyimpanan yang didukung dan ikuti petunjuknya.
Setelah Anda menginstal driver CSI untuk platform penyimpanan, satu atau beberapa kelas penyimpanan akan tersedia di cluster Anda. Anda akan menggunakan salah satu kelas penyimpanan ini untuk membuat hard disk virtual dalam tutorial ini.
Contoh dasar NFS StorageClass berikut menggunakan Driver CSI NFS.
Anda menentukan alamat dan jalur server NFS yang akan digunakan di StorageClass. Semua node di cluster Anda kemudian dapat terhubung ke dan menggunakan penyimpanan NFS ini:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: example-nfs
provisioner: nfs.csi.k8s.io
parameters:
server: nfs-server.example.com
path: /vm-share
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
- nconnect=8
- nfsvers=4.1
Dalam tutorial ini, gunakan nama StorageClass di cluster Anda sendiri.
Runtime VM di GDC otomatis membuat satu profil penyimpanan untuk setiap StorageClass dalam cluster. Profil penyimpanan memiliki nama yang sama dengan StorageClass terkait. Profil penyimpanan menyediakan opsi konfigurasi tambahan yang terkait dengan setiap StorageClass. Untuk mengetahui informasi selengkapnya tentang profil penyimpanan, termasuk petunjuk konfigurasi, lihat Mengonfigurasi profil penyimpanan.
Membuat jaringan virtual
VM terhubung ke jaringan virtual menggunakan antarmuka jaringan virtual. Jaringan virtual memungkinkan VM berkomunikasi dengan VM lain dalam cluster, atau dengan resource di luar cluster.
Dalam tutorial ini, Anda akan membuat jaringan virtual Lapisan 2 (L2) dasar yang dapat menggunakan
server DHCP eksternal. Saat mengaktifkan penggunaan server DHCP eksternal, Anda
dapat melewati konfigurasi setelan DNS dan gateway jika disediakan oleh
DHCP.
Untuk membuat jaringan yang menggunakan server DHCP eksternal, selesaikan langkah-langkah berikut:
Buat manifes
Network, sepertidhcp-network.yaml, di editor pilihan Anda:nano dhcp-network.yamlSalin dan tempel manifes YAML berikut:
apiVersion: networking.gke.io/v1 kind: Network metadata: name: NETWORK_NAME spec: type: L2 nodeInterfaceMatcher: interfaceName: INTERFACE_NAME externalDHCP4: trueGanti nilai berikut:
NETWORK_NAME: nama untuk jaringan Anda.INTERFACE_NAME: nama antarmuka di node Google Distributed Cloud Anda untuk menghubungkan jaringan. Semua node harus memiliki nama antarmuka yang sama.
Dalam manifes
Networkini, nilai berikut ditetapkan:- Workload hanya dapat memiliki lampiran
L2ke jaringan ini. Ini adalah satu-satunyatypejaringan yang dapat Anda buat di Runtime VM di GDC. - Jaringan mengaktifkan DHCP eksternal. Server DHCP eksternal bertanggung jawab atas alokasi alamat IPv4, rute, gateway, dan konfigurasi DNS untuk workload yang terhubung ke jaringan ini.
Simpan dan tutup manifes
Networkdi editor Anda.Buat jaringan menggunakan
kubectl:kubectl apply -f use-dhcp-network.yaml
Membuat boot disk VM
VM dapat menggunakan disk image yang telah dibuat sebelumnya, atau melakukan booting dari image ISO untuk menginstal OS secara manual. Disk image ini dapat disimpan dan diakses menggunakan HTTP, atau di Cloud Storage dan diakses menggunakan Secret.
Dalam tutorial ini, Anda akan membuat boot disk dari image cloud Ubuntu Server 20.04 publik menggunakan HTTP.
Untuk membuat disk dari image, selesaikan langkah-langkah berikut.
Buat manifes
VirtualMachineDisk, sepertimy-disk.yaml, di editor pilihan Anda:nano my-disk.yamlSalin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 20Gi storageClassName: STORAGE_CLASS_NAME source: http: url: https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.imgGanti nilai berikut:
DISK_NAME: nama yang Anda inginkan untuk disk Anda. Contoh ini membuat disk20Gi(20 gibibyte) bernamaDISK_NAMEmenggunakan image Ubuntu Server 20.04 publik.STORAGE_CLASS_NAME:StorageClassyang ingin Anda gunakan untukVirtualMachineDisk.- Gunakan
kubectl get storageclassuntuk mencantumkan apa yang tersedia di cluster Anda.
- Gunakan
Simpan dan tutup manifes
VirtualMachineDiskdi editor Anda.Buat disk menggunakan
kubectl:kubectl apply -f my-disk.yaml
Membuat VM
Dengan jaringan virtual dan boot disk yang dibuat di bagian sebelumnya, sekarang
buat VM. VM terhubung ke jaringan virtual, dan melakukan booting dari disk virtual. Petunjuk berikut membuat VM dengan menerapkan langsung file manifes YAML VirtualMachine dengan kubectl CLI.
Buat manifes yang menentukan
VirtualMachine, sepertimy-vm.yaml, di editor pilihan Anda:nano my-vm.yamlSalin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: osType: linux compute: cpu: vcpus: VCPU_NUMBER memory: capacity: MEMORY_SIZE interfaces: - name: eth0 networkName: NETWORK_NAME default: true disks: - boot: true virtualMachineDiskName: DISK_NAMEGanti nilai berikut:
VM_NAME: nama untuk VM Anda.VCPU_NUMBER: Jumlah opsional vCPU yang akan ditetapkan ke VM. Tanpa setelan ini, 2 vCPU akan ditetapkan secara default.- Anda dapat menetapkan antara 1 dan 96 vCPU ke VM.
MEMORY_SIZE: Jumlah memori opsional yang akan ditetapkan ke VM. Tanpa setelan ini, memori default sebesar 4 GiB akan ditetapkan.- Anda dapat menetapkan memori antara 1M dan 1T ke VM. Untuk mengetahui informasi selengkapnya, lihat Unit resource memori.
NETWORK_NAME: nama jaringan Anda yang dibuat di bagian sebelumnya.DISK_NAME: nama boot disk yang Anda buat di bagian sebelumnya. Disk ini disetel keboot: true.
Simpan dan tutup manifes di editor Anda.
Buat VM dan disk menggunakan
kubectl:kubectl apply -f my-vm.yamlDiperlukan waktu beberapa menit untuk membuat VM. Periksa status VM dengan perintah kubectl:
kubectl get gvm VM_NAMEContoh output berikut menunjukkan VM dalam status
Running:NAME STATUS AGE IP MY_VM Running 64s 192.168.2.124
Terhubung ke VM
Saat VM Anda berjalan, hubungkan ke konsol VM. Koneksi konsol ini memungkinkan Anda melakukan tugas dasar seperti mengonfigurasi VM lebih lanjut atau menginstal aplikasi.
Untuk mengakses VM dari konsol, gunakan
kubectl:kubectl virt console VM_NAMESaat diminta, masukkan kredensial pengguna yang Anda tentukan untuk membuat VM.
Setelah Anda berhasil terhubung ke konsol VM, keluar dari sesi VM dan konsol:
Ctrl + ]
Mengedit VM
Selama siklus proses VM, Anda mungkin ingin mengedit VM. Misalnya, Anda mungkin ingin menambahkan penyimpanan untuk menginstal aplikasi pada disk khusus, atau menggunakan penyimpanan tambahan untuk aplikasi Anda.
Dalam tutorial ini, buat disk kosong dan pasang ke VM. Skenario ini memungkinkan Anda membuat disk data untuk menyimpan data aplikasi.
Buat manifes
VirtualMachineDisk, sepertimy-data-disk.yaml, di editor pilihan Anda:nano my-data-disk.yamlSalin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DATA_DISK_NAME spec: size: 10Gi storageClassName: STORAGE_CLASS_NAMEGanti nilai berikut:
DATA_DISK_NAME: nama yang Anda inginkan untuk disk data Anda. Contoh ini membuat disk10Gi(10 gibibyte).STORAGE_CLASS_NAME:StorageClassyang ingin Anda gunakan untukVirtualMachineDisk.- Gunakan
kubectl get storageclassuntuk mencantumkan apa yang tersedia di cluster Anda.
- Gunakan
Simpan dan tutup manifes disk di editor Anda.
Buat disk menggunakan
kubectl:kubectl apply -f my-data-disk.yamlGunakan
kubectluntuk menghentikan VM sebelum memasang disk virtual baru:kubectl virt stop VM_NAMEEdit resource VM Anda:
kubectl edit gvm VM_NAMEPerbarui manifes YAML
VirtualMachineuntuk memasang disk di akhir bagianspec.disksVM:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: ... disks: - boot: true virtualMachineDiskName: DISK_NAME - virtualMachineDiskName: DATA_DISK_NAMEGanti
DATA_DISK_NAMEdengan nama disk yang Anda buat di langkah sebelumnya.Simpan dan tutup manifes VM yang telah diperbarui di editor Anda.
Gunakan
kubectluntuk memulai VM:kubectl virt start VM_NAME
Pembersihan
Untuk menghapus resource yang dibuat dalam tutorial ini, selesaikan langkah-langkah berikut:
Menghapus VM Anda:
kubectl delete -f my-vm.yamlHapus resource
VirtualMachineDiskAnda:kubectl delete -f my-data-disk.yaml kubectl delete -f my-disk.yaml
Jika Anda tidak ingin menyimpan dependensi dasar di cluster, selesaikan langkah-langkah berikut:
Hapus jaringan virtual Anda:
kubectl delete -f use-dhcp-network.yamlUntuk menghapus driver CSI dari cluster, ikuti petunjuk dari partner penyimpanan Anda.