Gunakan Simpul Virtual v2 di Azure Kubernetes Service (AKS) (pratinjau)

Virtual Node v2 adalah tumpukan Simpul Virtual yang ditingkatkan yang memperluas AKS di luar simpul berbasis VM dengan menjalankan pod pada komputasi tanpa server di Azure Container Instances (ACI). Beban kerja meledak ke ACI dalam hitungan detik tanpa menunggu simpul baru diprovisikan, dan Anda hanya membayar komputasi yang Anda gunakan saat pod sedang berjalan. Simpul Virtual v2 dikirimkan sebagai ekstensi kluster AKS.

Important

Fitur pratinjau AKS tersedia atas dasar layanan mandiri dan pendaftaran sukarela. Pratinjau disediakan "apa adanya" dan "sebagaimana tersedia," dan pratinjau tersebut dikecualikan dari perjanjian tingkat layanan (SLA) serta garansi terbatas. Fitur pratinjau AKS sebagian didukung oleh dukungan pelanggan sebatas upaya terbaik. Dengan demikian, fitur-fitur ini tidak dimaksudkan untuk penggunaan produksi. Untuk informasi lebih lanjut, lihat artikel dukungan berikut ini:

Dukungan

  • Kontainer Inisialisasi
  • Alias host
  • Kait siklus hidup kontainer (postStart dan preStop)
  • kubectl exec dengan argumen
  • Volume persisten dan PVC (hanya Azure Files)
  • Peering Jaringan VNet
  • Keluar yang dikontrol NSG
  • NAT Gateway untuk keluar
  • Kontainer rahasia
  • Hingga 200 pod per simpul virtual

Limitations

Fitur-fitur berikut tidak didukung:

  • Windows Kontainer
  • DaemonSets
  • Penerusan port
  • IPv6
  • Rentang IP yang diizinkan untuk server API
  • Azure CNI Overlay (lapisan jaringan CNI Azure)
  • Cilium atau NPM untuk kebijakan jaringan
  • Bawa jaringan virtual (BYO) Anda sendiri
  • Beberapa instans ekstensi per kluster
  • Kelompok cadangan

Ketersediaan sumber daya dan batas kuota

Simpul Virtual v2 tersedia di semua wilayah cloud publik Azure di mana Azure Container Instances mendukung SKU VNet. Untuk informasi selengkapnya, lihat Ketersediaan sumber daya & batas kuota untuk ACI.

Prerequisites

  • Azure CNI dalam mode node-subnet
  • Calico atau tidak ada sebagai kebijakan jaringan
  • Identitas beban kerja diaktifkan
  • Setidaknya satu kumpulan simpul dengan ukuran VM 4+ vCPU dan memori 16+ GiB. Setiap simpul virtual mencadangkan sekitar 3 vCPU dan memori 12 GiB pada simpul AKS di kluster Anda, jadi pastikan simpul Anda memiliki sumber daya yang cukup.
  • k8s-extension versi 1.8 atau lebih tinggi
  • kubectl 1.30 atau yang lebih baru

Daftarkan penyedia sumber daya ACI:

az provider register --namespace Microsoft.ContainerInstance

Note

Jalankan perintah berikut jika Anda mengalami kesalahan pada tahap apa pun dari proses pengaktifan ekstensi.

az provider register --namespace Microsoft.KubernetesConfig

Aktifkan Simpul Virtual v2

Instal ekstensi:

az k8s-extension create \
    --name <extension-name> \
    --extension-type Microsoft.virtualnodes \
    --cluster-name <cluster-name> \
    --resource-group <resource-group> \
    --cluster-type managedClusters \
    --configuration-settings replicaCount=1   # specifies number of virtual nodes - optional

Mengonfigurasi pengaturan ekstensi

Operasi buat dan perbarui mendukung pengaturan konfigurasi berikut.

Pengaturan konfigurasi Description
replicaCount Jumlah simpul virtual.
admissionControllerReplicaCount Jumlah pod pengontrol penerimaan.
podAnnotations Anotasi ditambahkan ke pod infrastruktur sebagai peta kunci-nilai.
nodeSelector Label yang memilih simpul AKS yang menghosting infrastruktur dan pod pengontrol penerimaan.
tolerations Toleransi yang diterapkan pada pod pengontrol infrastruktur dan penerimaan.
affinity Pengaturan afinitas tambahan digabungkan dengan aturan afinitas AKS yang diperlukan.
zones Zona ketersediaan yang dibatasi titik koma tempat pod disebarkan.
nodeLabels Label ditambahkan ke simpul virtual sebagai pasangan yang dipisahkan key=value koma.

