Dokumen ini ditujukan untuk pemilik aplikasi yang menjalankan Google Distributed Cloud. Dokumen ini menunjukkan cara terhubung ke virtual machine (VM) yang menggunakan VM Runtime di GDC. Anda dapat terhubung ke VM secara langsung menggunakan alamat IP, atau menggunakan alat bawaan untuk akses SSH atau konsol.
Sebelum memulai
Untuk menyelesaikan dokumen ini, Anda memerlukan akses ke resource berikut:
- VM yang berjalan di salah satu cluster Anda. Jika diperlukan, buat VM di Google Distributed Cloud.
- Alat klien
virtctl
yang diinstal sebagai plugin untukkubectl
. Jika diperlukan, instal alat klien virtctl.
Mengonfigurasi akses SSH tanpa sandi ke VM
Akses SSH langsung tanpa sandi ke VM Anda difasilitasi oleh agen tamu yang diinstal oleh Runtime VM di GDC. Di antara tugas lainnya, agen tamu akan menginstal dan menetapkan masa berlaku kunci SSH. Kemampuan ini memungkinkan tunnel SSH untuk mengakses VM Anda dari klien di luar jaringan cluster.
Mengaktifkan agen tamu
Untuk mengaktifkan agen tamu:
Periksa resource kustom
VirtualMachine
untuk mengonfirmasi bahwa resource tersebut dikonfigurasi untuk mengaktifkan agen tamu:kubectl get gvm VM_NAME -o yaml --kubeconfig KUBECONFIG
Kolom
spec.osType
harus ditetapkan ke sistem operasi VM Anda,Linux
, atauWindows
. Bagianspec.guestEnvironment
tidak boleh dikonfigurasi secara eksplisit sebagai kosong. Jika bagian dikonfigurasi sebagai kosong (guestEnvironment: {}
), Anda dapat menghapusnya sepenuhnya untuk mengaktifkan agen tamu.Resource kustom
VirtualMachine
untuk VM yang ingin Anda akses akan terlihat seperti ini:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: sample-vm spec: compute: cpu: vcpus: 2 memory: capacity: 4Gi ... osType: Linux ...
Jika perlu, gunakan
kubectl edit
untuk mengupdate resource kustomVirtualMachine
.Untuk memverifikasi bahwa agen tamu berfungsi, periksa
status
di resource kustom VM Anda:kubectl get gvm VM_NAME --kubeconfig KUBECONFIG
Saat agen tamu berfungsi, Anda akan melihat
status: "True"
untuk kondisiGuestEnvironmentEnabled
danGuestEnvironmentDataSynced
.apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: ... name: vm-sample-01 ... status: conditions: - lastTransitionTime: "2022-10-05T22:40:26Z" message: "" observedGeneration: 1 reason: UserConfiguration status: "True" type: GuestEnvironmentEnabled - lastTransitionTime: "2022-10-06T21:55:57Z" message: "" observedGeneration: 1 reason: GuestEnvironmentDataSynced status: "True" type: GuestEnvironmentSynced ...
Mengaktifkan akses SSH tanpa sandi
Untuk mengaktifkan akses SSH tanpa sandi untuk VM Anda:
Buat file manifes
VirtualMachineAccessRequest
, sepertivm-access-request.yaml
, di editor pilihan Anda:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineAccessRequest metadata: name: VMAR_NAME namespace: VM_NAMESPACE spec: vm: VM_NAME user: USERNAME ssh: key: PUBLIC_SSH_KEY ttl: EXPIRATION_TIME
Ganti kode berikut:
VMAR_NAME
: nama resource permintaan akses.VM_NAMESPACE
: namespace untuk VM yang ingin Anda akses.VM_NAME
: nama VM yang ingin Anda akses.USERNAME
: nama pengguna untuk pengguna yang mengakses VM.PUBLIC_SSH_KEY
: kunci publik untuk akses SSH. Biasanya, ini adalah konten fileid_rsa.pub
.EXPIRATION_TIME
: kolomttl
(time-to-live) menentukan durasi validitas kunci SSH.Misalnya, jika Anda menentukan
30m
, masa berlaku kunci SSH akan habis setelah 30 menit.Flag ini menggunakan unit berikut:
s
untuk detikm
untuk menith
untuk jamd
untuk hari
Gunakan
kubectl apply
untuk membuatVirtualMachineAccessRequest
dari file manifes. Misalnya, jika Anda memberi nama file manifesvm-access-request.yaml
,kubectl apply -f MANIFEST --kubeconfig KUBECONFIG
Ganti kode berikut:
MANIFEST
: nama file manifes permintaan akses. Contoh,vm-access-request.yaml
.KUBECONFIG
: jalur ke file kubeconfig cluster yang menghosting VM yang Anda akses.
Untuk memverifikasi bahwa konfigurasi permintaan akses Anda berhasil, periksa status
VirtualMachineAccessRequest
:kubectl get vmar VMAR_NAME -o yaml --kubeconfig KUBECONFIG
Jika konfigurasi berhasil, bagian
status
akan menyertakanstate: configured
:apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineAccessRequest metadata: ... annotations: kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"vm.cluster.gke.io/v1","kind":"VirtualMachineAccessRequest", "metadata":{"annotations":{},"name":"vmar-sample","namespace":"default"}, "spec":{"ssh":{"key":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQ...jMLHFc= sample-user@sample-host","ttl":"5h"},"user":"sample-user","vm":"vm-sample-01"}} creationTimestamp: "2022-10-06T21:55:57Z" finalizers: - vm.cluster.gke.io/vmar-finalizer generation: 2 name: vmar-sample namespace: default resourceVersion: "13033921" uid: 282d72ad-f48d-4e89-af22-336940ac9f58 spec: ssh: key: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQ...jMLHFc= sample-user@sample-host ttl: 5m0s user: sample-user vm: vm-sample-01 status: processedAt: "2022-10-06T21:55:57Z" state: configured
Menonaktifkan agen tamu
Saat Anda membuat VM baru dan menetapkan kolom osType
, agen tamu akan diaktifkan.
Saat fitur ini dalam Pratinjau, Anda dapat menonaktifkannya dengan mengedit resource kustom VirtualMachine
. Menonaktifkan agen tamu akan menonaktifkan akses SSH tanpa sandi ke VM Anda.
Untuk menonaktifkan agen tamu:
Gunakan
kubectl
untuk menghentikan VM sebelum Anda membuat perubahan pada konfigurasi:kubectl virt stop VM_NAME --kubeconfig KUBECONFIG
Edit resource VM Anda:
kubectl edit gvm VM_NAME --kubeconfig KUBECONFIG
Update konfigurasi
VirtualMachine
untuk menambahkanspec.guestEnvironment
kosong secara eksplisit:apiVersion: vm.cluster.gke.io/v1alpha1 kind: VirtualMachine metadata: name: vm-example namespace: default spec: compute: ... osType: Linux guestEnvironment: {}
Simpan dan tutup manifes VM yang diperbarui di editor Anda.
Gunakan
kubectl
untuk memulai VM:kubectl virt start VM_NAME --kubeconfig KUBECONFIG
Menghubungkan menggunakan alamat IP
Jika VM memiliki alamat IP yang dapat diakses dan Anda sudah memiliki kredensial untuk mengakses VM, Anda dapat terhubung menggunakan protokol seperti SSH, VNC, atau RDP.
Menghubungkan melalui alamat IP
Jika Anda dapat terhubung langsung ke alamat IP VM, gunakan salah satu metode berikut:
SSH
Dapatkan detail VM Anda untuk melihat alamat IP-nya:
kubectl get gvm VM_NAME --namespace VM_NAMESPACE --kubeconfig KUBECONFIG
Ganti nilai berikut:
VM_NAME
: nama untuk VM Anda.VM_NAMESPACE
: namespace untuk VM Anda.
Contoh output berikut menampilkan informasi VM dan alamat IP:
NAME STATUS AGE IP vm1 Running 7m 10.200.0.21
Hubungkan ke VM Anda menggunakan klien SSH:
ssh USERNAME@IP_ADDRESS -i PATH_TO_KEY
Ganti nilai berikut:
USERNAME
: nama pengguna untuk akun di VM Anda.IP_ADDRESS
: alamat IP VM Anda yang diperoleh pada langkah sebelumnya.PATH_TO_KEY
: jalur ke kunci SSH pribadi.
VNC atau RDP
Virtual Network Computing (VNC) dan Remote Desktop Protocol (RDP) memungkinkan Anda menggunakan konsol grafis untuk mengakses VM. Saat menggunakan alamat IP, Anda harus mengaktifkan VNC atau RDP di OS tamu sebelum dapat menggunakannya untuk terhubung ke VM. Untuk informasi tentang cara mengaktifkan dan menggunakan VNC atau RDP, lihat dokumentasi untuk OS tamu Anda.
Anda juga memerlukan kredensial yang ada untuk login ke VM, seperti yang Anda tentukan untuk membuat kredensial pengguna awal saat membuat VM.
Dapatkan detail VM Anda untuk melihat alamat IP-nya:
kubectl get gvm VM_NAME --namespace VM_NAMESPACE --kubeconfig KUBECONFIG
Ganti nilai berikut:
VM_NAME
: nama untuk VM Anda.VM_NAMESPACE
: namespace untuk VM Anda.
Contoh output berikut menampilkan informasi VM dan alamat IP:
NAME STATUS AGE IP vm1 Running 7m 10.200.0.21
Hubungkan ke alamat IP VM yang diperoleh di langkah sebelumnya menggunakan alat klien dan port yang sesuai seperti port VNC
5900
atau port RDP3389
.
Menghubungkan melalui Layanan
Jika VM terhubung ke pod-network
default dan Anda tidak dapat berkomunikasi
langsung ke alamat IP VM, tampilkan VM di balik load balancer
Service
.
Buat manifes
Service
, sepertimy-service-load-balancer.yaml
, di editor pilihan Anda:nano my-service-load-balancer.yaml
Salin dan tempel manifes YAML berikut:
apiVersion: v1 kind: Service metadata: name: VM_NAME-service spec: selector: kubevirt/vm: VM_NAME ports: - name: PORT_NAME protocol: PROTOCOL_TYPE port: EXTERNAL_PORT targetPort: TARGET_PORT type: LoadBalancer
Pada jenis manifes
Service
ini, ganti nilai berikut:VM_NAME
: nama untuk VM Anda yang akan diekspos untuk akses jarak jauh.PORT_NAME
: nama protokol Anda, sepertissh
,vnc
, ataurdp
.PROTOCOL_TYPE
: jenis protokol, sepertiTCP
untuk SSH dan RDP, atauUDP
untuk VNC.EXTERNAL_PORT
: nomor port eksternal yang akan ditampilkan dan yang Anda gunakan untuk terhubung.TARGET_PORT
: port target, seperti22
untuk SSH.
Simpan dan tutup manifes
Service
di editor Anda.Buat
Service
menggunakankubectl
:kubectl apply -f my-service-load-balancer.yaml --kubeconfig KUBECONFIG
Dapatkan alamat
EXTERNAL-IP
layanan load balancer:kubectl get service VM_NAME-service --kubeconfig KUBECONFIG
Alamat IP load balancer ditampilkan, seperti yang ditunjukkan dalam contoh output berikut:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE vm1-service LoadBalancer 172.26.232.167 10.200.0.51 22:31141/TCP 6d20h
Hubungkan ke alamat
EXTERNAL-IP
load balancer dengan protokol standar, seperti menggunakan klien SSH:ssh USERNAME@LOAD_BALANCER_IP_ADDRESS -i PATH_TO_KEY
Ganti nilai berikut:
USERNAME
: nama pengguna untuk akun di VM Anda.LOAD_BALANCER_IP_ADDRESS
: alamat IP load balancer Anda.PATH_TO_KEY
: jalur ke kunci SSH pribadi.
Menghubungkan langsung menggunakan SSH
Jika klien terhubung ke jaringan fisik yang sama dengan node cluster
bare metal dan Anda tidak memerlukan penggunaan tunnel SSH untuk terhubung ke
cluster, Anda dapat terhubung menggunakan kubectl virt ssh
.
Untuk menggunakan SSH guna menghubungkan VM Linux dari konsol dengan add-on
virtctl
:kubectl virt ssh USERNAME@VM_NAME --namespace VM_NAMESPACE --kubeconfig KUBECONFIG
Ganti nilai berikut:
USERNAME
: nama pengguna untuk mengakses VM Anda. Akun ini akan dibuat jika tidak ada di VM.VM_NAME
: nama VM Anda.
Setelah Anda berhasil terhubung menggunakan SSH ke VM dan tidak lagi memerlukan koneksi, tutup sesi SSH:
exit
Menghubungkan langsung menggunakan konsol
Jika Anda tidak memiliki konektivitas jaringan langsung ke VM Linux untuk akses SSH, hubungkan ke konsol VM menggunakan Runtime VM di konsol GDC. Metode ini membuka konsol serial. Setelah terhubung, Anda akan diberi perintah prompt, bukan konsol grafis.
Untuk mengakses VM Linux dari konsol, gunakan add-on
virtctl
:kubectl virt console VM_NAME --kubeconfig KUBECONFIG
Ganti
VM_NAME
dengan nama VM Anda.Saat diminta, masukkan kredensial pengguna untuk VM Anda. Kredensial ini harus ada di VM, atau diterapkan saat VM dibuat. Jika diperlukan, lihat bagian berikut untuk membuat kredensial pengguna awal saat Anda membuat VM.
Setelah berhasil terhubung ke konsol VM dan tidak lagi memerlukan koneksi, keluar dari sesi dan konsol VM:
Ctrl + ]
Menghubungkan langsung menggunakan VNC
Anda dapat menggunakan perintah kubectl virt vnc
untuk membuka konsol grafis Virtual Network Computing (VNC) guna mengakses VM. Metode ini berfungsi untuk VM yang menjalankan
OS tamu Windows atau Linux. Saat Anda menggunakan perintah kubectl virt vnc
, VM Runtime di GDC akan membuka VNC untuk Anda, sehingga Anda tidak perlu mengaktifkan VNC di OS tamu.
Anda memerlukan kredensial yang ada untuk login ke VM, seperti yang Anda tentukan untuk membuat kredensial pengguna awal saat membuat VM.
Untuk mengakses VM menggunakan VNC, gunakan add-on
virtctl
:kubectl virt vnc VM_NAME --kubeconfig KUBECONFIG
Ganti
VM_NAME
dengan nama VM Anda.Saat diminta, masukkan kredensial pengguna untuk VM Anda.
Setelah berhasil terhubung ke sesi VNC VM dan tidak lagi memerlukan koneksi, logout dari VM untuk menutup koneksi VNC.
Membuat kredensial pengguna awal
Saat terhubung ke VM menggunakan konsol, Anda harus menentukan kredensial pengguna. Proses pembuatan kredensial pengguna awal berbeda untuk sistem operasi tamu Linux dan Windows.
OS tamu Linux
Untuk VM Linux, kredensial pengguna dapat di-build ke dalam image kustom, atau dapat ditentukan saat Anda membuat VM.
Gunakan parameter
--configure-initial-password
dengan perintahkubectl virt create
:kubectl virt create vm VM_NAME \ --image ubuntu20.04 \ --os-type Linux \ --configure-initial-password USERNAME:PASSWORD \ --kubeconfig KUBECONFIG
Ganti nilai berikut:
VM_NAME
: nama untuk VM Anda.USERNAME
: nama pengguna untuk akun yang akan dibuat di VM.PASSWORD
: sandi untuk akun pengguna.
Contoh perintah ini membuat VM Linux yang menjalankan Ubuntu 20.04. Sebaiknya ubah kredensial awal setelah Anda pertama kali login ke VM.
OS tamu Windows
Gunakan langkah-langkah berikut untuk mereset sandi pengguna yang sudah ada atau membuat sandi awal untuk pengguna baru:
Aktifkan agen tamu di VM Windows Anda:
Konfigurasikan VM untuk mengaktifkan agen tamu.
Gunakan VNC atau RDP untuk terhubung ke VM.
Di VM, buka drive
guest agent
. Biasanya, ini adalah driveE:
.Gunakan PowerShell untuk menjalankan
install.ps1
.Tindakan ini akan menginstal dan memulai agen tamu. Agen tamu dimulai secara otomatis untuk memulai ulang VM berikutnya.
Tutup sesi jarak jauh.
Di workstation admin, gunakan perintah berikut untuk mereset (atau menetapkan jika Anda menggunakan nama pengguna baru) sandi VM Windows:
kubectl virt reset-windows-password VM_NAME \ --user=USERNAME \ --namespace=VM_NAMESPACE
Ganti kode berikut:
VM_NAME
: nama VM.USERNAME
: nama pengguna yang ingin Anda reset (atau tetapkan) sandinya. Jika nama pengguna baru, perintah ini akan membuat akun Windows baru dan menetapkan sandi awal.VM_NAMESPACE
: (Opsional) namespace VM. Flag ini bersifat opsional. Jika tidak ditentukan, namespace default,default
, akan digunakan.
Untuk mereset (atau menetapkan) sandi tanpa perintah konfirmasi, gunakan flag
--force
opsional. Saat Anda menggunakan tanda--force
, perintah akan memperingatkan Anda tentang konsekuensi mereset sandi untuk akun yang ada. Tanpa tanda--force
, perintah akan meminta Anda untuk mengonfirmasi reset sandi dengan teks berikut:This command creates an account and sets an initial password for the user USERNAME if the account does not already exist. If the account already exists, resetting the password can cause the LOSS OF ENCRYPTED DATA secured with the current password, including files and stored passwords. Would you like to set or reset the password for USERNAME (Y/n)?
Setelah Anda mengonfirmasi (atau memaksa) reset sandi, perintah akan menampilkan sandi baru untuk VM dan nama pengguna yang ditentukan:
Resetting and retrieving password for USERNAME on VM_NAME vm_name: VM_NAME username: USERNAME password: PASSWORD
Langkah selanjutnya
- Mengelola status daya VM di Google Distributed Cloud.
- Mengedit VM di Google Distributed Cloud.
- Melihat log konsol VM di Google Distributed Cloud.