Baca dalam bahasa Inggris

Bagikan melalui


Membuat dan mengonfigurasi kluster Azure Kubernetes Services (AKS) untuk menggunakan simpul virtual menggunakan Azure CLI

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 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 Anda dan simpul virtual.

  • Anda memerlukan penyedia layanan ACI yang terdaftar dengan langganan Anda. Anda dapat memeriksa status pendaftaran penyedia ACI menggunakan az provider list perintah .

    az provider list --query "[?contains(namespace,'Microsoft.ContainerInstance')]" -o table
    

    Penyedia Microsoft.ContainerInstance harus dalam status Terdaftar, seperti yang ditunjukkan dalam contoh output berikut:

    Namespace                    RegistrationState    RegistrationPolicy
    ---------------------------  -------------------  --------------------
    Microsoft.ContainerInstance  Registered           RegistrationRequired
    

    Jika penyedia menunjukkan sebagai NotRegistered, daftarkan penyedia menggunakan az provider register.

    az provider register --namespace Microsoft.ContainerInstance
    
  • Jika menggunakan Azure CLI, artikel ini memerlukan Azure CLI versi 2.0.49 atau yang lebih baru. Jalankan az --version untuk menemukan versinya. Jika Anda perlu memasang atau meningkatkan, lihat Memasang Azure CLI. Anda juga dapat menggunakan Azure Cloud Shell.

Meluncurkan 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 masukkan untuk menjalankannya.

Buat grup sumber daya

Grup sumber daya Azure adalah grup logis tempat sumber daya Azure disebarkan dan dikelola.

  • Buat grup sumber daya menggunakan az group create perintah .

    az group create --name myResourceGroup --location eastus
    

Membuat jaringan virtual

Penting

Simpul virtual memerlukan jaringan virtual kustom dan subnet terkait. Ini tidak dapat dikaitkan dengan jaringan virtual yang sama dengan kluster AKS.

  1. Buat jaringan virtual menggunakan az network vnet create perintah . 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/16
    
  2. Buat subnet tambahan untuk simpul virtual menggunakan az network vnet subnet create perintah . 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

  1. Dapatkan ID subnet menggunakan az network vnet subnet show perintah .

    az network vnet subnet show --resource-group myResourceGroup --vnet-name myVnet --name myAKSSubnet --query id -o tsv
    
  2. Buat kluster AKS menggunakan az aks create perintah 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-keys
    

    Setelah beberapa menit, perintah tersebut menyelesaikan dan mengembalikan informasi berformat JSON tentang kluster.

Untuk informasi selengkapnya tentang identitas terkelola, lihat Menggunakan identitas terkelola.

Aktifkan addon simpul virtual

Catatan

Jika Anda memiliki Kluster Azure Kubernetes Service yang dibuat yang menggunakan Azure CNI untuk Advanced Netowrking, Anda harus dapat mengaktifkan simpul virtual sebagai add-on menggunakan CLI.

  • Aktifkan simpul virtual menggunakan az aks enable-addons perintah . 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
    

Menyambungkan ke kluster

  1. Konfigurasikan kubectl untuk terhubung ke kluster Kubernetes menggunakan perintah az aks get-credentials. Langkah ini mengunduh kredensial dan mengonfigurasi Kubernetes CLI untuk menggunakannya.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Verifikasi koneksi ke kluster Anda menggunakan kubectl get perintah , yang mengembalikan daftar node kluster.

    kubectl get nodes
    

    Contoh 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

  1. Buat file bernama virtual-node.yaml dan 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
            beta.kubernetes.io/os: linux
            type: virtual-kubelet
          tolerations:
          - key: virtual-kubelet.io/provider
            operator: Exists
          - key: azure.com/aci
            effect: NoSchedule
    
  2. Jalankan aplikasi menggunakan kubectl apply perintah .

    kubectl apply -f virtual-node.yaml
    
  3. Dapatkan daftar pod dan simpul terjadwal menggunakan kubectl get pods perintah dengan -o wide argumen .

    kubectl get pods -o wide
    

    Pod 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-linux
    

    Pod ini diberi alamat IP internal dari subnet jaringan virtual Azure yang didelegasikan untuk digunakan dengan simpul virtual.

Catatan

Jika Anda menggunakan gambar yang tersimpan di Azure Container Registry, konfigurasikan dan gunakan rahasia Kube. Batasan simpul virtual saat ini adalah Anda tidak dapat menggunakan autentikasi perwakilan layanan Microsoft Entra terintegrasi. Jika Anda tidak menggunakan 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

  1. Uji pod yang berjalan pada simpul virtual dengan menelusuri ke aplikasi demo dengan klien web. Karena pod diberi alamat IP internal, Anda dapat dengan cepat menguji konektivitas ini dari pod lain pada kluster AKS.

  2. 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.0
    
  3. Instal curl di pod menggunakan apt-get.

    apt-get update && apt-get install -y curl
    
  4. Akses alamat pod Anda menggunakan curl, seperti http://10.241.0.4. Berikan alamat IP internal Anda sendiri yang ditunjukkan pada perintah sebelumnya kubectl get pods .

    curl -L http://10.241.0.4
    

    Aplikasi demo ditampilkan, seperti yang ditunjukkan dalam output contoh ringkas berikut:

    <html>
    <head>
      <title>Welcome to Azure Container Instances!</title>
    </head>
    [...]
    
  5. Tutup sesi terminal ke pod pengujian Anda dengan exit. Ketika sesi Anda berakhir, pod akan dihapus.

Hapus simpul virtual

  1. Hapus pod yang aci-helloworld berjalan pada simpul virtual menggunakan kubectl delete perintah .

    kubectl delete -f virtual-node.yaml
    
  2. Nonaktifkan simpul virtual menggunakan az aks disable-addons perintah .

    az aks disable-addons --resource-group myResourceGroup --name myAKSCluster --addons virtual-node
    
  3. Hapus 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 berikutnya

Dalam artikel ini, Anda menjadwalkan pod pada simpul virtual dan menetapkan alamat IP internal privat. Sebagai gantinya, Anda dapat membuat layanan penyebaran dan merutekan lalu lintas ke pod Anda melalui load balancer atau ingress controller. Untuk informasi selengkapnya, lihat Membuat ingress controller 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: