Halaman ini menjelaskan cara mengelola virtual machine di deployment terhubung 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 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 yang terhubung ke Distributed Cloud mendukung webhook virtual machine. Hal ini memungkinkan Distributed Cloud terhubung untuk memvalidasi permintaan pengguna yang dibuat ke server API Kubernetes lokal. Permintaan yang ditolak menghasilkan informasi mendetail tentang alasan penolakan.
Mengonfigurasi Penyimpanan Symcloud
Google Distributed Cloud terhubung menggunakan Rakuten Symcloud Storage, sebagai solusi penyimpanannya. Symcloud Storage adalah solusi pihak ketiga yang berfungsi sebagai lapisan abstraksi penyimpanan lokal di setiap node Google Distributed Cloud terhubung dan membuat penyimpanan lokalnya tersedia untuk beban kerja yang berjalan di node Google Distributed Cloud terhubung lainnya.
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 yang terhubung ke Google Distributed Cloud Anda sebagai berikut untuk mengaktifkan Symcloud Storage untuk virtual machine. Untuk mengetahui informasi selengkapnya, lihat Menginstal Symcloud Storage di node yang terhubung ke Distributed Cloud.
Buat namespace
robin-admindengan perintah berikut:kubectl create ns robin-admin
Dapatkan file lisensi Symcloud Storage dan terapkan ke cluster dengan perintah berikut:
kubectl apply -f LICENSE_FILE
Ganti
LICENSE_FILEdengan jalur ke file lisensi.Pastikan Symcloud Storage sudah aktif dan berjalan dengan perintah berikut:
kubectl describe robincluster
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: DeleteUbah
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 yang terhubung ke Distributed Cloud. Untuk menginstal alat ini, selesaikan langkah-langkah berikut:
Instal alat klien
virtctlsebagai pluginkubectl:export VERSION=v1.3.1-anthos1.35-gke.39 gcloud storage cp gs://anthos-baremetal-release/virtctl/${VERSION}/linux-amd64/virtctl ./virtctl sudo mv ./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 VM
Selesaikan langkah-langkah di bagian ini untuk membuat bucket Cloud Storage bagi image mesin virtual Anda. Bucket menggunakan Workload Identity Federation untuk mengikat akun layanan Kubernetes ke akun layanan Google Cloud yang sesuai untuk mengakses bucket; dengan kata lain, akun layanan Kubernetes meniru akun layanan Google Cloud. Jika Anda sudah memiliki repositori image yang ditetapkan, lewati bagian ini.
Untuk mengurangi risiko kesamaan identitas di fleet multi-cluster, ikuti panduan di Praktik terbaik untuk Workload Identity Federation fleet saat menyelesaikan langkah-langkah di bagian ini.
Selesaikan langkah-langkah di Membuat bucket untuk membuat bucket.
Buat akun layanan Google Cloud untuk mengakses bucket:
export GSA_PROJECT_ID=GSA_PROJECT_ID export GSA_NAME=GSA_NAME gcloud iam service-accounts create ${GSA_NAME}
Ganti kode berikut:
GSA_NAME: nama yang bermakna untuk akun layanan Google Cloud ini.GSA_PROJECT_ID: ID project Google Cloud yang menghosting akun layananGoogle Cloud target.
Beri akun layanan Google Cloud izin untuk mengakses bucket:
export BUCKET_PROJECT_ID=BUCKET_PROJECT_ID export GSA_NAME=GSA_NAME gcloud storage buckets add-iam-policy-binding gs://${BUCKET_PROJECT_ID}-vm-images \ --member="serviceAccount:${GSA_NAME}@${GSA_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.objectViewer" \ --project=${BUCKET_PROJECT_ID}
Ganti kode berikut:
GSA_NAME: nama akun layanan Google Cloud target.BUCKET_PROJECT_ID: ID Google Cloud project yang menghosting bucket.GSA_PROJECT_ID: ID project Google Cloud yang menghosting akun layananGoogle Cloud target.
Buat akun layanan Kubernetes di namespace virtual machine target untuk diikat ke akun layanan Google Cloud Anda:
export GSA_PROJECT_ID=GSA_PROJECT_ID export VM_NAMESPACE=NAMESPACE export KSA_NAME=KSA_NAME export GSA_EMAIL=${GSA_NAME}@${GSA_PROJECT_ID}.iam.gserviceaccount.com kubectl create serviceaccount ${KSA_NAME} -n ${VM_NAMESPACE} kubectl annotate serviceaccount ${KSA_NAME} gsaEmail=${GSA_EMAIL} -n ${VM_NAMESPACE}
Ganti kode berikut:
GSA_PROJECT_ID: ID project Google Cloud yang menghosting akun layananGoogle Cloud target.NAMESPACE: namespace mesin virtual target.KSA_NAME: nama yang bermakna untuk akun layanan Kubernetes ini.GSA_NAME: nama akun layanan Google Cloud yang sesuai.
Temukan nama workload identity pool dan penyedia identitas cluster Anda:
gcloud container fleet memberships describe MEMBERSHIP_ID \ --project=FLEET_PROJECT_ID \ --format="table(authority.identityProvider,authority.workloadIdentityPool,name)"
Ganti kode berikut:
MEMBERSHIP_ID: nama keanggotaan fleet cluster. Biasanya, ini adalah nama cluster Anda.FLEET_PROJECT_ID: ID project host Google Cloud fleet.
Perintah ini akan menampilkan output yang mirip dengan berikut ini:
IDENTITY_PROVIDER: IDENTITY_PROVIDER WORKLOAD_IDENTITY_POOL: WORKLOAD_IDENTITY_POOLDalam output, catat nilai berikut:
IDENTITY_PROVIDER: penyedia identitas untuk cluster ini.WORKLOAD_IDENTITY_POOL: adalah nama workload identity pool yang terkait dengan fleet Anda. Nama memiliki formatFLEET_PROJECT_ID.svc.id.goog. Untuk mengetahui informasi selengkapnya tentang perintah dalam langkah ini, lihat Menggunakan Workload Identity Federation fleet di aplikasi.
Ikat akun layanan Kubernetes ke akun layanan Google Cloud untuk menyiapkan peniruan identitas:
export GSA_PROJECT_ID=GSA_PROJECT_ID export GSA_NAME=GSA_NAME export KSA_NAME=KSA_NAME export VM_NAMESPACE=NAMESPACE export WI_POOL=WORKLOAD_IDENTITY_POOL gcloud iam service-accounts add-iam-policy-binding ${GSA_NAME}@${GSA_PROJECT_ID}.iam.gserviceaccount.com \ --project=${GSA_PROJECT_ID} \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${WI_POOL}[${VM_NAMESPACE}/${KSA_NAME}]" --condition="IAM_CONDITION" --condition-from-file="IAM_CONDITION_FILE"
Ganti kode berikut:
GSA_PROJECT_ID: ID project Google Cloud yang menghosting akun layananGoogle Cloud target.GSA_NAME: nama akun layanan Google Cloud yang sesuai.KSA_NAME: nama akun layanan Kubernetes target.NAMESPACE: namespace mesin virtual target.WORKLOAD_IDENTITY_POOL: nama workload identity pool cluster Anda.IAM_CONDITION: opsional; menentukan kondisi IAM yang akan digunakan untuk membatasi akses ke cluster tertentu dalam armada. Jika dihilangkan atau disetel keNone, tidak ada kondisi IAM yang berlaku.IAM_CONDITION_FILE: opsional; menentukan file yang berisi kondisi IAM untuk membatasi akses ke cluster tertentu dalam fleet. Jika tidak disertakan, tidak ada kondisi IAM yang berlaku kecuali jika tanda--conditionditentukan dan disetel ke nilai selainNone.
Simpan gambar Anda di bucket.
Anda juga memiliki opsi untuk menggunakan metode lama menggunakan rahasia yang dihasilkan dari kunci aktif akun layanan Google Anda. Untuk mengetahui informasi selengkapnya, lihat Membuat bucket Cloud Storage untuk image virtual machine.
Membatasi akses ke bucket dengan kondisi IAM
Kondisi IAM memungkinkan Anda menentukan cluster mana dalam fleet yang dapat mengakses bucket. Jika tidak ada kondisi IAM yang ditentukan, semua cluster dalam fleet dengan akun layanan Kubernetes yang sama di namespace yang sama dapat mengakses bucket, sehingga menimbulkan risiko kesamaan identitas. Jika Anda tidak menentukan kondisi IAM, Anda juga dapat melakukan penggantian ke mekanisme akses lama yang menggunakan rahasia yang dihasilkan dari kunci aktif akun layanan Google. Berikut adalah contoh cara menyiapkan dan menerapkan kondisi IAM untuk membatasi akses ke bucket Anda:
Buat file kondisi IAM:
cat <<EOF > iam_condition.yaml > expression: request.auth.claims.google.providerId == '$IDENTITY_PROVIDER' title: allow_only_this_cluster > EOF
Terapkan file kondisi IAM saat mengikat GSA ke KSA. Jalankan perintah berikut di project GSA Google Cloud Anda:
gcloud iam service-accounts add-iam-policy-binding "${GSA_NAME}@${GSA_PROJECT_ID}.iam.gserviceaccount.com" \ --project="${GSA_PROJECT_ID}" \ --role=roles/iam.workloadIdentityUser \ --member="serviceAccount:${WI_POOL}[${VM_NAMESPACE}/${KSA_NAME}]" \ --condition-from-file=iam_condition.yaml
Membuat disk virtual machine dari image virtual machine
Selesaikan langkah-langkah di bagian ini untuk membuat disk virtual machine dari image virtual machine.
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://${BUCKET_PROJECT_ID}-vm-images/IMAGE_FILE_PATH serviceAccount: KSA_NAME size: DISK_SIZE storageClassName: robin-block-immediate
Ganti kode berikut:
DISK_NAME: nama disk virtual machine ini.NAMESPACE: namespace mesin virtual target.IMAGE_FILE_PATH: jalur lengkap dan nama file image mesin virtual. Klik kanan gambar di konsol Google Cloud , lalu pilih Salin URI gsutil untuk mendapatkan jalur ini.KSA_NAME: akun layanan Kubernetes untuk mendownload image mesin virtual yang Anda buat sebelumnya.DISK_SIZE: ukuran disk target. 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 yang disimpan di layanan pihak ketiga
Anda juga memiliki opsi untuk menggunakan http, https, S3, atau registry image untuk menyimpan image virtual machine. Jika layanan penyimpanan Anda memerlukan kredensial untuk akses, konversi kredensial tersebut menjadi secret dan tentukan secret tersebut menggunakan kolom secretRef.
Contoh:
source: http/s3/registry: url: secretRef: "SECRET_NAME" # optional
Ganti SECRET_NAME dengan nama secret Anda.
Untuk mengetahui informasi selengkapnya, lihat Sumber HTTP/S3/GCS/Registry.
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.
Alokasi resource untuk VM dibatasi oleh profil hardware deployment yang terhubung ke Distributed Cloud, seperti hardware G1 atau G2. Anda tidak dapat mengubah ukuran VM tunggal menjadi lebih besar daripada mesin fisik yang terhubung ke Distributed Cloud yang menjalankannya.
Membuat virtual machine menggunakan konsol Google Cloud
Untuk membuat virtual machine menggunakan konsol Google Cloud , lakukan hal berikut:
Di konsol Google Cloud , buka halaman Clusters.
Pilih project Google Cloud target.
(Opsional) Jika Anda belum melakukannya, login ke cluster target:
Di panel navigasi kiri, klik Cluster.
Di daftar Anthos Managed Clusters, klik target cluster.
Di panel informasi di sisi kanan, klik LOGIN.
Pada dialog pop-up yang muncul, pilih metode autentikasi pilihan Anda, masukkan kredensial Anda, lalu klik LOGIN.
Buka halaman Virtual Machines.
Klik BUAT.
Di bagian Dasar-Dasar, lakukan hal berikut:
Di kolom Name, masukkan nama yang bermakna untuk mesin virtual.
Di kolom Select cluster, pilih cluster target untuk virtual machine.
Di kolom Namespace, pilih namespace target.
Di kolom OS Type, pilih sistem operasi target.
(Opsional) Jika Anda ingin menambahkan satu atau beberapa label ke konfigurasi virtual machine ini, klik TAMBAHKAN LABEL.
Di bagian Machine Configuration, lakukan salah satu hal berikut:
Jika Anda ingin menentukan jumlah vCPU dan jumlah memori untuk virtual machine ini, pilih Konfigurasi Kustom dan masukkan nilai target, lalu klik BERIKUTNYA.
Jika Anda ingin menggunakan sejumlah vCPU dan jumlah memori yang telah ditentukan untuk virtual machine ini, pilih Konfigurasi Standar, lalu pilih konfigurasi mesin dari daftar drop-down Jenis Mesin, lalu klik BERIKUTNYA.
Di bagian Storage, lakukan salah satu hal berikut:
Jika Anda ingin membuat disk virtual baru untuk virtual machine ini, pilih Tambahkan disk baru dan masukkan nama yang bermakna di kolom Nama, ukuran dalam gigabyte di kolom GiB, dan URL di kolom Image.
Jika Anda ingin menggunakan disk virtual yang ada untuk virtual machine ini, pilih Pilih disk yang ada, lalu pilih disk image target dari menu drop-down Pilih disk.
Tentukan apakah Anda ingin disk bersifat hanya baca dan apakah disk akan otomatis dihapus saat virtual machine ini dihapus menggunakan kotak centang Hanya baca dan Hapus otomatis.
Tentukan driver disk virtual di menu drop-down Driver.
Untuk menambahkan disk lain ke virtual machine ini, klik TAMBAHKAN DISK di bagian Disk tambahan.
Klik NEXT.
Di bagian Network, lakukan hal berikut:
Di subbagian Default network interface, tentukan nama antarmuka jaringan utama untuk virtual machine ini di kolom Interface name.
Pilih jenis jaringan yang sesuai dari daftar drop-down Network type.
Tentukan apakah akan mengizinkan akses eksternal ke antarmuka jaringan ini menggunakan kotak centang Izinkan akses eksternal. Jika mengaktifkan opsi ini, Anda harus memasukkan daftar port yang dipisahkan koma untuk diekspos secara eksternal di kolom Port yang diekspos.
Jika Anda ingin menambahkan satu atau beberapa antarmuka jaringan sekunder ke virtual machine ini, klik TAMBAHKAN ANTARMUKA JARINGAN.
Klik NEXT.
Di bagian Advanced options, gunakan kotak centang Auto-restart on update untuk menentukan apakah akan memulai ulang mesin virtual ini setelah software yang terhubung ke Distributed Cloud di cluster target diupdate.
Di bagian Firmware, lakukan hal berikut:
Pilih jenis firmware target di kolom Jenis bootloader. Jika memilih firmware UEFI, Anda memiliki opsi untuk mengaktifkan booting aman menggunakan kotak centang Booting aman.
Tentukan nomor seri untuk virtual machine ini di kolom Serial.
Tentukan ID Unik Universal (UUID) untuk virtual machine ini di kolom UUID.
Di bagian Cloud-init, lakukan hal berikut:
Tentukan nilai rahasia data jaringan di kolom Rahasia data jaringan.
Tentukan nilai rahasia data pengguna di kolom Rahasia data pengguna.
Klik CREATE VM untuk membuat virtual machine.
Membuat virtual machine dari file YAML
Untuk membuat virtual machine dari file konfigurasi YAML, lakukan langkah-langkah berikut:
Di konsol Google Cloud , buka halaman Clusters.
Pilih project Google Cloud target.
(Opsional) Jika Anda belum melakukannya, login ke cluster target:
Di panel navigasi kiri, klik Cluster.
Di daftar Anthos Managed Clusters, klik target cluster.
Di panel informasi di sisi kanan, klik LOGIN.
Pada dialog pop-up yang muncul, pilih metode autentikasi pilihan Anda, masukkan kredensial Anda, lalu klik LOGIN.
Buka halaman Virtual Machines.
Klik BUAT DENGAN YAML.
Di kolom Select cluster, pilih cluster target untuk virtual machine.
Tempelkan konfigurasi virtual machine dalam format YAML ke kolom YAML.
Klik BUAT.
Membuat virtual machine dari image disk yang dapat di-boot
Untuk membuat mesin virtual dari image disk yang dapat di-boot, terapkan konfigurasi berikut ke cluster Anda:
kind: VirtualMachine metadata: name: my-virtual-machine namespace: NAMESPACE spec: osType: Linux/Windows guestEnvironment: {} // comment out this line to enable guest environment for access management priorityClassName: PRIORITY_CLASS compute: cpu: vcpus: 6 memory: capacity: 8Gi interfaces: - name: eth0 networkName: network-410 ipAddresses: - 10.223.237.10/25 disks: - virtualMachineDiskName: DISK_NAME boot: true - virtualMachineDiskName: DISK_NAME
Ganti kode berikut:
NAMESPACE: namespace target.PRIORITY_CLASS: class prioritas untuk virtual machine ini. Kelas prioritas adalah rentang nilai prioritas; gunakankubectl get priorityclassuntuk mendapatkan daftar kelas prioritas yang didukung. Sebaiknya tetapkan kelas prioritas yang sesuai dengan nilai prioritas antara5,001,000dan1,000,000,000. Nilai prioritas yang lebih tinggi mengurangi kemungkinan penghentian paksa virtual machine saat sistem kelebihan beban. Jika tidak ditentukan, mesin virtual akan mendapatkan nilai prioritas terendah default.DISK_NAME: nama disk virtual machine ini.vcpus: jumlah vCPU yang akan ditetapkan ke VM.capacity: jumlah memori yang akan ditetapkan ke VM. Contohnya,4Giatau8Gi.ipAddresses: opsional; menyediakan penetapan IP statis untuk mesin virtual. Jika jaringan L2 yang mendasarinya mendukung DHCP eksternal, Anda dapat menghilangkanipAddressesuntuk mengizinkan alokasi dinamis.
Menggunakan cloud-init API untuk melakukan inisialisasi VM
API cloud-init adalah cara standar untuk menginisialisasi VM cloud. Gunakan
cloud-init untuk menyiapkan file, pengguna, dan aspek lain dari VM Anda.
Untuk memastikan kompatibilitas, validasi rutin startup cloud-init Anda, khususnya data jaringan, terhadap konfigurasi jaringan yang terhubung ke Distributed Cloud Anda. Sebelum menggunakan konfigurasi dalam produksi, terapkan konfigurasi ke VM pengujian untuk memastikan konfigurasi berhasil diinisialisasi dan mengonfigurasi jaringan dengan benar.
Contoh berikut bersifat umum dan harus diuji di lingkungan Anda.
Mengotomatiskan konfigurasi VM dengan data pengguna cloud-init
VM Runtime di GDC mendukung data pengguna cloud-init untuk VM Linux.
Anda dapat menentukan data pengguna sebagai string teks biasa, string berenkode base64, atau dengan
mereferensikan Secret Kubernetes.
Untuk memastikan VM Anda diinisialisasi dengan benar, validasi semua konfigurasi data pengguna sebelum men-deploy-nya ke lingkungan produksi.
Contoh berikut menunjukkan manifes VirtualMachine yang menyertakan data pengguna cloud-init teks biasa untuk menjalankan perintah saat VM melakukan booting:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: compute: cpu: vcpus: 2 memory: capacity: 4Gi osType: Linux cloudInit: noCloud: userData: | #cloud-config runcmd: - echo "Hello World" > /tmp/hello.txt
Ganti VM_NAME dengan nama virtual machine.
Untuk membuat VM dengan data cloud-init, simpan manifes sebagai
vm-cloud-init.yaml, dan terapkan ke cluster Anda dengan menjalankan perintah
kubectl apply:
kubectl apply -f vm-cloud-init.yaml
Memecahkan masalah cloud-init
Jika Anda mengalami masalah dengan cloud-init, periksa log dalam VM. Anda biasanya dapat menemukan log di direktori berikut:
/var/log/cloud-init.log/var/log/cloud-init-output.log
Jika cloud-init gagal sebelum VM melakukan booting, kemungkinan karena Secret Kubernetes tidak ada atau lampiran volume salah bentuk, OS tamu tidak akan dimulai. Sebagai langkah pemecahan masalah awal, periksa status resource VM dengan perintah kubectl describe virtualmachine VM_NAME dan periksa peristiwa pemasangan volume pod dengan perintah kubectl describe pod -l kubevirt.io/vm=VM_NAME.
Membuat mesin virtual dari image disk optik ISO
Anda dapat membuat virtual machine (VM) Windows yang melakukan booting dari image ISO menggunakan VM Runtime di GDC. Kemampuan ini memungkinkan Anda memigrasikan aplikasi perusahaan berbasis Windows lama, software pihak ketiga khusus, atau sistem point-of-sale kustom langsung ke cluster yang terhubung Distributed Cloud.
Image yang digunakan untuk disk VM diimpor dari bucket image yang terhubung ke Distributed Cloud. Sebelum membuat manifes, Anda harus mendownload ISO penginstalan Windows dan ISO driver virtio KubeVirt, lalu menguploadnya ke bucket image Anda. Sebaiknya Anda menyimpan salinan ISO driver yang terverifikasi di repositori internal atau melakukan pra-penyimpanan di Cloud Storage untuk memastikan build mesin virtual yang andal dan dapat diulang.
Buat manifes
Untuk melakukan booting dari image ISO Windows, Anda memerlukan manifes berikut:
VirtualMachineDiskyang berisi ISO Windows.VirtualMachineDiskyang berisi driver KubeVirt Windowsvirtio.VirtualMachineDiskkosong untuk berfungsi sebagai boot disk tempat Windows akan diinstal.
Contoh berikut menunjukkan manifes VirtualMachineDisk untuk tiga disk yang diperlukan.
Dalam manifes, ganti kode berikut:
BUCKET_PROJECT_ID: Project ID tempat bucket image Anda berada.KSA_NAME: Akun Layanan Kubernetes dengan izin untuk membaca dari bucket.
PVC size yang diminta dalam manifes harus selalu lebih besar dari atau sama dengan ukuran virtual persis ISO.
Disk ISO Windows
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-iso spec: size: 10Gi storageClassName: robin-block-immediate diskType: cdrom source: gcs: url: gs://BUCKET_PROJECT_ID-vm-images/windows.iso serviceAccount: KSA_NAME
Disk driver VirtIO
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: virtio-driver spec: size: 1Gi storageClassName: robin-block-immediate diskType: cdrom source: gcs: url: gs://BUCKET_PROJECT_ID-vm-images/virtio-win.iso serviceAccount: KSA_NAME
Boot disk kosong
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: windows-vm-boot-dv spec: size: 40Gi storageClassName: robin-block-immediate
Buat disk
Untuk membuat disk ini, simpan manifes VirtualMachineDisk, lalu terapkan ke cluster Anda dengan menjalankan perintah
kubectl apply:
kubectl apply -f windows-iso.yaml
kubectl apply -f virtio-driver.yaml
kubectl apply -f windows-vm-boot-dv.yaml
Membuat VM Windows
Untuk membuat VM Windows, buat manifes yang menentukan VM dan mereferensikan disk. VM melakukan booting dari disk ISO untuk memulai penginstalan.
Contoh berikut menunjukkan manifes VirtualMachine:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: labels: kubevirt.io/vm: windows-vm name: windows-vm spec: osType: Windows disks: - virtualMachineDiskName: windows-vm-boot-dv boot: true - virtualMachineDiskName: windows-iso - virtualMachineDiskName: virtio-driver compute: cpu: vcpus: 2 memory: capacity: 4Gi interfaces: - name: eth0 networkName: network-410 default: true ipAddresses: - 10.223.237.10/25
Untuk membuat VM, simpan manifes sebagai windows-vm.yaml, dan terapkan ke cluster Anda dengan menjalankan perintah
kubectl apply:
kubectl apply -f windows-vm.yaml
Hubungkan dan selesaikan penginstalan
Untuk menghubungkan dan menyelesaikan penginstalan, ikuti langkah-langkah berikut:
Untuk terhubung ke VM menggunakan VNC, gunakan alat
virtctlatau pluginkubectl virt:virtctl vnc windows-vmAtau, jika Anda menginstal
virtctlsebagai pluginkubectl:kubectl virt vnc windows-vmUntuk mengetahui informasi selengkapnya tentang
virtctl, lihat dokumentasi KubeVirt.Ikuti petunjuk yang ditampilkan oleh penginstal Windows. Saat diminta, pilih Penginstalan kustom.
Jika diminta, muat driver
virtiountuk penyimpanan dan jaringan, lalu jelajahi diskvirtio-driveryang terpasang.Selesaikan penginstalan.
Akses melalui Remote Desktop Protocol
Setelah menginstal dan mengaktifkan Remote Desktop Protocol (RDP) di OS tamu, Anda dapat mengakses VM melalui RDP.
Karena virtual machine terhubung ke jaringan L2, virtual machine dapat dijangkau secara langsung dari luar cluster menggunakan alamat IP yang ditetapkan (misalnya, 10.223.237.10). Hubungkan ke alamat IP ini di port 3389 menggunakan klien RDP. Pastikan alamat IP internal L2
dapat dijangkau dari mesin klien Anda melalui aturan perutean dan firewall perusahaan Anda.
Membuat mesin virtual dengan dukungan GPU
Selesaikan langkah-langkah yang dijelaskan di halaman ini untuk membuat virtual machine yang dikonfigurasi agar memenuhi persyaratan bisnis Anda, lalu selesaikan langkah-langkah di Mengonfigurasi virtual machine untuk menggunakan resource GPU.
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
Jika Anda belum memiliki kredensial untuk mengakses virtual machine, selesaikan langkah-langkah di bagian ini untuk mendapatkannya menggunakan fitur lingkungan tamu Linux.
Aktifkan lingkungan tamu Linux untuk virtual machine target dengan menerapkan konfigurasi berikut ke cluster Anda:
kind: VirtualMachine metadata: name: my-virtual-machine namespace: my-vm-namespace spec: osType: Linux guestEnvironment: // enabled by default; disable with guestEnvironment: {} accessManagement: enable: 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 virtual machine 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.
Memulai atau menghentikan virtual machine menggunakan konsol Google Cloud
Di konsol Google Cloud , buka halaman Clusters.
Pilih project Google Cloud target.
(Opsional) Jika Anda belum melakukannya, login ke cluster target:
Di panel navigasi kiri, klik Cluster.
Di daftar Anthos Managed Clusters, klik target cluster.
Di panel informasi di sisi kanan, klik LOGIN.
Pada dialog yang muncul, pilih metode autentikasi pilihan Anda, masukkan kredensial Anda, lalu klik LOGIN.
Buka halaman Virtual Machines.
Dalam daftar mesin virtual, centang kotak untuk mesin virtual target.
Di bagian atas halaman, klik MULAI atau HENTIKAN sesuai kebutuhan.
Melihat status virtual machine menggunakan konsol Google Cloud
Di konsol Google Cloud , buka halaman Clusters.
Pilih project Google Cloud target.
(Opsional) Jika Anda belum melakukannya, login ke cluster target:
Di panel navigasi kiri, klik Cluster.
Di daftar Anthos Managed Clusters, klik target cluster.
Di panel informasi di sisi kanan, klik LOGIN.
Pada dialog pop-up yang muncul, pilih metode autentikasi pilihan Anda, masukkan kredensial Anda, lalu klik LOGIN.
Buka halaman Virtual Machines.
Klik virtual machine target.
Di halaman yang muncul, klik tab Details, Events, dan YAML untuk melihat informasi yang sesuai tentang mesin virtual ini.
Mengubah mesin virtual
Untuk mengubah virtual machine, Anda harus menghapusnya dan membuatnya ulang dengan konfigurasi yang diperbarui.
Menghapus virtual machine menggunakan konsol Google Cloud
Di konsol Google Cloud , buka halaman Clusters.
Pilih project Google Cloud target.
(Opsional) Jika Anda belum melakukannya, login ke cluster target:
Di panel navigasi kiri, klik Cluster.
Di daftar Anthos Managed Clusters, klik target cluster.
Di panel informasi di sisi kanan, klik LOGIN.
Pada dialog yang muncul, pilih metode autentikasi pilihan Anda, masukkan kredensial Anda, lalu klik LOGIN.
Buka halaman Virtual Machines.
Dalam daftar virtual machine, centang kotak untuk virtual machine target.
Di bagian atas halaman, klik HAPUS.
Pada dialog konfirmasi yang muncul, masukkan nama virtual machine, lalu klik DELETE.
Langkah berikutnya
- Men-deploy workload di Distributed Cloud terhubung
- Mengelola workload GPU
- Mengelola zona
- Mengelola komputer
- Mengelola cluster
- Mengelola node pool