Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sepanjang siklus hidup kluster Azure Kubernetes Service (AKS), Anda akhirnya perlu langsung mengakses simpul AKS. Akses ini bisa untuk operasi pemeliharaan, pengumpulan log, atau pemecahan masalah.
Artikel ini menjelaskan dua opsi untuk koneksi aman terhadap AKS Linux dan simpul Windows. Salah satu mengharuskan Anda memiliki akses API Kubernetes, dan yang lainnya adalah melalui AKS ARM API, yang menyediakan informasi IP privat langsung. Untuk alasan keamanan, node AKS tidak terekspos ke internet. Sebagai gantinya, untuk terhubung langsung ke simpul AKS apa pun, Anda perlu menggunakan salah satu atau alamat IP privat host.
Mengakses simpul dengan API Kubernetes
Metode ini memerlukan perintah .
Sebelum Anda mulai
Panduan ini menunjukkan kepada Anda cara membuat koneksi ke simpul AKS dan memperbarui kunci SSH kluster AKS Anda. Untuk mengikuti langkah-langkah ini, Anda memerlukan Azure CLI versi 2.0.64 atau yang lebih baru. Jalankan untuk memeriksa versi. Jika Anda perlu menginstal atau meningkatkan, lihat Install Azure CLI.
Selesaikan langkah-langkah ini jika Anda tidak memiliki kunci SSH. Buat kunci SSH tergantung pada gambar OS simpul Anda, untuk macOS dan Linux, atau Windows. Simpan pasangan kunci dalam format OpenSSH dan hindari format yang tidak didukung seperti . Selanjutnya, lihat Mengelola konfigurasi SSH untuk menambahkan kunci ke kluster Anda.
Linux dan macOS
Pengguna Linux dan macOS dapat mengakses simpul mereka menggunakan atau alamat IP privat mereka. Pengguna Windows harus melewati ke bagian proksi Windows Server untuk solusi SSH melalui proksi.
Menghubungkan dengan kubectl debug
Untuk membuat koneksi shell interaktif, gunakan perintah untuk menjalankan kontainer istimewa pada simpul Anda.
Untuk membuat daftar simpul Anda, gunakan perintah :
kubectl get nodes -o wideContoh output:
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE aks-nodepool1-37663765-vmss000000 Ready agent 166m v1.25.6 10.224.0.33 <none> Ubuntu 22.04.2 LTS aks-nodepool1-37663765-vmss000001 Ready agent 166m v1.25.6 10.224.0.4 <none> Ubuntu 22.04.2 LTS aksnpwin000000 Ready agent 160m v1.25.6 10.224.0.62 <none> Windows Server 2022 DatacenterGunakan perintah untuk memulai kontainer dengan hak istimewa pada simpul Anda dan sambungkan ke kontainer tersebut.
kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/azurelinux/busybox:1.36Contoh output:
Creating debugging pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx with container debugger on node aks-nodepool1-37663765-vmss000000. If you don't see a command prompt, try pressing enter. root@aks-nodepool1-37663765-vmss000000:/#Anda sekarang memiliki akses ke simpul melalui kontainer istimewa yang berfungsi sebagai pod debugging.
Catatan
Anda dapat berinteraksi dengan sesi node dengan menjalankan dari kontainer istimewa.
Keluar dari mode debug kubectl
Setelah selesai dengan simpul Anda, masukkan perintah untuk mengakhiri sesi shell interaktif tersebut. Setelah sesi kontainer interaktif ditutup, hapus pod debugging yang digunakan dengan .
kubectl delete pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx
Koneksi proksi Windows Server untuk SSH
Ikuti langkah-langkah ini sebagai solusi untuk menyambungkan dengan SSH pada simpul Windows Server.
Membuat server proksi
Saat ini, Anda tidak dapat tersambung ke simpul Windows Server secara langsung dengan menggunakan kubectl debug. Sebagai gantinya, Anda harus terlebih dahulu terhubung ke node lain di kluster dengan kubectl, lalu menyambungkan ke simpul Windows Server dari simpul tersebut menggunakan SSH.
Untuk menyambungkan ke simpul lain di kluster, gunakan perintah . Untuk informasi selengkapnya, ikuti langkah-langkah sebelumnya di bagian kubectl. Buat koneksi SSH ke simpul Windows Server dari simpul lain menggunakan kunci SSH yang disediakan saat Anda membuat kluster AKS dan alamat IP internal simpul Windows Server.
Penting
Langkah-langkah berikut untuk membuat koneksi SSH ke simpul Windows Server dari simpul lain hanya dapat digunakan jika Anda membuat kluster AKS menggunakan Azure CLI dengan parameter --generate-ssh-keys. Jika Anda ingin menggunakan kunci SSH Anda sendiri, Anda dapat menggunakan untuk mengelola kunci SSH pada kluster AKS yang ada. Untuk informasi selengkapnya, lihat mengelola akses simpul SSH.
Catatan
Jika node proksi Linux Anda tidak berfungsi atau tidak responsif, gunakan metode Azure Bastion untuk menyambungkan sebagai gantinya.
Gunakan perintah untuk memulai kontainer istimewa pada simpul proksi (Linux) Anda dan sambungkan ke kontainer tersebut.
kubectl debug node/aks-nodepool1-37663765-vmss000000 -it --image=mcr.microsoft.com/azurelinux/busybox:1.36Contoh output:
Creating debugging pod node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx with container debugger on node aks-nodepool1-37663765-vmss000000. If you don't see a command prompt, try pressing enter. root@aks-nodepool1-37663765-vmss000000:/#Buka jendela terminal baru dan gunakan perintah untuk mendapatkan nama pod yang dimulai oleh .
kubectl get podsContoh output:
NAME READY STATUS RESTARTS AGE node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 1/1 Running 0 21sDalam output sampel, adalah nama pod yang dimulai oleh .
Gunakan perintah untuk membuka koneksi ke pod yang disebarkan:
kubectl port-forward node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 2022:22Contoh output:
Forwarding from 127.0.0.1:2022 -> 22 Forwarding from [::1]:2022 -> 22Contoh sebelumnya mulai meneruskan lalu lintas jaringan dari port pada komputer pengembangan Anda ke port pada pod yang disebarkan. Saat menggunakan untuk membuka koneksi dan meneruskan lalu lintas jaringan, koneksi tetap terbuka hingga Anda menghentikan perintah.
Buka terminal baru dan jalankan perintah
kubectl get nodesuntuk menampilkan alamat IP internal simpul Windows Server:kubectl get nodes -o custom-columns='NAME:metadata.name,INTERNAL_IP:status.addresses[?(@.type == "InternalIP")].address'Contoh output:
NAME INTERNAL_IP aks-nodepool1-19409214-vmss000003 10.224.0.8 aksnpwin000000 10.224.0.62Dalam contoh sebelumnya,
10.224.0.62adalah alamat IP internal dari simpul Windows Server.Buat koneksi SSH ke simpul Windows Server menggunakan alamat IP internal, dan sambungkan ke port
22melalui port2022di komputer pengembangan Anda. Nama pengguna default untuk simpul AKS adalah azureuser. Terima perintah untuk melanjutkan koneksi. Anda kemudian diberikan prompt bash dari simpul Windows Server Anda:ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.224.0.62Contoh output:
The authenticity of host '10.224.0.62 (10.224.0.62)' can't be established. ECDSA key fingerprint is SHA256:1234567890abcdefghijklmnopqrstuvwxyzABCDEFG. Are you sure you want to continue connecting (yes/no)? yesCatatan
Jika Anda lebih suka menggunakan autentikasi kata sandi, sertakan parameter . Contohnya:
ssh -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' -o PreferredAuthentications=password azureuser@10.224.0.62
Menggunakan kontainer proses host untuk mengakses simpul Windows
Jalankan skrip berikut untuk membuat . Dalam skrip, ganti
AKSWINDOWSNODENAMEdengan nama simpul Windows AKS.Spesifikasi ini menggunakan gambar dasar nanoserver. Gambar dasar tidak memiliki PowerShell, tetapi karena berjalan sebagai kontainer proses host (HPC), PowerShell tersedia di VM yang mendasarinya.
apiVersion: v1 kind: Pod metadata: labels: pod: hpc name: hpc spec: securityContext: windowsOptions: hostProcess: true runAsUserName: "NT AUTHORITY\\SYSTEM" hostNetwork: true containers: - name: hpc image: mcr.microsoft.com/windows/nanoserver:ltsc2022 # Use nanoserver:1809 for WS2019 command: - powershell.exe - -Command - "Start-Sleep 2147483" imagePullPolicy: IfNotPresent nodeSelector: kubernetes.io/os: windows kubernetes.io/hostname: AKSWINDOWSNODENAME tolerations: - effect: NoSchedule key: node.kubernetes.io/unschedulable operator: Exists - effect: NoSchedule key: node.kubernetes.io/network-unavailable operator: Exists - effect: NoExecute key: node.kubernetes.io/unreachable operator: ExistsJalankan
kubectl apply -f hostprocess.yamluntuk menyebarkan HPC Windows dalam simpul Windows yang ditentukan.Gunakan .
Anda dapat menjalankan perintah PowerShell apa pun di dalam kontainer HPC untuk mengakses simpul Windows.
Catatan
Anda perlu mengalihkan folder akar ke C:\ di dalam kontainer HPC untuk mengakses file di simpul Windows.
SSH dengan Azure Bastion
Jika simpul proksi Linux Anda tidak dapat dijangkau, menggunakan Azure Bastion sebagai proksi adalah alternatif. Metode ini mengharuskan Anda menyiapkan host Azure Bastion untuk jaringan virtual tempat kluster berada. Lihat Hubungkan dengan Azure Bastion untuk detail selengkapnya.
Melakukan koneksi SSH menggunakan alamat IP privat dari jaringan virtual kluster
Untuk kenyamanan, simpul AKS diekspos pada jaringan virtual kluster melalui alamat IP privat. Namun, Anda harus berada di jaringan virtual kluster untuk melakukan SSH ke simpul.
Jika Anda tidak memiliki akses ke API Kubernetes, Anda bisa mendapatkan akses ke properti seperti dan melalui API kumpulan agen AKS , (tersedia pada versi stabil atau di atasnya) untuk terhubung ke node AKS. Dapatkan IP privat menggunakan perintah , menargetkan semua VM dalam node pool tertentu dengan opsi .
az aks machine list --resource-group myResourceGroup --cluster-name myAKSCluster --nodepool-name nodepool1 -o tableContoh output berikut menunjukkan alamat IP internal semua simpul di kumpulan simpul:
Name Ip Family --------------------------------- ----------- ----------- aks-nodepool1-33555069-vmss000000 10.224.0.5 IPv4 aks-nodepool1-33555069-vmss000001 10.224.0.6 IPv4 aks-nodepool1-33555069-vmss000002 10.224.0.4 IPv4Untuk menargetkan simpul tertentu di dalam kumpulan simpul, gunakan bendera:
az aks machine show --cluster-name myAKScluster --nodepool-name nodepool1 -g myResourceGroup --machine-name aks-nodepool1-33555069-vmss000000 -o tableContoh output berikut menunjukkan alamat IP internal dari simpul yang ditentukan:
Name Ip Family --------------------------------- ----------- ----------- aks-nodepool1-33555069-vmss000000 10.224.0.5 IPv4SSH ke simpul menggunakan alamat IP privat yang Anda peroleh di langkah sebelumnya. Langkah ini hanya berlaku untuk simpul Linux.
ssh -i /path/to/private_key.pem azureuser@10.224.0.33
Langkah selanjutnya
Jika membutuhkan lebih banyak data pemecahan masalah, Anda dapat melihat log kubelet atau melihat log sarana kontrol Kube.
Untuk mempelajari tentang mengelola kunci SSH Anda, lihat Mengelola konfigurasi SSH.