Label yang diizinkan kubernetes.io adalah:

  • beta.kubernetes.io/arch
  • beta.kubernetes.io/instance-type
  • beta.kubernetes.io/os
  • failure-domain.beta.kubernetes.io/region
  • failure-domain.beta.kubernetes.io/zone
  • kubernetes.io/arch
  • kubernetes.io/hostname
  • kubernetes.io/os
  • node.kubernetes.io/instance-type
  • topology.kubernetes.io/region
  • topology.kubernetes.io/zone

Verifikasi ekstensi:

az k8s-extension show \
    --name <extension-name> \
    --cluster-type managedClusters \
    --cluster-name <cluster-name> \
    --resource-group <resource-group>

Konfirmasikan provisioningState adalah Succeeded. Ini bisa tinggal Pending selama beberapa menit.

Verifikasi pod ekstensi berjalan di vn-system namespace :

kubectl get pods --namespace vn-system

Memperbarui ekstensi

az k8s-extension update --name <extension-name> --cluster-name <aks-cluster-name> --resource-group <aks-resource-group> --cluster-type managedClusters

Note

Parameter --auto-upgrade-mode mendukung none, patch, atau compatible. Untuk menyematkan versi ekstensi tertentu dengan menggunakan --version, atur --auto-upgrade-mode ke none.

akses Azure Container Registry

Untuk menarik gambar dari Azure Container Registry privat (ACR), gunakan identitas terkelola ekstensi atau rahasia penarikan gambar Kubernetes.

Gunakan identitas terkelola untuk ekstensi

Berikan peran AcrPull kepada identitas terkelola yang dibuat untuk ekstensi. Peran ini memberikan semua pod yang berjalan pada akses simpul virtual ekstensi untuk menarik gambar dari registri tanpa konfigurasi pod tambahan. Anda harus memiliki izin untuk membuat penetapan peran pada registri.

Dapatkan ID utama dari identitas terkelola ekstensi:

$extensionPrincipalId = az k8s-extension show --name <extension-name> --cluster-name <aks-cluster-name> --resource-group <aks-resource-group> --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv

Dapatkan ID sumber daya registri kontainer:

$acrId = az acr show --name <acr-name> --resource-group <acr-resource-group> --query id --output tsv

Tetapkan AcrPull peran ke identitas terkelola ekstensi di cakupan registri:

az role assignment create --assignee-object-id $extensionPrincipalId --assignee-principal-type ServicePrincipal --role AcrPull --scope $acrId

Tunggu beberapa menit hingga penetapan peran disebarluaskan sebelum menyebarkan beban kerja yang menarik gambar dari registri.

Menggunakan rahasia penarikan gambar

Untuk petunjuknya, lihat Kubernetes Pull Secret untuk Autentikasi ACR.

Menyebarkan beban kerja ke Simpul Virtual v2

Jadwalkan pod pada simpul virtual menggunakan pemilih virtualization: virtualnode2 simpul dan virtual-kubelet.io/provider toleransi:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo
spec:
  replicas: 3
  selector:
    matchLabels:
      app: demo
  template:
    metadata:
      labels:
        app: demo
    spec:
      containers:
        - name: hello
          image: mcr.microsoft.com/azuredocs/aci-helloworld
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: "1"
              memory: 1Gi
      nodeSelector:
        virtualization: virtualnode2
        kubernetes.io/os: linux
      tolerations:
        - key: virtual-kubelet.io/provider
          operator: Exists
          effect: NoSchedule

Simpan manifes sebagai demo.yaml, lalu terapkan.

kubectl apply -f demo.yaml

Verifikasi pod sedang berjalan.

kubectl get pods -l app=demo -o wide

Nonaktifkan Simpul Virtual v2

Peringatan

Saat Anda menonaktifkan ekstensi simpul virtual, kluster AKS terputus dari grup kontainer Azure Container Instances pencadangan. Untuk menghindari instans tanpa induk yang terus berjalan dan dikenakan biaya, hapus beban kerja apa pun yang berjalan pada simpul virtual sebelum Anda menonaktifkan ekstensi.

Hapus ekstensi dan bersihkan sumber daya simpul virtual.

az k8s-extension delete \
    --name <extension-name> \
    --cluster-name <cluster-name> \
    --resource-group <resource-group> \
    --cluster-type managedClusters
kubectl delete node <virtual-node-name>

Langkah berikutnya