Dokumen ini ditujukan bagi pemilik aplikasi yang menjalankan GKE di Bare Metal. 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 referensi berikut:
- VM yang berjalan di salah satu cluster Anda. Jika perlu, buat VM di GDCV untuk Bare Metal.
- Alat klien
virtctl
diinstal sebagai plugin untukkubectl
. Jika perlu, instal alat klien virtctl.
Mengonfigurasi akses SSH tanpa sandi ke VM
Akses SSH langsung dan tanpa sandi ke VM Anda difasilitasi oleh agen tamu yang diinstal oleh Runtime VM di GDC. Di antara tugas-tugas lainnya, agen tamu menginstal dan mengakhiri 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
Anda untuk mengonfirmasi bahwa resource tersebut telah 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 ini 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 memastikan agen tamu berfungsi, periksa
status
di resource kustom VM Anda:kubectl get gvm VM_NAME --kubeconfig KUBECONFIG
Saat agen tamu bekerja, 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 isi fileid_rsa.pub
.EXPIRATION_TIME
: kolomttl
(time-to-live) menentukan berapa lama kunci SSH valid.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 menamai 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 berada 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 diupdate di editor Anda.
Gunakan
kubectl
untuk memulai VM:kubectl virt start VM_NAME --kubeconfig KUBECONFIG
Hubungkan menggunakan alamat IP
Jika VM memiliki alamat IP yang dapat diakses dan Anda sudah memiliki kredensial untuk mengakses VM tersebut, Anda dapat terhubung menggunakan protokol seperti SSH, VNC, atau RDP.
Hubungkan 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 menunjukkan 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 di 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 menggunakan salah satu untuk terhubung ke VM. Untuk informasi tentang cara mengaktifkan dan menggunakan VNC atau RDP, baca dokumentasi untuk OS tamu Anda.
Anda juga memerlukan kredensial yang ada untuk login ke VM, seperti kredensial 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 menunjukkan informasi VM dan alamat IP:
NAME STATUS AGE IP vm1 Running 7m 10.200.0.21
Hubungkan ke alamat IP VM Anda yang diperoleh pada langkah sebelumnya menggunakan alat klien dan port yang sesuai, seperti port VNC
5900
atau port RDP3389
.
Menghubungkan melalui Layanan
Jika VM Anda terhubung ke pod-network
default dan Anda tidak dapat berkomunikasi langsung ke alamat IP VM, ekspos 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
Dalam jenis manifes
Service
ini, ganti nilai berikut:VM_NAME
: nama 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 diekspos 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 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.
Terhubung langsung menggunakan SSH
Jika klien terhubung ke jaringan fisik yang sama dengan cluster Anthos di node 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 dibuat jika tidak ada di VM.VM_NAME
: nama VM Anda.
Setelah Anda berhasil terhubung menggunakan SSH VM dan tidak lagi memerlukan koneksi, keluar dari 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 seri. Setelah terhubung, Anda diberikan {i>prompt<i} perintah, 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 perlu, lihat bagian berikut untuk membuat kredensial pengguna awal saat Anda membuat VM.
Setelah Anda 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) untuk mengakses VM Anda. Metode ini berfungsi untuk VM yang menjalankan
OS tamu Windows atau Linux. Saat Anda menggunakan perintah kubectl virt vnc
, Runtime VM di GDC akan membuka VNC, sehingga Anda tidak perlu
mengaktifkan VNC di OS tamu.
Anda memerlukan kredensial yang ada untuk login ke VM, seperti kredensial 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 Anda 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 dibangun di image kustom Anda, 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 Anda mengubah kredensial awal setelah 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:
Konfigurasi VM untuk mengaktifkan agen tamu.
Menggunakan VNC atau RDP untuk terhubung ke VM.
Di VM, buka drive
guest agent
. Dalam sebagian besar kasus, ini adalah driveE:
.Gunakan PowerShell untuk menjalankan
install.ps1
.Tindakan ini akan menginstal dan memulai agen tamu. Agen tamu akan dimulai secara otomatis untuk mulai 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 sandinya ingin Anda reset (atau setel). 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 menyetel) sandi tanpa dialog konfirmasi, gunakan flag
--force
opsional. Saat Anda menggunakan tanda--force
, dialog akan memperingatkan Anda tentang konsekuensi reset sandi untuk akun yang sudah 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 memaksakan) reset sandi, perintah tersebut 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 GDCV untuk Bare Metal.
- Mengedit VM di GDCV untuk Bare Metal.
- Melihat log konsol VM di GDCV untuk Bare Metal.