Dokumen ini ditujukan bagi pemilik aplikasi yang menjalankan GKE di Bare Metal. Dokumen ini menunjukkan cara membuat dan mengelola resource disk untuk mesin virtual (VM) yang menggunakan Runtime VM di GDC.
Sebelum memulai
Untuk menyelesaikan dokumen ini, Anda memerlukan akses ke referensi berikut:
- Akses ke GKE pada Bare Metal versi 1.12.0 (
anthosBareMetalVersion: 1.12.0
) atau cluster yang lebih tinggi. Anda dapat menggunakan jenis cluster apa pun yang mampu menjalankan beban kerja. Jika perlu, coba GDCV untuk Bare Metal di Compute Engine atau lihat ringkasan pembuatan cluster. - Alat klien
virtctl
diinstal sebagai plugin untukkubectl
. Jika perlu, instal alat klien virtctl.
Membuat VM dengan disk yang terpasang
Saat membuat VM, Anda dapat memasang boot atau disk data yang sudah ada, membuat disk dari image (termasuk untuk boot disk), atau membuat disk kosong.
Blank disk
Dalam skenario ini, Anda membuat disk kosong dan memasangnya ke VM. Skenario ini memungkinkan Anda membuat disk data untuk menyimpan data aplikasi.
Buat manifes yang menentukan
VirtualMachineDisk
danVirtualMachine
, sepertimy-vm.yaml
, di editor pilihan Anda:nano my-vm.yaml
Salin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: DISK_NAME
Ganti kode berikut:
DISK_NAME
: nama disk kosong yang Anda buat dan pasang ke VM.VM_NAME
: nama VM yang Anda buat.Contoh ini akan membuat disk
10Gi
(10 gibibyte) kosong yang bernamaDISK_NAME
. Di bagianspec.disks
VM, Anda juga harus memasang boot disk, misalnya dari gambar seperti yang ditunjukkan di bagian berikutnya.
Simpan dan tutup file manifes di editor Anda.
Buat VM dan disk menggunakan
kubectl
:kubectl apply -f my-vm.yaml --kubeconfig KUBECONFIG
Ganti
KUBECONFIG
dengan jalur ke file kubeconfig cluster.
Dari gambar
Dalam skenario ini, Anda akan membuat disk dari image dan memasangnya ke VM. Skenario ini memungkinkan Anda membuat boot disk, misalnya, dari gambar. Anda juga dapat membuat dan memasang disk data dari image.
Sumber gambar yang didukung
Runtime VM di GDC memungkinkan berbagai format gambar
dan mendukung tiga jenis sumber gambar yang dapat ditentukan dalam
spesifikasi VirtualMachineDisk
. Setiap contoh berikut membuat disk 20 gibibyte
dari sumber gambar lain yang didukung.
{i>Hypertext Transfer Protocol<i} (HTTP)
Contoh
VirtualMachineDisk
berikut menunjukkan struktur dasar sumber gambar HTTP. Kolomurl
mengharapkan URL HTTP atau HTTPS.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: my-disk spec: source: http: url: https://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img size: 20GiB storageClassName: local-shared
Cloud Storage
Contoh berikut menunjukkan cara membuat disk dari image di bucket Cloud Storage. Jika kredensial default aplikasi di komputer tidak memadai untuk mengakses URL Cloud Storage, Anda harus memberikan kredensial. Pada contoh berikut,
my-gcs
adalah rahasia yang berisi kunci akun layanan berenkode base64.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: my-disk spec: source: gcs: url: gs://kubevirt-ci-vm-images/rhel8.2/rhel8_2_cloud.qcow2 secretRef: my-gcs size: 20GiB storageClassName: local-shared
Jika Anda menggunakan kunci akun layanan yang didownload untuk membuat cluster, Anda dapat menggunakan kunci akun layanan Container Registry untuk akses Cloud Storage. Jika membuat akun layanan terpisah untuk mengakses Cloud Storage, lihat Mengonfigurasi akun layanan yang dapat mengakses bucket Cloud Storage.
Gunakan perintah berikut untuk membuat Secret Kubernetes dari file kunci akun layanan yang telah didownload:
kubectl create secret generic SECRET_NAME --from-file=KEY_FILE --namespace default \ --kubeconfig KUBECONFIG
Ganti kode berikut:
SECRET_NAME
: nama untuk Secret Anda.KEY_FILE
: jalur ke file JSON kunci akun layanan yang didownload. Contoh,bmctl-workspace/.sa-keys/my-project-anthos-baremetal-gcr.json
.KUBECONFIG
: jalur ke file kubeconfig cluster.
Untuk mengetahui informasi lebih lanjut tentang penggunaan kredensial untuk mengakses Cloud Storage, lihat Membuat dan menggunakan kredensial untuk mengimpor gambar dari Cloud Storage.
Contoh container registry
Registry container yang mematuhi distribution-spec Open Container Initiative (OCI) didukung. Contoh berikut membuat disk dari image yang disimpan di registry Docker.
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: my-disk spec: source: registry: url: docker://kubevirt/fedora-cloud-registry-disk-demo size: 20GiB storageClassName: local-shared
Format gambar yang valid
Anda dapat menggunakan salah satu format gambar berikut saat membuat disk dari image:
- Arsip GNU zip (gzip) (
.gz
) - RAW (
.raw
,.img
) - Salinan QEMU pada disk image versi 2 (qcow2) (
.qcow2
) - Arsip terkompresi XZ (
.xz
) - File disk Mesin Virtual (VMDK) (
.vmdk
) - File Virtual Disk Image (VDI) VirtualBox (
.vdi
) - File image Hard Disk Virtual (VHD) (
.vdh
) - File Hard Disk Virtual versi 2 (VDHX) (
.vdhx
) - File image disk ISO (
.iso
)
Contoh disk yang dibuat dari image HTTP
Langkah-langkah berikut akan membuat boot disk dari image Ubuntu:
Buat manifes yang menentukan
VirtualMachineDisk
danVirtualMachine
, seperti my-vm.yaml, di editor pilihan Anda:nano my-vm.yaml
Salin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: VM_NAME-boot-dv spec: size: 20Gi source: http: url: https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv
Contoh ini akan membuat disk
20Gi
(20 gibibyte) bernamaVM_NAME-boot-dv
menggunakan image Ubuntu publik. Di bagianspec.disks
VM, disk disetel keboot: true
.Simpan dan tutup manifes di editor Anda.
Buat VM dan disk menggunakan
kubectl
:kubectl apply -f my-vm.yaml --kubeconfig KUBECONFIG
Ganti
KUBECONFIG
dengan jalur ke file kubeconfig cluster.
Disk yang ada
Dalam skenario ini, Anda membuat disk kosong dan memasangnya ke VM. Skenario ini memungkinkan Anda membuat disk data untuk menyimpan data aplikasi.
Buat manifes
VirtualMachine
, seperti my-vm.yaml, di editor pilihan Anda:nano my-vm.yaml
Salin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: EXISTING_DISK_NAME
Contoh ini melampirkan disk yang ada bernama
EXISTING_DISK_NAME
.Di bagian
spec.disks
VM, Anda juga harus memasang boot disk, seperti dari image seperti yang ditunjukkan di bagian sebelumnya.Simpan dan tutup manifes VM di editor Anda.
Buat VM menggunakan
kubectl
:kubectl apply -f my-vm.yaml --kubeconfig KUBECONFIG
Ganti
KUBECONFIG
dengan jalur ke file kubeconfig cluster.
Menemukan disk
Mulai dari GKE pada Bare Metal versi 1.13.0, saat Anda membuat VM,
VM Runtime di GDC menggunakan nama disk yang Anda tentukan dalam resource VM untuk
menetapkan nomor seri disk. Secara khusus, nama yang Anda tentukan dengan
spec.disks.virtualMachineDiskName
dalam resource kustom VirtualMachine
digunakan dalam nomor seri untuk disk. Fitur ini memudahkan Anda menemukan
disk di VM saat Anda perlu menjalankan operasi disk, seperti
pemformatan atau pemasangan.
Misalnya, jika Anda membuat VM dan menentukan boot disk bernama
sample-boot-dv
, resource kustom VirtualMachine
Anda akan terlihat seperti
ini:
apiVersion: vm.cluster.gke.io/v1
kind: VirtualMachine
metadata:
name: sample-vm
spec:
osType: Linux
compute:
cpu:
vcpus: 2
memory:
capacity: 4Gi
interfaces:
- name: eth0
networkName: pod-network
default: true
disks:
- boot: true
virtualMachineDiskName: sample-vm-boot-dv
- virtualMachineDiskName: attached-disk
Untuk VM Linux, saat login ke VM, Anda dapat menjalankan perintah berikut untuk menampilkan disk berdasarkan nomor serinya:
ls -l /dev/disk/by-id/
Respons Anda akan terlihat seperti contoh output ini, dengan nama disk muncul sebagai nomor seri:
total 0
lrwxrwxrwx 1 root root 9 Oct 19 17:17 ata-QEMU_HARDDISK_agentInstallation -> ../../sdb
lrwxrwxrwx 1 root root 9 Oct 19 17:17 ata-QEMU_HARDDISK_agentSADisk -> ../../sda
lrwxrwxrwx 1 root root 9 Oct 19 17:17 virtio-sample-boot-dv -> ../../vda
lrwxrwxrwx 1 root root 10 Oct 19 17:17 virtio-sample-boot-dv-part1 -> ../../vda1
lrwxrwxrwx 1 root root 11 Oct 19 17:17 virtio-sample-boot-dv-part14 -> ../../vda14
lrwxrwxrwx 1 root root 11 Oct 19 17:17 virtio-sample-boot-dv-part15 -> ../../vda15
lrwxrwxrwx 1 root root 11 Oct 19 17:17 virtio-attached-disk -> ../../vdb
Perhatikan perilaku fitur situasional berikut:
- Jika nilai
virtualMachineDiskName
lebih dari 20 karakter, Runtime VM di GDC hanya akan menggunakan 20 karakter pertama sebagai nomor seri. - Jika ada dua disk dengan 20 karakter pertama yang sama, hanya disk pertama yang akan memiliki nomor seri.
Membuat dan memasang disk ke VM yang ada
Jika sudah memiliki VM, Anda dapat membuat dan memasang disk untuk mendukung siklus proses aplikasi Anda. VM harus dalam status berhenti sebelum Anda memasang disk.
Blank disk
Dalam skenario ini, Anda membuat disk kosong dan memasangnya ke VM. Skenario ini memungkinkan Anda membuat disk data untuk menyimpan data aplikasi.
Gunakan
kubectl
untuk menghentikan VM, jika diperlukan:kubectl virt stop vm VM_NAME --kubeconfig KUBECONFIG
Ganti kode berikut:
VM_NAME
: nama VM yang ingin Anda hentikan.KUBECONFIG
: jalur ke file cluster kubeconfig.
Edit resource VM yang ada, misalnya
my-vm
:kubectl edit gvm VM_NAME --kubeconfig KUBECONFIG
Perbarui manifes YAML
VirtualMachine
untuk menambahkan bagianVirtualMachineDisk
di bagian atas, lalu pasang disk di akhir bagianspec.disks
VM:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: DISK_NAME
Contoh ini akan membuat disk
10Gi
(10 gibibyte) kosong yang bernamaDISK_NAME
.Simpan dan tutup manifes VM yang diupdate di editor Anda.
Gunakan
kubectl
untuk memulai VM:kubectl virt start vm VM_NAME --kubeconfig KUBECONFIG
Dari gambar
Dalam skenario ini, Anda akan membuat disk dari image sumber dan melampirkannya ke VM.
Gunakan
kubectl
untuk menghentikan VM, jika diperlukan:kubectl virt stop vm VM_NAME --kubeconfig KUBECONFIG
Ganti kode berikut:
VM_NAME
: nama VM yang ingin Anda hentikan.KUBECONFIG
: jalur ke file cluster kubeconfig.
Edit resource VM yang ada, misalnya
my-vm
:kubectl edit gvm VM_NAME --kubeconfig KUBECONFIG
Update manifes
VirtualMachine
untuk menambahkan bagianVirtualMachineDisk
di bagian atas, lalu pasang disk di akhir bagianspec.disks
VM:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi source: http: url: http://example.com/my-disk-img.qcow2 --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv - virtualMachineDiskName: DISK_NAME
Contoh ini membuat disk
10Gi
(10 gibibyte) bernamaDISK_NAME
dari sumber HTTPhttp://example.com/my-disk-img.qcow2
.Simpan dan tutup manifes VM yang diupdate di editor Anda.
Gunakan
kubectl
untuk memulai VM:kubectl virt start vm VM_NAME --kubeconfig KUBECONFIG
Buat disk
Dalam skenario ini, Anda membuat resource disk secara terpisah dari resource VM. Skenario ini memungkinkan Anda membuat disk terlebih dahulu, lalu memasangnya ke VM sesuai kebutuhan.
Blank disk
Untuk membuat disk kosong, selesaikan langkah-langkah berikut.
Buat manifes
VirtualMachineDisk
, seperti my-disk.yaml, di editor pilihan Anda:nano my-disk.yaml
Salin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 10Gi
Contoh ini akan membuat disk
10Gi
(10 gibibyte) kosong yang bernamaDISK_NAME
.Simpan dan tutup manifes disk di editor Anda.
Buat disk menggunakan
kubectl
:kubectl apply -f my-disk.yaml --kubeconfig KUBECONFIG
Ganti
KUBECONFIG
dengan jalur ke file kubeconfig cluster.
Dari gambar
Untuk membuat disk dari image, selesaikan langkah-langkah berikut.
Buat manifes
VirtualMachineDisk
, sepertimy-disk.yaml
, di editor pilihan Anda:nano my-disk.yaml
Salin dan tempel definisi YAML berikut:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: DISK_NAME spec: size: 20Gi source: http: url: https://cloud-images.ubuntu.com/releases/focal/release/ubuntu-20.04-server-cloudimg-amd64.img
Contoh ini akan membuat disk
20Gi
(20 gibibyte) bernamaDISK_NAME
menggunakan image Ubuntu publik.Simpan dan tutup manifes disk di editor Anda.
Buat disk menggunakan
kubectl
:kubectl apply -f my-disk.yaml --kubeconfig KUBECONFIG
Ganti
KUBECONFIG
dengan jalur ke file kubeconfig cluster.
Langkah selanjutnya
- Membuat dan menggunakan kredensial untuk mengimpor gambar dari Cloud Storage.
- Membuat dan menggunakan kelas penyimpanan di GDCV untuk Bare Metal.
- Saat Anda tidak lagi memerlukan VM atau resource disk virtualnya, Hapus VM di GKE di Bare Metal.