Halaman ini menjelaskan cara mengelola virtual machine di deployment Google Distributed Cloud terhubung 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
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 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 LICENSE_FILE
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 Distributed Cloud yang terhubung. Untuk menginstal alat, selesaikan langkah-langkah berikut:
Instal alat klien
virtctlsebagai pluginkubectl:export VERSION=GDC_SO_VERSION 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 -
Ganti
GDC_SO_VERSIONdengan versi target Distributed Cloud software-only.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 Google Cloud akun layanan 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 berupa 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 fleet. 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 dibuat dari kunci aktif akun layanan Google Anda. Untuk mengetahui informasi selengkapnya, lihat Membuat bucket Cloud Storage untuk image mesin virtual.
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 tidak menentukan kondisi IAM, Anda juga dapat kembali 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 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://${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 dan nama lengkap 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 virtual machine 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 Anda. 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.
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 mesin virtual.
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 mesin virtual ini, pilih Konfigurasi Standar dan 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 mesin virtual ini, pilih Tambahkan disk baru, lalu 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 mesin virtual ini, pilih Pilih disk yang ada, lalu pilih image disk target dari menu drop-down Pilih disk.
Tentukan apakah Anda ingin disk bersifat hanya baca dan apakah disk akan otomatis dihapus saat mesin virtual ini dihapus menggunakan kotak centang Hanya baca dan Hapus otomatis.
Tentukan driver disk virtual di menu drop-down Driver.
Untuk menambahkan disk lain ke mesin virtual 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 mesin virtual 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 Exposed ports.
Jika Anda ingin menambahkan satu atau beberapa antarmuka jaringan sekunder ke mesin virtual ini, klik TAMBAHKAN ANTARMUKA JARINGAN.
Klik NEXT.
Di bagian Advanced options, gunakan kotak 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 Bootloader type. 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 mesin virtual.
Tempelkan konfigurasi mesin virtual dalam format YAML ke kolom YAML.
Klik BUAT.
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 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-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 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: // 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 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.
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 telah diupdate.
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 mesin virtual, lalu klik DELETE.
Mencadangkan mesin virtual
Bagian ini menjelaskan cara mengonfigurasi lingkungan untuk mencadangkan workload virtual machine dan cara mengelola cadangan Anda. Untuk mengaktifkan fitur ini, hubungi perwakilan Google Anda.
Prasyarat
Jika belum melakukannya, buat resource kustom
robin-block-immediateberjenisStorageClassdengan konten berikut dan terapkan ke cluster Anda:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: robin-block-immediate annotations: storageclass.kubernetes.io/is-default-class: "true" parameters: faultdomain: host replication: "3" blocksize: "512" provisioner: robin reclaimPolicy: Delete volumeBindingMode: Immediate
Jika Anda belum melakukannya, buat resource kustom
robin-snapshotclassberjenisVolumeSnapshotClassdengan konten berikut dan terapkan ke cluster Anda: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
Membuat repositori pencadangan online
Repositori pencadangan online adalah lokasi penyimpanan online yang kompatibel dengan S3 untuk cadangan virtual machine Anda. Layanan ini juga menyimpan catatan pencadangan, rencana pencadangan, rencana pemulihan, dan berfungsi sebagai tujuan untuk memulihkan cadangan virtual machine.
Selesaikan langkah-langkah berikut untuk membuat repositori pencadangan online bagi mesin virtual Anda:
Buat bucket Cloud Storage seperti yang dijelaskan dalam Membuat bucket.
Buat akun layanan dan kunci untuk mengakses bucket menggunakan perintah berikut:
export PROJECT_ID=$(gcloud config get-value project) export SVC_ACCOUNT=backup-access gcloud iam service-accounts create $SVC_ACCOUNT gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:${SVC_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/backupdr.cloudStorageOperator" gcloud storage hmac create ${SVC_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com > hmac_temp_key_file awk 'NR==1{print "ACCESS_ID=" $NF} NR==2{print "SECRET=" $NF}' < hmac_temp_key_file > hmac_key_file
Konfigurasi secret untuk mengakses bucket cadangan menggunakan perintah berikut:
source ./hmac_key_file kubectl create secret generic SECRET_NAME \ --from-literal=access-key=$SECRET \ --from-literal=access-key-id=$ACCESS_ID -n NAMESPACE
Ganti kode berikut:
SECRET_NAME: nama deskriptif untuk secret ini.NAMESPACE: namespace target.
Buat resource
BackupRepositorydengan menerapkan konfigurasi berikut ke cluster Anda:apiVersion: backup.gdc.goog/v1 kind: BackupRepository metadata: name: "REPOSITORY_NAME" spec: secretReference: namespace: NAMESPACE name: gcs-hmac-secret endpoint: "https://storage.googleapis.com" type: "S3" s3Options: bucket: "BUCKET_NAME" region: "REGION" forcePathStyle: true importPolicy: "ReadWrite" # Force attachment for convenience. force: true
Ganti kode berikut:
REPOSITORY_NAME: nama deskriptif untuk repositori.BUCKET_NAME: nama bucket cadangan.NAMESPACE: namespace target.REGION: Google Cloud region tempat cluster Distributed Cloud target dibuat.
Verifikasi bahwa cluster dapat mengakses repositori cadangan menggunakan perintah berikut:
kubectl get BackupRepository
Membuat repositori cadangan lokal
Repositori cadangan lokal adalah lokasi penyimpanan yang kompatibel dengan S3 untuk cadangan virtual machine Anda yang berada secara lokal di cluster yang terhubung ke Distributed Cloud Anda. Repositori cadangan lokal secara fungsional identik dengan repositori cadangan online.
Buat kunci enkripsi AES256 untuk digunakan dalam enkripsi konfigurasi tingkat aplikasi:
openssl rand -base64 32
Perintah ini menghasilkan kunci acak 256-bit yang dienkode
base64. Contoh:aBcD_eFgH1iJkLmN0pQrStUvWxFyZgAhIjKlMnOpQ=Encode ganda kunci untuk digunakan sebagai payload dalam konfigurasi YAML untuk resource
BackupRepository:echo -n "AES_KEY" | base64
Ganti
AES_KEYdengan kunci AES256 yang dienkodebase64yang Anda buat di langkah sebelumnya. Simpan kunci ini dalam file lokal.Konfigurasi secret untuk mengakses repositori cadangan menggunakan perintah berikut:
kubectl create secret generic SECRET_NAME \ --from-literal=access-key=ENCODED_AES_KEY \ --namespace NAMESPACE
Ganti kode berikut:
ENCODED_AES_KEY: kunci AES256 berenkode ganda yang Anda buat pada langkah sebelumnya.SECRET_NAME: nama deskriptif untuk secret ini.NAMESPACE: namespace target.
Konfigurasi
BackupRepositorydengan menerapkan konfigurasi berikut ke cluster Anda:apiVersion: backup.gdc.goog/v1 kind: BackupRepository metadata: name: REPOSITORY_NAME spec: force: true importPolicy: ReadWrite localOptions: encryptionKey: name: SECRET_NAME namespace: NAMESPACE type: Local
Verifikasi bahwa cluster dapat mengakses repositori cadangan menggunakan perintah berikut:
kubectl get BackupRepository
Ganti kode berikut:
REPOSITORY_NAME: nama deskriptif untuk repositori.SECRET_NAME: nama secret Kubernetes yang Anda buat di langkah sebelumnya.NAMESPACE: namespace tempat Anda membuat secret Kubernetes.
Buat rencana cadangan
Rencana cadangan menentukan penjadwalan otomatis untuk menjalankan pencadangan mesin virtual Anda. Buat resource
VirtualMachineBackupPlan dengan konten berikut dan terapkan ke cluster Anda:
apiVersion: vm.cluster.gke.io/v1
kind: VirtualMachineBackupPlan
metadata:
name: BACKUP_PLAN_NAME
namespace: NAMESPACE
spec:
backupConfig:
backupRepository: REPOSITORY_NAME
backupScope:
selectedVirtualMachines:
- resourceName: VM_NAME
volumeStrategy: LocalSnapshotOnly
backupSchedule:
cronSchedule: "CRON_SCHEDULE"
paused: PAUSED
retentionPolicy:
backupDeleteLockDays: PLAN_LOCK_LENGTH
backupRetainDays: 4
locked: RETENTION_POLICY_LOCKED
numBackupsToRetain: BACKUPS_RETAINED
Ganti kode berikut:
BACKUP_PLAN_NAME: nama deskriptif untuk rencana cadangan.NAMESPACE: nama namespace target.REPOSITORY_NAME: repositori cadangan target.CRON_SCHEDULE: Jadwal standarcronuntuk menjalankan pencadangan. Interval minimum yang diizinkan antar-pencadangan adalah 10 menit.PAUSED: menentukan apakah rencana cadangan ini dijeda. Nilai yang valid adalahtruedanfalse.VM_NAME: menentukan beban kerja virtual machine yang akan dicadangkan melalui rencana pencadangan ini. Anda dapat menentukan beberapa resource virtual machine per rencana pencadangan.- *
BACKUP_LOCK_LENGTH: menentukan jumlah hari setelah pembuatan cadangan selama cadangan tidak dapat dihapus. - *
BACKUP_RETENTION_LENGTH: menentukan jumlah hari untuk menyimpan cadangan ini. Saat periode retensi berakhir, cadangan akan dihapus. Jika dihilangkan, setelan defaultnya adalah4. - *
RETENTION_POLICY_LOCKED: menentukan apakah kebijakan retensi rencana cadangan ini dikunci. Nilai yang valid adalahtruedanfalse. - *
BACKUPS_RETAINED/var>: menentukan jumlah cadangan yang akan dipertahankan dalam rencana cadangan ini. Jika batas ini tercapai, cadangan akan dihapus dalam urutan dari yang terlama hingga terbaru.
Mencantumkan rencana pencadangan yang ada
Untuk mencantumkan rencana cadangan yang ada, gunakan perintah berikut:
kubectl get VirtualMachineBackupPlans -A
Perintah ini akan menampilkan output yang mirip dengan berikut ini:
NAMESPACE NAME LASTBACKUPTIME LASTBACKUPSTATE NEXTBACKUPTIME PAUSED
vm-workloads bkp-template-vm-windows-vm-local
vm-workloads sched-snapshotonly-bkp-plan-10min false
Membuat cadangan manual mesin virtual
Selesaikan langkah-langkah di bagian ini untuk membuat pencadangan manual virtual machine.
Buat resource
VirtualMachineBackupPlanTemplatedi namespace tempat virtual machine target berada dengan menerapkan konfigurasi berikut ke cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineBackupPlanTemplate metadata: name: TEMPLATE_NAME namespace: NAMESPACE spec: backupRepository: REPOSITORY_NAME
Ganti kode berikut:
TEMPLATE_NAME: nama deskriptif untuk template cadangan ini.REPOSITORY_NAME: nama repositori cadangan target.NAMESPACE: namespace target.
Picu pencadangan dengan membuat resource
VirtualMachineBackupRequestdengan konfigurasi berikut dan menerapkannya ke cluster:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineBackupRequest metadata: name: BACKUP_REQUEST_NAME namespace: NAMESPACE spec: vmBackupPlanTemplate: TEMPLATE_NAME virtualMachine: VM_NAME vmBackupName: BACKUP_NAME
Ganti kode berikut:
BACKUP_REQUEST_NAME: nama deskriptif untuk permintaan pencadangan ini.TEMPLATE_NAME: nama template cadangan yang Anda buat di langkah sebelumnya.NAMESPACE: nama namespace target.VM_NAME: nama virtual machine target.BACKUP_NAME: nama deskriptif untuk cadangan ini.
Verifikasi integritas cadangan dengan perintah berikut:
kubectl get vmbackup BACKUP_NAME -n NAMESPACE
Ganti kode berikut:
BACKUP_NAME: nama cadangan target.NAMESPACE: namespace target.
Perintah ini akan menampilkan output yang mirip dengan berikut ini:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineBackup metadata: creationTimestamp: "2024-04-09T17:57:44Z" finalizers: - vm.cluster.gke.io/virtual-machine-backup-finalizer generation: 1 name: vmt13-backup-0409-2 namespace: default ownerReferences: - apiVersion: backup.gdc.goog/v1 kind: Backup name: vmt13-backup-0409-2 uid: 0ee0b92c-1e27-48cc-8f8f-5606ea925e88 resourceVersion: "36192759" uid: e471f8c7-637c-485f-acda-108017a5638f spec: backupConfig: backupRepository: default backupScope: selectedVirtualMachines: - resourceName: vm-t13 volumeStrategy: Portable vmBackupPlan: MyVmPlan-vm-vm-t13-portable status: backedUpVirtualMachineDisks: - vm-t13-boot-disk - vm-t13-data-disk backedUpVirtualMachines: - vm-t13 backup: vmt13-backup-0409-2 backupStatus: clusterMetadata: k8sVersion: "1.28" completeTime: "2024-04-09T18:07:36Z" createTime: "2024-04-09T17:57:44Z" jobCreated: true resourceCount: 849 sizeBytes: 1948672 state: Succeeded
Mencantumkan cadangan virtual machine
Untuk melihat cadangan mesin virtual yang ada, gunakan perintah berikut:
kubectl get VirtualMachineBackups -A
Perintah ini akan menampilkan output yang mirip dengan berikut ini:
NAMESPACE NAME STATE CREATETIME
vm-workloads vm-backup Succeeded 2025-04-08T04:37:32Z
Memulihkan virtual machine dari cadangan
Selesaikan langkah-langkah di bagian ini untuk memulihkan virtual machine dari cadangan.
Picu proses pemulihan dengan membuat resource
VirtualMachineRestoreRequestdengan konfigurasi berikut dan menerapkannya ke cluster Anda:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineRestoreRequest metadata: name: restore-req namespace: NAMESPACE spec: vmBackup: BACKUP_NAME restoreName: RESTORE_NAME restoredResourceName: RESTORED_VM_NAME restoredResourceDescription: RESTORE_DESCRIPTION
Ganti kode berikut:
BACKUP_NAME: nama cadangan target.RESTORE_NAME: nama deskriptif untuk operasi pemulihan ini.NAMESPACE: namespace target.RESTORED_VM_NAME: nama yang diberikan ke mesin virtual selama pemulihan. Nama ini tidak boleh bertentangan dengan virtual machine yang sudah ada di cluster.RESTORE_DESCRIPTION: deskripsi untuk operasi pemulihan ini.
Gunakan perintah berikut untuk memeriksa progres operasi pemulihan:
kubectl get virtualmachinerestores.vm.cluster.gke.io RESTORE_NAME -n NAMESPACE
Ganti kode berikut:
RESTORE_NAME: nama operasi pemulihan target.NAMESPACE: namespace target.
Perintah ini akan menampilkan output yang mirip dengan berikut ini:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineRestore metadata: creationTimestamp: "2024-04-09T18:09:51Z" finalizers: - vm.cluster.gke.io/virtual-machine-restore-finalizer generation: 1 name: vmt13-restore-0409-2-1 namespace: default ownerReferences: - apiVersion: backup.gdc.goog/v1 kind: Restore name: vmt13-restore-0409-2-1 uid: 4ce1ca83-eba0-4cc3-bad3-af6cf9185d7d resourceVersion: "36194596" uid: aba50b59-e18d-4687-ad11-47baa45478b4 spec: targetVirtualMachineDisks: - vm-t13-boot-disk - vm-t13-data-disk targetVirtualMachines: - vm-t13 vmBackup: vmt13-backup-0409-2 status: restore: vmt13-restore-0409-2-1 restoreStatus: completeTime: "2024-04-09T18:10:00Z" jobCreated: true resourcesRestoredCount: 5 restoredVolumesCount: 2 startTime: "2024-04-09T18:09:51Z" state: Succeeded stateReason: restore is successful
Melihat operasi pemulihan
Untuk melihat operasi pemulihan yang dimulai hingga saat ini, gunakan perintah berikut:
kubectl get VirtualMachineRestore.vm.cluster.gke.io -A
Perintah ini akan menampilkan output yang mirip dengan berikut ini:
NAMESPACE NAME STARTTIME RESTORE STATE
vm-workloads restore-1 2025-04-08T04:41:04Z restore-1 Succeeded
Menghapus cadangan virtual machine
Untuk menghapus cadangan mesin virtual, buat resource VirtualMachineDeleteBackupRequest
dengan konfigurasi berikut dan terapkan ke cluster Anda:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDeleteBackupRequest metadata: name: vmdbr namespace: BACKUP_NAME spec: vmBackup: NAMESPACE
Ganti kode berikut:
NAMESPACE: nama namespace target.BACKUP_NAME: nama cadangan target.
Melihat log audit pengujian AppArmor
Distributed Cloud yang terhubung secara otomatis melakukan sandbox pada beban kerja virtual machine dengan kebijakan AppArmor di audit-mode. Pelanggaran kebijakan akan memunculkan entri log audit.
Contoh:
{
"jsonPayload": {
"_SOURCE_REALTIME_TIMESTAMP": "1734596844149104",
"SYSLOG_TIMESTAMP": "Dec 19 08:27:24 ",
"MESSAGE": "type=AVC msg=audit(1734596844.148:27742): apparmor=\"ALLOWED\" operation=\"open\" profile=\"virt-launcher-audit\" name=\"/etc/libvirt/virtlogd.conf\" pid=182406 comm=\"virtlogd\" requested_mask=\"r\" denied_mask=\"r\" fsuid=0 ouid=0 FSUID=\"root\" OUID=\"root\"",
"PRIORITY": "6",
...
"SYSLOG_RAW": "<14>Dec 19 08:27:24 audisp-syslog: type=AVC msg=audit(1734596844.148:27742): apparmor=\"ALLOWED\" operation=\"open\" profile=\"virt-launcher-audit\" name=\"/etc/libvirt/virtlogd.conf\" pid=182406 comm=\"virtlogd\" requested_mask=\"r\" denied_mask=\"r\" fsuid=0 ouid=0 FSUID=\"root\" OUID=\"root\"\n",
"SYSLOG_IDENTIFIER": "audisp-syslog",
"_GID": "0",
},
"timestamp": "2024-12-19T08:27:24.149109Z",
"labels": {
"gke.googleapis.com/log_type": "system"
},
"receiveTimestamp": "2024-12-19T08:27:24.721842807Z"
...
...
}
Langkah berikutnya
- Men-deploy workload di Distributed Cloud terhubung
- Mengelola workload GPU
- Mengelola zona
- Mengelola komputer
- Mengelola cluster
- Mengelola node pool