Menyambungkan ke node kluster Azure Kubernetes Service (AKS) untuk pemeliharaan atau pemecahan masalah
Sepanjang siklus hidup kluster Azure Kubernetes Service (AKS), Anda mungkin perlu mengakses simpul AKS. Akses ini bisa untuk pemeliharaan, pengumpulan log, atau operasi pemecahan masalah lainnya. Anda dapat mengakses simpul AKS menggunakan SSH, termasuk node Windows Server. Anda juga bisa tersambung ke simpul Windows Server menggunakan sambungan protokol desktop jarak jauh (RDP). Untuk tujuan keamanan, simpul AKS tidak terekspos ke internet. Untuk menyambungkan ke node AKS, Anda menggunakan kubectl debug atau alamat IP privat.
Artikel ini menunjukkan cara membuat koneksi ke node AKS.
Sebelum Anda mulai
Artikel ini mengasumsikan bahwa Anda memiliki kluster AKS yang ada. Jika Anda memerlukan kluster AKS, lihat mulai cepat AKS menggunakan Azure CLI atau menggunakan portal Microsoft Azure.
Artikel ini juga mengasumsikan Anda memiliki kunci SSH. Anda dapat membuat kunci SSH menggunakan macOS atau Linux atau Windows. Jika Anda menggunakan PuTTY Gen untuk membuat pasangan kunci, simpan pasangan kunci dalam format OpenSSH daripada format kunci privat PuTTy default (.ppk file).
Anda juga membutuhkan Azure CLI versi 2.0.64 atau versi terbaru yang terpasang dan terkonfigurasi. Jalankan az --version untuk menemukan versinya. Jika Anda perlu menginstal atau memutakhirkan versi, lihat Menginstal Azure CLI.
Membuat koneksi shell interaktif ke node Linux
Untuk membuat koneksi shell interaktif ke node Linux, gunakan kubectl debug untuk menjalankan kontainer istimewa di node Anda. Untuk mencantumkan simpul, gunakan kubectl get nodes:
$ kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
aks-nodepool1-12345678-vmss000000 Ready agent 13m v1.19.9 10.240.0.4 <none> Ubuntu 18.04.5 LTS 5.4.0-1046-azure containerd://1.4.4+azure
aks-nodepool1-12345678-vmss000001 Ready agent 13m v1.19.9 10.240.0.35 <none> Ubuntu 18.04.5 LTS 5.4.0-1046-azure containerd://1.4.4+azure
aksnpwin000000 Ready agent 87s v1.19.9 10.240.0.67 <none> Windows Server 2019 Datacenter 10.0.17763.1935 docker://19.3.1
Gunakan kubectl debug untuk menjalankan gambar kontainer pada simpul untuk menyambungkannya.
kubectl debug node/aks-nodepool1-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
Perintah ini memulai kontainer istimewa di node Anda dan tersambung ke node tersebut.
$ kubectl debug node/aks-nodepool1-12345678-vmss000000 -it --image=mcr.microsoft.com/dotnet/runtime-deps:6.0
Creating debugging pod node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx with container debugger on node aks-nodepool1-12345678-vmss000000.
If you don't see a command prompt, try pressing enter.
root@aks-nodepool1-12345678-vmss000000:/#
Kontainer istimewa ini memberikan akses ke simpul.
Catatan
Anda dapat berinteraksi dengan sesi node dengan menjalankan chroot /host dari kontainer istimewa.
Menghapus akses node Linux
Setelah selesai, exit sesi shell interaktif. Setelah sesi kontainer interaktif tertutup, hapus pod yang digunakan untuk akses dengan kubectl delete pod.
kubectl delete pod node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx
Membuat koneksi SSH ke simpul Windows
Saat ini, Anda tidak dapat tersambung ke node Windows Server secara langsung menggunakan kubectl debug. Sebaliknya, Anda harus terlebih dahulu tersambung ke simpul lain di kluster, lalu sambungkan ke simpul Windows Server dari simpul tersebut menggunakan SSH. Atau, Anda dapat menyambungkan ke node Windows Server menggunakan koneksi protokol desktop jarak jauh (RDP) alih-alih menggunakan SSH.
Untuk tersambung ke simpul lain di kluster, gunakan kubectl debug. Untuk informasi selengkapnya, lihat Membuat koneksi shell interaktif ke node Linux.
Untuk membuat koneksi SSH ke simpul Windows Server dari simpul lain, gunakan tombol SSH yang disediakan saat Anda membuat kluster AKS dan alamat IP internal simpul Windows Server.
Buka jendela terminal baru dan gunakan kubectl get pods untuk mendapatkan nama pod yang dimulai dengan kubectl debug.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx 1/1 Running 0 21s
Dalam contoh di atas, node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx adalah nama Pod yang dimulai dengan kubectl debug.
Menggunakan kubectl port-forward, Anda dapat membuka koneksi ke pod yang disebarkan:
$ kubectl port-forward node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx 2022:22
Forwarding from 127.0.0.1:2022 -> 22
Forwarding from [::1]:2022 -> 22
Contoh di atas mulai meneruskan lalu lintas jaringan dari port 2022 di komputer pengembangan Anda ke port 22 pada pod yang disebarkan. Saat menggunakan kubectl port-forward untuk membuka sambungan dan meneruskan lalu lintas jaringan, sambungan tetap terbuka hingga Anda menghentikan perintah kubectl port-forward.
Buka terminal baru dan gunakan kubectl get nodes untuk memperlihatkan alamat IP internal node Windows Server:
$ kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
aks-nodepool1-12345678-vmss000000 Ready agent 13m v1.19.9 10.240.0.4 <none> Ubuntu 18.04.5 LTS 5.4.0-1046-azure containerd://1.4.4+azure
aks-nodepool1-12345678-vmss000001 Ready agent 13m v1.19.9 10.240.0.35 <none> Ubuntu 18.04.5 LTS 5.4.0-1046-azure containerd://1.4.4+azure
aksnpwin000000 Ready agent 87s v1.19.9 10.240.0.67 <none> Windows Server 2019 Datacenter 10.0.17763.1935 docker://19.3.1
Dalam contoh di atas, 10.240.0.67 adalah alamat IP internal simpul Windows Server.
Buat koneksi SSH ke simpul Windows Server menggunakan alamat IP internal. Nama pengguna default untuk simpul AKS adalah azureuser. Terima permintaan untuk melanjutkan koneksi. Anda kemudian diberikan perintah bash dari simpul Windows Server:
$ ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.67
The authenticity of host '10.240.0.67 (10.240.0.67)' can't be established.
ECDSA key fingerprint is SHA256:1234567890abcdefghijklmnopqrstuvwxyzABCDEFG.
Are you sure you want to continue connecting (yes/no)? yes
[...]
Microsoft Windows [Version 10.0.17763.1935]
(c) 2018 Microsoft Corporation. All rights reserved.
azureuser@aksnpwin000000 C:\Users\azureuser>
Contoh di atas terhubung ke port 22 pada node Server Windows melalui port 2022 di komputer pengembangan Anda.
Catatan
Jika Anda lebih suka menggunakan autentikasi kata sandi, gunakan -o PreferredAuthentications=password. Contohnya:
ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' -o PreferredAuthentications=password azureuser@10.240.0.67
Menghapus akses SSH
Setelah selesai, exit sesi SSH, hentikan penerusan port apa pun, lalu exit sesi kontainer interaktif. Setelah sesi kontainer interaktif tertutup, hapus pod yang digunakan untuk akses SSH dengan kubectl delete pod.
kubectl delete pod node-debugger-aks-nodepool1-12345678-vmss000000-bkmmx
Langkah berikutnya
Jika Anda membutuhkan data pemecahan masalah tambahan, Anda dapat melihat log kubelet atau melihat simpul master Kubernetes.