Halaman ini menjelaskan cara mengelola virtual machine di server yang terhubung ke Google Distributed Cloud yang menjalankan VM Runtime di Google Distributed Cloud. Anda harus memahami VM Runtime di GDC sebelum menyelesaikan langkah-langkah di halaman ini. Untuk mengetahui daftar sistem operasi tamu yang didukung, lihat Sistem operasi tamu yang terverifikasi untuk VM Runtime di GDC.
Untuk mempelajari cara virtual machine berfungsi sebagai komponen penting platform Distributed Cloud terhubung, lihat Memperluas GKE Enterprise untuk mengelola VM edge lokal.
Cluster Distributed Cloud yang terhubung mendukung webhook mesin virtual. Hal ini memungkinkan Distributed Cloud terhubung untuk memvalidasi permintaan pengguna yang dibuat ke server Kubernetes API lokal. Permintaan yang ditolak menghasilkan informasi mendetail tentang alasan penolakan.
Mengonfigurasi Penyimpanan Symcloud
Server Google Distributed Cloud yang terhubung menggunakan Rakuten Symcloud Storage, sebagai solusi penyimpanan mereka. Symcloud Storage adalah solusi pihak ketiga yang berfungsi sebagai lapisan abstraksi penyimpanan lokal di setiap node yang terhubung ke Distributed Cloud dan membuat penyimpanan lokalnya tersedia untuk beban kerja yang berjalan di node lain yang terhubung ke Distributed Cloud.
Symcloud Storage di-deploy dari Google Cloud Marketplace dan tunduk pada persyaratan yang dinyatakan di dalamnya. Google memberikan dukungan terbatas untuk penggunaan Symcloud Storage dengan Distributed Cloud yang terhubung dan dapat menghubungi penyedia pihak ketiga untuk mendapatkan bantuan. Update software untuk Symcloud Storage disertakan dalam update software Distributed Cloud yang terhubung.
Konfigurasi cluster Google Distributed Cloud terhubung Anda sebagai berikut untuk mengaktifkan Symcloud Storage untuk virtual machine:
Buat namespace
robiniodengan perintah berikut:kubectl create ns robinio
Dapatkan file lisensi Symcloud Storage dan terapkan ke cluster dengan perintah berikut:
kubectl apply LICENSE_FILE
Pastikan Symcloud Storage sudah aktif dan berjalan dengan perintah berikut:
kubectl apply LICENSE_FILE
Perintah ini akan menampilkan output yang mirip dengan berikut ini:
Name: robin Namespace: Labels: app.kubernetes.io/instance=robin app.kubernetes.io/managed-by=robin.io app.kubernetes.io/name=robin Annotations: <none> API Version: manage.robin.io/v1 Kind: RobinCluster Metadata: … Spec: … Status: … Phase: Ready …Buat class penyimpanan
robin-block-immediatedengan menerapkan konfigurasi berikut ke cluster:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: robin-block-immediate parameters: faultdomain: host replication: "3" blocksize: "512" provisioner: robin reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: true
Buat class snapshot volume
robin-snapshotclassdengan menerapkan konfigurasi berikut ke cluster:apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: robin-snapshotclass labels: app.kubernetes.io/instance: robin app.kubernetes.io/managed-by: robin.io app.kubernetes.io/name: robin annotations: snapshot.storage.kubernetes.io/is-default-class: "true" driver: robin deletionPolicy: Delete
Mengupgrade mesin virtual yang ada ke Distributed Cloud terhubung versi 1.7.0
Anda harus menambahkan hal berikut ke bagian spec resource VMRuntime di cluster Anda, lalu menerapkan resource yang diubah ke cluster sebelum mengupgrade cluster ke software yang terhubung dengan Distributed Cloud versi 1.7.0:
spec: haPolicy: defaultRecoveryStrategy: Reschedule nodeHeartbeatInterval: 15s nodeMonitorGracePeriod: 55s
Mengaktifkan dukungan VM Runtime di GDC pada Distributed Cloud terhubung
Secara default, dukungan Runtime VM di virtual machine GDC dinonaktifkan di Distributed Cloud yang terhubung. Untuk mengaktifkannya, selesaikan langkah-langkah di bagian ini. Petunjuk di bagian ini mengasumsikan bahwa Anda memiliki cluster yang terhubung Distributed Cloud yang berfungsi sepenuhnya.
Untuk mengaktifkan VM Runtime di subsistem virtual machine GDC, selesaikan langkah-langkah berikut:
Ubah resource kustom
VMRuntimedengan konten berikut dan terapkan ke cluster Anda:apiVersion: vm.cluster.gke.io/v1 kind: VMRuntime metadata: annotations: baremetal.cluster.gke.io/vmrumtime-force-disable: "false" vm.cluster.gke.io/enable-vm-backup: "true" spec: enabled: true storage: defaultStorageClass: robin-block-immediate haPolicy: defaultRecoveryStrategy: Reschedule nodeHeartbeatInterval: 15s nodeMonitorGracePeriod: 55s
Proses ini biasanya membutuhkan waktu beberapa menit hingga selesai.
Gunakan perintah berikut untuk memverifikasi bahwa resource kustom
VMRuntimetelah diterapkan ke cluster Anda:kubectl get vmruntime
Perintah ini menampilkan output yang mirip dengan contoh berikut:
NAME AGE ENABLED READY PREFLIGHTCHECK vmruntime 5m true true trueUbah
storageprofileuntuk kelas penyimpananrobin-block-immediatedengan konten berikut dan terapkan ke cluster Anda:apiVersion: cdi.kubevirt.io/v1beta1 kind: StorageProfile metadata: name: robin-block-immediate spec: claimPropertySets: accessModes: ReadWriteMany volumeMode: Block
Instal alat pengelolaan virtctl
Anda memerlukan alat klien virtctl untuk mengelola virtual machine di cluster Distributed Cloud yang terhubung. Untuk menginstal alat, selesaikan langkah-langkah berikut:
Instal alat klien
virtctlsebagai pluginkubectl:export VERSION=v0.59.0-anthos1.28-gke.8 gcloud storage cp gs://anthos-baremetal-release/virtctl/${VERSION}/linux-amd64/virtctl/usr/local/bin/virtctl cd /usr/local/bin sudo ln -s virtctl kubectl-virt sudo chmod a+x virtctl cd -
Pastikan plugin
virttelah diinstal:kubectl plugin list
Jika plugin berhasil diinstal, output perintah akan mencantumkan
kubectl-virtsebagai salah satu plugin.
Membuat bucket Cloud Storage untuk image virtual machine
Selesaikan langkah-langkah di bagian ini untuk membuat bucket Cloud Storage bagi image mesin virtual Anda. Jika Anda sudah memiliki repositori image yang ditetapkan, lewati bagian ini.
Selesaikan langkah-langkah di Membuat bucket untuk membuat bucket.
Konfigurasi akun layanan dan kunci untuk mengakses bucket dengan perintah berikut:
export PROJECT_ID=$(gcloud config get-value project) gcloud iam service-accounts create image-access gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:image-access@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.objectViewer" \ gcloud iam service-accounts keys create ./image-access-gcr.json \ --iam-account="image-access@${PROJECT_ID}.iam.gserviceaccount.com"
Buat secret di cluster untuk mengakses bucket. Jika bucket Anda bersifat publik, lewati langkah ini. Secret ini harus ada di namespace yang sama dengan disk mesin virtual Anda. Anda harus membuat secret di setiap namespace yang terpengaruh.
kubectl create secret generic gcs-image-sa --from-file=creds-gcp.json=./image-access-gcr.json -n NAMESPACE
Ganti
CLUSTER_IDdengan nama namespace target.Simpan gambar Anda di bucket.
Membuat disk virtual machine dari image virtual machine
Selesaikan langkah-langkah di bagian ini untuk membuat disk mesin virtual dari image mesin virtual.
Membuat disk dari image yang disimpan di Cloud Storage
Buat disk virtual machine dari virtual machine yang disimpan di bucket Cloud Storage Anda dengan menerapkan konfigurasi berikut ke cluster Anda:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME namespace: NAMESPACE spec: source: gcs: url: gs://{PROJECT_ID}-vm-images/IMAGE_FILE secretRef: gcs-image-sa size: DISK_SIZE storageClassName: robin-block-immediate
Ganti kode berikut:
DISK_NAME: nama disk virtual machine ini.NAMESPACE: namespace target.IMAGE_FILE: nama file image mesin virtual.DISK_SIZE: ukuran disk yang diinginkan. Nilai ini harus lebih besar dari nilaivirtual-sizefile image virtual machine. Anda dapat menemukan nilai ini dengan perintahqemu-img info DISK_SIZE.
Jika Anda tidak menentukan nilai storageClassName, nilai default yang ditentukan dalam
resource VMRuntime akan digunakan.
Membuat disk dari image disk yang ada
Buat disk mesin virtual dari file image atau disk mesin virtual yang ada di cluster Anda sebagai berikut.
Buat disk target dengan menerapkan konfigurasi berikut ke cluster Anda:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: IMAGE_DISK_NAME namespace: NAMESPACE spec: source: virtualMachineDisk: name: EXISTING_DISK_NAME size: DISK_SIZE storageClassName: robin-block-immediate
Ganti kode berikut:
IMAGE_DISK_NAME: nama disk virtual machine ini.NAMESPACE: namespace target.EXISTING_DISK_NAME: nama disk mesin virtual yang ada.DISK_SIZE: ukuran disk yang diinginkan. Ukuran ini harus sama dengan atau lebih besar dari ukuran file disk atau image yang ada.
Anda dapat memperoleh ukuran file disk atau image yang ada menggunakan alat
qemu-imgsebagai berikut:qemu-img info EXISTING_DISK_NAME
Jika Anda tidak menentukan nilai
storageClassName, nilai default yang ditentukan dalam resourceVMRuntimeakan digunakan.Buat disk baru dari file image yang ada dengan menerapkan konfigurasi berikut ke cluster Anda:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME namespace: NAMESPACE spec: source: virtualMachineDisk: name: IMAGE_DISK_NAME size: DISK_SIZE storageClassName: robin-block-immediate
Ganti kode berikut:
IMAGE_DISK_NAME: nama disk mesin virtual yang Anda buat di langkah sebelumnya.NAMESPACE: namespace target.DISK_SIZE: ukuran disk yang diinginkan. Harus sama dengan ukuran disk virtual machine yang Anda buat di langkah sebelumnya.
Ubah ukuran disk target ke ukuran yang diinginkan menggunakan perintah berikut:
kubectl edit gdisk DISK_NAME -n NAMESPACE
Ganti kode berikut:
DISK_NAME: nama disk mesin virtual yang Anda buat di langkah sebelumnya.NAMESPACE: namespace target.
Ubah nilai
spec.sizedalam konfigurasi disk dan terapkan ke cluster Anda.
Membuat disk kosong
Buat disk virtual machine kosong dengan menerapkan konfigurasi berikut ke cluster Anda:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME namespace: NAMESPACE spec: size: DISK_SIZE storageClassName: robin-block-immediate
Ganti kode berikut:
DISK_NAME: nama disk virtual machine ini.NAMESPACE: namespace target.DISK_SIZE: ukuran disk yang diinginkan dalam gibibyte. Nilai ini harus lebih besar dari nilaivirtual-sizefile image virtual machine. Anda dapat menemukan nilai ini dengan perintahqemu-img info DISK_SIZE.
Jika Anda tidak menentukan nilai storageClassName, nilai default yang ditentukan dalam
resource VMRuntime akan digunakan.
Mengonfigurasi jaringan virtual
Ikuti langkah-langkah di Networking untuk mengonfigurasi jaringan virtual bagi mesin virtual Anda.
Membuat virtual machine
Selesaikan langkah-langkah di bagian ini untuk membuat virtual machine di deployment server yang terhubung ke Distributed Cloud. Petunjuk di bagian ini adalah contoh yang dimaksudkan untuk mengilustrasikan konfigurasi untuk berbagai skenario. Untuk mengetahui informasi mendetail tentang cara mengonfigurasi mesin virtual, lihat Membuat VM dengan resource CPU dan memori tertentu menggunakan VM Runtime di GDC.
Membuat virtual machine dari image disk yang dapat di-boot
Untuk membuat mesin virtual dari disk image yang dapat di-boot, terapkan konfigurasi berikut ke cluster Anda:
kind: VirtualMachine metadata: name: my-virtual-machine namespace: my-vm-namespace spec: osType: Linux/Windows guestEnvironment: {} // comment out this line to enable guest environment for access management autoRestartOnConfigurationChange: true compute: cpu: vcpus: 6 memory: capacity: 8Gi interfaces: - name: eth0 networkName: network-410 ipAddresses: - 10.223.237.10/25 disks: - virtualMachineDiskName: my-boot-disk boot: true - virtualMachineDiskName: my-data-disk
Ganti kode berikut:
DISK_NAME: nama disk virtual machine ini.NAMESPACE: namespace target.
Membuat mesin virtual dari image disk optik ISO
Untuk membuat mesin virtual dari image disk optik ISO, selesaikan langkah-langkah di bagian Membuat VM Windows dari image ISO di Google Distributed Cloud.
Membuat mesin virtual dengan dukungan GPU
Selesaikan langkah-langkahnya
Mengakses virtual machine
Selesaikan langkah-langkah di bagian ini untuk mengakses virtual machine yang berjalan di deployment server yang terhubung ke Distributed Cloud Anda.
Mendapatkan kredensial akses
Selesaikan langkah-langkah di bagian ini untuk mendapatkan kredensial yang diperlukan guna mengakses virtual machine menggunakan fitur lingkungan tamu Linux.
Aktifkan lingkungan tamu Linux untuk mesin virtual target dengan menerapkan konfigurasi berikut ke cluster Anda:
kind: VirtualMachine metadata: name: my-virtual-machine namespace: my-vm-namespace spec: osType: Linux guestEnvironment: {} autoRestartOnConfigurationChange: true
Buat file
id_rsa.pubyang berisi pasangan kunci SSH dengan perintah berikut:ssh-keygen -t rsaBuat resource
VirtualMachineAccessRequestdengan menerapkan konfigurasi berikut ke cluster Anda:apiVersion: vm.cluster.gke.io/v1alpha1 kind: VirtualMachineAccessRequest metadata: name: RESOURCE_NAME namespace: NAMESPACE spec: vm: VM_NAME user: USER_NAME ssh: key: RSA_KEY ttl: 2h
Ganti kode berikut:
RESOURCE_NAME: nama deskriptif untuk resource permintaan akses mesin virtual ini.NAMESPACE: namespace target.VM_NAME: nama virtual machine target.USER_NAME: nama pengguna yang diberi akses.RSA_KEY: konten fileid_rsa.pubyang Anda buat pada langkah sebelumnya.
Periksa status permintaan akses dengan perintah berikut:
kubectl get vmar
Saat perintah menampilkan status
Configured, lanjutkan ke langkah berikutnya.Akses virtual machine dengan SSH atau Desktop Jarak Jauh:
- Jika mesin virtual terhubung ke jaringan lokal, Anda dapat mengaksesnya secara langsung.
- Jika mesin virtual terhubung ke jaringan Pod, Anda harus membuat layanan load balancer untuk mengakses port yang diperlukan.
Memulai, memulai ulang, atau menghentikan virtual machine
Gunakan perintah berikut untuk memulai, memulai ulang, atau menghentikan virtual machine:
- Mulai virtual machine:
kubectl virt start vmVM_NAME-nNAMESPACE - Mulai ulang virtual machine:
kubectl virt restart vmVM_NAME-nNAMESPACE - Menghentikan virtual machine:
kubectl virt stop vmVM_NAME-nNAMESPACE
Ganti kode berikut:
VM_NAME: nama virtual machine target.NAMESPACE: namespace target.
Langkah berikutnya
- Mengelola virtual machine di rak yang terhubung ke Distributed Cloud
- Men-deploy workload di Distributed Cloud terhubung
- Mengelola workload GPU
- Mengelola zona
- Mengelola komputer
- Mengelola cluster
- Mengelola node pool