Dokumen ini ditujukan untuk pemilik aplikasi yang menjalankan Google Distributed Cloud. Dokumen ini menunjukkan cara terhubung ke virtual machine (VM) yang menggunakan Runtime VM di GDC. Anda dapat terhubung ke VM secara langsung menggunakan IP alamat IP eksternal, 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 diperlukan, membuat VM di Google Distributed Cloud.
- Alat klien
virtctl
diinstal sebagai plugin untukkubectl
. Jika diperlukan, 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 VM Runtime di GDC. Di antara tugas-tugas lainnya, tamu agen diinstal dan kunci SSH kedaluwarsa. Kemampuan ini mengaktifkan tunnel SSH untuk yang mengakses VM Anda dari klien di luar jaringan cluster.
Mengaktifkan agen tamu
Untuk mengaktifkan agen tamu:
Periksa resource kustom
VirtualMachine
untuk memastikan resource telah dikonfigurasi untuk aktifkan agen tamu:kubectl get gvm VM_NAME -o yaml --kubeconfig KUBECONFIG
Kolom
spec.osType
harus disetel ke sistem operasi VM Anda,Linux
atauWindows
. Bagianspec.guestEnvironment
tidak boleh secara eksplisit dikonfigurasi sebagai kosong. Jika bagian tersebut dikonfigurasi sebagai kosong (guestEnvironment: {}
), Anda dapat menghapus seluruhnya untuk mengaktifkan tamu agen keamanan.Resource kustom
VirtualMachine
Anda untuk VM yang ingin Anda akses harus 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 memperbaruiVirtualMachine
kustom resource AndaUntuk memastikan agen tamu berfungsi, periksa
status
di VM kustom Anda referensi: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 ...
Aktifkan akses SSH tanpa sandi
Guna mengaktifkan akses SSH tanpa sandi untuk VM Anda:
Membuat file manifes
VirtualMachineAccessRequest
, sepertivm-access-request.yaml
, dalam 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 akses resource permintaan.VM_NAMESPACE
: namespace untuk VM yang ingin Anda akses.VM_NAME
: nama VM yang Anda inginkan untuk diakses.USERNAME
: nama pengguna untuk pengguna yang sedang mengakses VM.PUBLIC_SSH_KEY
: kunci publik untuk akses SSH. Biasanya, ini adalah isi fileid_rsa.pub
.EXPIRATION_TIME
:ttl
(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 manifes. Misalnya, jika Anda menamai file manifesvm-access-request.yaml
,kubectl apply -f MANIFEST --kubeconfig KUBECONFIG
Ganti kode berikut:
MANIFEST
: nama akses file manifes permintaan. Contoh,vm-access-request.yaml
.KUBECONFIG
: jalur ke {i>kubeconfig<i} dari cluster yang menghosting VM yang Anda akses.
Untuk memverifikasi bahwa konfigurasi permintaan akses Anda berhasil, periksa status dari
VirtualMachineAccessRequest
:kubectl get vmar VMAR_NAME -o yaml --kubeconfig KUBECONFIG
Setelah 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
Nonaktifkan agen tamu
Saat Anda membuat VM baru dan menyetel kolom osType
, agen tamu diaktifkan.
Saat fitur ini berada dalam Pratinjau, Anda dapat menonaktifkannya dengan mengedit
Resource kustom VirtualMachine
. Menonaktifkan agen tamu akan menonaktifkan sandi tanpa sandi
Akses SSH ke VM Anda.
Untuk menonaktifkan agen tamu:
Gunakan
kubectl
untuk menghentikan VM Anda sebelum membuat perubahan pada konfigurasi:kubectl virt stop VM_NAME --kubeconfig KUBECONFIG
Edit resource VM Anda:
kubectl edit gvm VM_NAME --kubeconfig KUBECONFIG
Perbarui 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 telah diupdate di editor Anda.
Gunakan
kubectl
untuk memulai VM:kubectl virt start VM_NAME --kubeconfig KUBECONFIG
Hubungkan menggunakan alamat IP
Jika VM Anda memiliki alamat IP yang dapat diakses dan Anda sudah memiliki kredensial untuk mengakses VM, 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 opsi berikut metode:
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 menggunakan klien SSH:
ssh USERNAME@IP_ADDRESS -i PATH_TO_KEY
Ganti nilai berikut:
USERNAME
: nama pengguna untuk menggunakan akun layanan di VM Anda.IP_ADDRESS
: IP alamat VM Anda yang diperoleh di langkah sebelumnya.PATH_TO_KEY
: jalur ke kunci SSH pribadi.
VNC atau RDP
Komputasi Jaringan Virtual (VNC) dan Remote Desktop Protocol (RDP) Anda dapat menggunakan konsol grafis untuk mengakses VM Anda. Saat Anda menggunakan IP Anda harus mengaktifkan VNC atau RDP di OS tamu sebelum dapat menggunakan baik 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 yang Anda definisikan ke membuat kredensial pengguna awal saat Anda 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
.
Terhubung melalui Layanan
Jika VM terhubung ke pod-network
default dan Anda tidak dapat berkomunikasi
langsung ke alamat IP VM Anda, ekspos VM di belakang load balancer
Service
.
Buat manifes
Service
, sepertimy-service-load-balancer.yaml
, di 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 hubungkan.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 pada 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 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 pemuatan Anda dengan load balancer Jaringan Passthrough Eksternal Regional.PATH_TO_KEY
: jalur ke kunci SSH pribadi.
Menghubungkan langsung menggunakan SSH
Jika klien Anda terhubung ke jaringan fisik yang sama dengan cluster Anthos Anda
pada {i>node<i} {i>bare metal<i} dan Anda tidak memerlukan
penggunaan terowongan SSH untuk terhubung ke
cluster tersebut, 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. Ini dibuat jika tidak ada di VM.VM_NAME
: nama VM Anda.
Setelah Anda berhasil terhubung menggunakan SSH, VM dan tidak lagi memerlukan 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 serial. Setelah terhubung, Anda 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 perlu, lihat bagian berikut untuk membuat kredensial pengguna awal saat Anda membuat VM.
Setelah Anda berhasil terhubung ke konsol VM dan tidak lagi yang memerlukan koneksi, tutup sesi VM dan konsol:
Ctrl + ]
Menghubungkan langsung menggunakan VNC
Anda dapat menggunakan perintah kubectl virt vnc
untuk membuka Komputasi Jaringan Virtual
(VNC) untuk mengakses VM Anda. Metode ini berfungsi untuk VM yang berjalan
baik Windows atau Linux {i>guest OS<i}. Saat Anda menggunakan kubectl virt vnc
VM Runtime di GDC 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 definisikan ke membuat kredensial pengguna awal saat Anda 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 membutuhkan koneksi, keluar dari VM untuk menutup koneksi VNC.
Membuat kredensial pengguna awal
Saat terhubung ke VM menggunakan konsol, Anda harus menentukan memiliki kredensial yang lengkap. Proses pembuatan kredensial pengguna awal berbeda untuk Linux dan sistem operasi tamu Windows.
OS tamu Linux
Untuk VM Linux, kredensial pengguna dapat dibangun di image kustom Anda, atau ditentukan saat Anda membuat VM.
Gunakan parameter
--configure-initial-password
dengankubectl virt create
berikut: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 dibuat di VM.PASSWORD
: sandi untuk pengguna menggunakan akun layanan.
Contoh perintah ini membuat VM Linux yang menjalankan Ubuntu 20.04. Penting sebaiknya Anda mengubah kredensial awal setelah menandatangani ke VM.
OS tamu Windows
Gunakan langkah-langkah berikut untuk menyetel ulang sandi bagi pengguna yang ada atau membuat {i>password<i} 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
. Dalam kebanyakan kasus, ini adalah mengemudi sejauhE:
.Gunakan PowerShell untuk menjalankan
install.ps1
.Tindakan ini akan menginstal dan memulai agen tamu. Agen tamu mulai secara otomatis untuk mulai ulang VM berikutnya.
Tutup sesi jarak jauh.
Di workstation admin, gunakan perintah berikut untuk mereset (atau menetapkan jika gunakan 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 gunakan mengatur ulang (atau menyetel) {i>password-<i}nya. Jika nama pengguna baru, perintah akan membuat akun Windows baru dan menetapkan {i>password<i} awal.VM_NAMESPACE
: (Opsional) namespace VM. Flag ini bersifat opsional. Jika tidak yang ditentukan, namespace default,default
, akan digunakan.
Untuk mereset (atau menetapkan) sandi tanpa perintah konfirmasi, gunakan perintah
--force
. Saat Anda menggunakan flag--force
, perintah tersebut akan memperingatkan Anda tentang konsekuensi dari mengatur ulang {i>password<i} untuk akun yang ada. Tanpa flag--force
, perintah tersebut 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) pengaturan ulang {i>password<i}, perintah tersebut akan mengembalikan {i>password<i} 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.
- Edit VM di Google Distributed Cloud.
- Lihat log konsol VM di Google Distributed Cloud.