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.
Anda mengakses simpul melalui autentikasi, metode mana yang bervariasi tergantung pada OS Node dan metode koneksi Anda. Anda mengautentikasi dengan aman terhadap simpul AKS Linux dan Windows melalui dua opsi yang dibahas dalam artikel ini. 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 kubectl debug atau alamat IP privat host.
Mengakses simpul menggunakan API Kubernetes
Metode ini memerlukan penggunaan kubectl debug 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-langkahnya, Anda perlu menggunakan Azure CLI yang mendukung versi 2.0.64 atau yang lebih baru. Jalankan az --version untuk memeriksa versi. Jika Anda perlu menginstal atau memperbarui, lihat Install Azure CLI.
Selesaikan langkah-langkah ini jika Anda tidak memiliki kunci SSH. Buat kunci SSH tergantung pada Gambar OS Node Anda, untuk macOS dan Linux, atau Windows. Pastikan Anda menyimpan pasangan kunci dalam format OpenSSH, hindari format yang tidak didukung seperti .ppk. Selanjutnya, lihat Mengelola konfigurasi SSH untuk menambahkan kunci ke kluster Anda.
Linux dan macOS
Pengguna Linux dan macOS dapat mengakses simpul mereka menggunakan kubectl debug atau Alamat IP privat mereka. Pengguna Windows harus langsung ke bagian Proksi Windows Server untuk mendapatkan solusi SSH melalui proksi.
Menghubungkan menggunakan perintah kubectl debug
Untuk membuat koneksi shell interaktif, gunakan kubectl debug perintah untuk menjalankan kontainer istimewa pada simpul Anda.
Untuk membuat daftar simpul Anda, gunakan perintah
kubectl get nodes: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
kubectl debuguntuk 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/cbl-mariner/busybox:2.0Contoh 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.
Note
Anda dapat berinteraksi dengan sesi node dengan menjalankan
chroot /hostdari kontainer istimewa.
Keluar dari mode debug kubectl
Setelah selesai dengan simpul Anda, masukkan perintah exit untuk mengakhiri sesi shell interaktif tersebut. Setelah sesi kontainer interaktif ditutup, hapus pod debugging yang digunakan dengan kubectl delete pod.
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 sambungkan ke simpul Windows Server dari simpul tersebut menggunakan SSH.
Untuk menyambungkan ke simpul lain di kluster, gunakan kubectl debug perintah . Untuk informasi selengkapnya, ikuti langkah-langkah di atas 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.
Important
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 --generate-ssh-keys parameter . Jika Anda ingin menggunakan kunci SSH Anda sendiri, Anda dapat menggunakan az aks update untuk mengelola kunci SSH pada kluster AKS yang ada. Untuk informasi selengkapnya, lihat mengelola akses simpul SSH.
Note
Jika simpul proksi Linux Anda tidak berfungsi atau tidak responsif, gunakan metode Azure Bastion untuk menyambungkan sebagai gantinya.
kubectl debugGunakan 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/cbl-mariner/busybox:2.0Contoh 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
kubectl get podsperintah untuk mendapatkan nama pod yang dimulai olehkubectl debug.kubectl get podsContoh output:
NAME READY STATUS RESTARTS AGE node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx 1/1 Running 0 21sDalam output sampel, node-debugger-aks-nodepool1-37663765-vmss000000-bkmmx adalah nama pod yang dimulai oleh
kubectl debug.kubectl port-forwardGunakan 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
2022pada komputer pengembangan Anda ke port22pada pod yang disebarkan. Saat menggunakankubectl port-forwarduntuk membuka koneksi dan meneruskan lalu lintas jaringan, koneksi tetap terbuka hingga Anda menghentikankubectl port-forwardperintah.Buka terminal baru dan jalankan perintah
kubectl get nodesuntuk menampilkan alamat IP internal simpul Windows Server:kubectl get no -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.8Dalam contoh sebelumnya, 10.224.0.62 adalah alamat IP internal simpul Windows Server.
Buat koneksi SSH ke simpul Windows Server menggunakan alamat IP internal, dan sambungkan ke port
22melalui port2022pada komputer pengembangan Anda. Nama pengguna default untuk simpul AKS adalah azureuser. Terima perintah untuk melanjutkan koneksi. Anda kemudian diberikan perintah 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)? yesNote
Jika Anda lebih suka menggunakan autentikasi kata sandi, sertakan parameter
-o PreferredAuthentications=password. 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
hostprocess.yaml. Dalam skrip, gantiAKSWINDOWSNODENAMEdengan nama simpul AKS Windows.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 Windows HPC di simpul Windows yang ditentukan.Gunakan
kubectl exec -it [HPC-POD-NAME] -- powershell.Anda dapat menjalankan perintah PowerShell apa pun di dalam kontainer HPC untuk mengakses simpul Windows.
Note
Anda perlu mengalihkan folder akar ke C:\ di dalam kontainer HPC untuk mengakses file di simpul Windows.
SSH menggunakan Azure Bastion untuk Windows
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 Menyambungkan dengan Azure Bastion untuk detail selengkapnya.
SSH menggunakan IP privat dari API AKS
Jika Anda tidak memiliki akses ke API Kubernetes, Anda bisa mendapatkan akses ke properti seperti Node IP dan Node Name melalui API kumpulan agen AKS , (tersedia pada versi 07-01-2024 stabil atau di atasnya) untuk terhubung ke node AKS.
Membuat koneksi shell interaktif ke simpul menggunakan alamat IP
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 belum memiliki lingkungan yang dikonfigurasi, Anda dapat menggunakan Azure Bastion untuk membuat proksi tempat Anda dapat melakukan SSH ke node kluster. Pastikan Azure Bastion disebarkan di jaringan virtual yang sama dengan kluster.
Dapatkan IP privat menggunakan perintah
az aks machine list, menargetkan semua VM dalam node pool tertentu dengan opsi--nodepool-name.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
--machine-namebendera: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 semua 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 komputer Linux. Untuk komputer Windows, lihat Menyambungkan dengan Azure Bastion.
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.