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.
Simpul virtual memungkinkan komunikasi jaringan antara pod yang berjalan di kluster Azure Container Instances (ACI) dan AKS. Untuk menyediakan komunikasi ini, Anda membuat subnet jaringan virtual dan menetapkan izin yang didelegasikan. Simpul virtual hanya berfungsi dengan kluster AKS yang dibuat menggunakan jaringan tingkat lanjut (Azure CNI). Secara default, kluster AKS dibuat dengan jaringan dasar (kubenet). Artikel ini menunjukkan kepada Anda cara membuat jaringan virtual dan subnet, lalu menyebarkan kluster AKS yang menggunakan jaringan tingkat lanjut.
Artikel ini memperlihatkan kepada Anda cara menggunakan Azure CLI untuk membuat dan mengonfigurasi sumber daya jaringan virtual dan kluster AKS yang diaktifkan dengan simpul virtual.
Sebelum Anda mulai
Penting
Sebelum menggunakan simpul virtual dengan AKS, tinjau batasan simpul virtual AKS dan batasan jaringan virtual ACI. Batasan ini memengaruhi lokasi, konfigurasi jaringan, dan detail konfigurasi lainnya dari kluster AKS Dan simpul virtual Anda.
Anda memerlukan penyedia layanan ACI yang terdaftar dengan langganan Anda. Anda dapat memeriksa status pendaftaran penyedia ACI menggunakan
az provider listperintah .az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o tablePenyedia Microsoft.ContainerInstance harus melaporkan sebagai Terdaftar, seperti yang ditunjukkan dalam contoh output berikut:
Namespace RegistrationState RegistrationPolicy --------------------------- ------------------- -------------------- Microsoft.ContainerInstance Registered RegistrationRequiredJika penyedia ditampilkan sebagai NotRegistered, daftarkan penyedia menggunakan
az provider register.az provider register --namespace Microsoft.ContainerInstanceJika menggunakan Azure CLI, artikel ini memerlukan Azure CLI versi 2.0.49 atau yang lebih baru. Jalankan
az --versionuntuk menemukan versinya. Jika Anda perlu menginstal atau memperbarui, lihat Install Azure CLI. Anda juga dapat menggunakan Azure Cloud Shell.
Luncurkan Azure Cloud Shell
Azure Cloud Shell adalah shell interaktif gratis yang dapat Anda gunakan untuk menjalankan langkah-langkah dalam artikel ini. Ini memiliki alat Azure umum yang telah diinstal dan dikonfigurasi sebelumnya.
Untuk membuka Cloud Shell, pilih Coba dari sudut kanan atas blok kode. Anda juga dapat meluncurkan Cloud Shell di tab browser terpisah dengan membuka https://shell.azure.com/bash. Pilih Salin untuk menyalin blok kode, tempelkan ke Cloud Shell, dan tekan enter untuk menjalankannya.
Membuat grup sumber daya
Grup sumber daya Azure adalah grup logis tempat sumber daya Azure disebarkan dan dikelola.
Buat grup sumber daya menggunakan perintah
az group create.az group create --name myResourceGroup --location eastus
Buat jaringan virtual
Penting
Simpul virtual memerlukan jaringan virtual kustom dan subnet terkait. Ini tidak dapat dikaitkan dengan jaringan virtual yang sama dengan kluster AKS.
Buat jaringan virtual menggunakan
az network vnet createperintah . Contoh berikut membuat jaringan virtual bernama myVnet dengan awalan alamat 10.0.0.0/8 dan subnet bernama myAKSSubnet. Awalan alamat subnet ini default ke 10.240.0.0/16.az network vnet create \ --resource-group myResourceGroup \ --name myVnet \ --address-prefixes 10.0.0.0/8 \ --subnet-name myAKSSubnet \ --subnet-prefix 10.240.0.0/16Buat subnet tambahan untuk simpul virtual menggunakan
az network vnet subnet createperintah . Contoh berikut membuat subnet bernama myVirtualNodeSubnet dengan awalan alamat 10.241.0.0/16.az network vnet subnet create \ --resource-group myResourceGroup \ --vnet-name myVnet \ --name myVirtualNodeSubnet \ --address-prefixes 10.241.0.0/16
Membuat kluster AKS dengan identitas terkelola
Dapatkan ID subnet menggunakan perintah
az network vnet subnet show.az network vnet subnet show --resource-group myResourceGroup --vnet-name myVnet --name myAKSSubnet --query id -o tsvBuat kluster AKS menggunakan
az aks createperintah dan ganti<subnetId>dengan ID yang diperoleh pada langkah sebelumnya. Contoh berikut membuat kluster bernama myAKSCluster dengan lima simpul.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 5 \ --network-plugin azure \ --vnet-subnet-id <subnetId> \ --generate-ssh-keysSetelah beberapa menit, perintah menyelesaikan dan mengembalikan informasi berformat JSON tentang kluster.
Untuk informasi selengkapnya tentang identitas terkelola, lihat Menggunakan identitas terkelola.
Aktifkan fitur simpul virtual
Catatan
Jika Anda memiliki Kluster Azure Kubernetes Service yang dibuat yang menggunakan Azure CNI untuk Jaringan Lanjutan, Anda harus dapat mengaktifkan simpul virtual sebagai add-on melalui CLI.
Aktifkan simpul virtual menggunakan
az aks enable-addonsperintah . Contoh berikut menggunakan subnet bernama myVirtualNodeSubnet yang dibuat pada langkah sebelumnya.az aks enable-addons \ --resource-group myResourceGroup \ --name myAKSCluster \ --addons virtual-node \ --subnet-name myVirtualNodeSubnet
Berikan izin kepada identitas terkelola
Berikan peran Kontributor Jaringan pada subnet yang digunakan oleh simpul virtual kepada identitas terkelola untuk add-on simpul virtual yang bernama aciconnectorlinux-<aks-cluster-name>.
NODE_RG=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query nodeResourceGroup -o tsv)
PRINCIPAL_ID=$(az identity show --resource-group $NODE_RG --name aciconnectorlinux-myAKSCluster --query principalId -o tsv)
VIRTUAL_NODE_SUBNET_ID=$(az network vnet subnet show --resource-group myResourceGroup --vnet-name <VNET_NAME> --name myVirtualNodeSubnet --query id -o tsv)
az role assignment create --assignee $PRINCIPAL_ID --role "Network Contributor" --scope $VIRTUAL_NODE_SUBNET_ID
Menyambungkan ke kluster
Konfigurasikan
kubectluntuk terhubung ke kluster Kubernetes menggunakan perintahaz aks get-credentials. Langkah ini mengunduh kredensial dan mengonfigurasi CLI Kubernetes untuk menggunakannya.az aks get-credentials --resource-group myResourceGroup --name myAKSClusterVerifikasi koneksi ke kluster Anda menggunakan
kubectl getperintah , yang mengembalikan daftar node kluster.kubectl get nodesContoh output berikut menunjukkan simpul VM tunggal yang dibuat dan simpul virtual untuk Linux, virtual-node-aci-linux:
NAME STATUS ROLES AGE VERSION virtual-node-aci-linux Ready agent 28m v1.11.2 aks-agentpool-14693408-0 Ready agent 32m v1.11.2
Sebarkan aplikasi contoh
Buat file bernama
virtual-node.yamldan salin dalam YAML berikut. YAML menjadwalkan kontainer pada simpul dengan mendefinisikan nodeSelector dan toleration.apiVersion: apps/v1 kind: Deployment metadata: name: aci-helloworld spec: replicas: 1 selector: matchLabels: app: aci-helloworld template: metadata: labels: app: aci-helloworld spec: containers: - name: aci-helloworld image: mcr.microsoft.com/azuredocs/aci-helloworld ports: - containerPort: 80 nodeSelector: kubernetes.io/role: agent kubernetes.io/os: linux type: virtual-kubelet tolerations: - key: virtual-kubelet.io/provider operator: Exists - key: azure.com/aci effect: NoScheduleJalankan aplikasi menggunakan
kubectl applyperintah .kubectl apply -f virtual-node.yamlDapatkan daftar pod dan simpul terjadwal dengan menggunakan perintah
kubectl get podsdan argumen-o wide.kubectl get pods -o widePod dijadwalkan pada simpul virtual virtual-node-aci-linux, seperti yang ditunjukkan pada contoh output berikut:
NAME READY STATUS RESTARTS AGE IP NODE aci-helloworld-9b55975f-bnmfl 1/1 Running 0 4m 10.241.0.4 virtual-node-aci-linuxPod diberi alamat IP internal dari subnet jaringan virtual Azure yang dikhususkan untuk digunakan dengan node virtual.
Catatan
Jika Anda menggunakan gambar yang disimpan di Azure Container Registry, konfigurasikan dan gunakan rahasia Kubernetes. Keterbatasan simpul virtual saat ini adalah Anda tidak dapat menggunakan autentikasi principal layanan Microsoft Entra terintegrasi. Jika Anda tidak menggunakan kunci rahasia, pod yang dijadwalkan pada simpul virtual akan gagal memulai dan melaporkan kesalahan HTTP response status code 400 error code "InaccessibleImage".
Menguji pod simpul virtual
Uji pod yang berjalan pada simpul virtual dengan mengakses aplikasi demo menggunakan klien web. Karena pod diberi alamat IP internal, Anda dapat dengan cepat menguji konektivitas ini dari pod lain pada kluster AKS.
Buat pod pengujian dan lampirkan sesi terminal ke dalamnya menggunakan perintah berikut
kubectl run -it.kubectl run -it --rm testvk --image=mcr.microsoft.com/dotnet/runtime-deps:6.0Instal
curldalam pod menggunakanapt-get.apt-get update && apt-get install -y curlAkses alamat pod Anda menggunakan
curl, seperti http://10.241.0.4. Berikan alamat IP internal Anda sendiri yang ditunjukkan pada perintah sebelumnyakubectl get pods.curl -L http://10.241.0.4Aplikasi demo ditampilkan, seperti yang ditunjukkan dalam contoh output ringkas berikut:
<html> <head> <title>Welcome to Azure Container Instances!</title> </head> [...]Tutup sesi terminal pada pod pengujian Anda menggunakan
exit. Ketika sesi Anda berakhir, pod akan dihapus.
Menghapus simpul virtual
Hapus pod
aci-helloworldyang berjalan di simpul virtual dengan menggunakan perintahkubectl delete.kubectl delete -f virtual-node.yamlNonaktifkan simpul virtual menggunakan
az aks disable-addonsperintah .az aks disable-addons --resource-group myResourceGroup --name myAKSCluster --addons virtual-nodeHapus sumber daya jaringan virtual dan grup sumber daya menggunakan perintah berikut.
# Change the name of your resource group, cluster and network resources as needed RES_GROUP=myResourceGroup AKS_CLUSTER=myAKScluster AKS_VNET=myVnet AKS_SUBNET=myVirtualNodeSubnet # Get AKS node resource group NODE_RES_GROUP=$(az aks show --resource-group $RES_GROUP --name $AKS_CLUSTER --query nodeResourceGroup --output tsv) # Get network profile ID NETWORK_PROFILE_ID=$(az network profile list --resource-group $NODE_RES_GROUP --query "[0].id" --output tsv) # Delete the network profile az network profile delete --id $NETWORK_PROFILE_ID -y # Grab the service association link ID SAL_ID=$(az network vnet subnet show --resource-group $RES_GROUP --vnet-name $AKS_VNET --name $AKS_SUBNET --query id --output tsv)/providers/Microsoft.ContainerInstance/serviceAssociationLinks/default # Delete the service association link for the subnet az resource delete --ids $SAL_ID --api-version 2021-10-01 # Delete the subnet delegation to Azure Container Instances az network vnet subnet update --resource-group $RES_GROUP --vnet-name $AKS_VNET --name $AKS_SUBNET --remove delegations
Langkah selanjutnya
Dalam artikel ini, Anda menjadwalkan pod pada simpul virtual dan menetapkan alamat IP internal privat. Anda dapat membuat penyebaran layanan dan merutekan lalu lintas ke pod Anda melalui penyeimbang beban atau pengendali ingress. Untuk informasi selengkapnya, lihat Membuat pengontrol ingress dasar di AKS.
Simpul virtual seringkali merupakan salah satu komponen dari solusi penskalaan di AKS. Untuk informasi selengkapnya tentang solusi penskalaan, lihat artikel berikut ini: