Použití virtuálních uzlů v2 v Azure Kubernetes Service (AKS) (Preview)

Virtuální uzly v2 je vylepšený zásobník virtuálních uzlů, který rozšiřuje AKS nad uzly založené na virtuálních počítačích spouštěním podů na bezserverových výpočetních prostředcích v Azure Container Instances (ACI). Úlohy se zprovozní do ACI během několika sekund, aniž by čekaly na zřízení nových uzlů a platíte jenom za výpočetní prostředky, které používáte, zatímco jsou pody spuštěné. Virtuální uzly v2 se doručují jako rozšíření clusteru AKS.

Important

Funkce AKS ve verzi Preview jsou k dispozici na bázi samoobsluhy a dobrovolného přihlášení. Ukázky jsou poskytovány "tak, jak jsou" a "dle dostupnosti" a jsou vyloučeny ze smluv o úrovni služeb a z omezené záruky. Předběžné verze AKS jsou částečně pokryty zákaznickou podporou podle možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:

Podporováno

  • Inicializační kontejnery
  • Aliasy hostitele
  • Háky životního cyklu kontejnerů (postStart a preStop)
  • kubectl exec s argumenty
  • Trvalé svazky a pvcs (pouze Azure Files)
  • Propojení virtuálních sítí
  • Výchozí přenos dat řízený skupinou zabezpečení sítě
  • NAT Gateway pro výchozí přenos dat
  • Důvěrné kontejnery
  • Až 200 podů na virtuální uzel

Limitations

Následující funkce nejsou podporované:

  • Kontejnery Windows
  • DaemonSets
  • Přesměrování portů
  • protokol IPv6
  • Rozsahy IP adres autorizovaných serverem rozhraní API
  • Azure CNI překryvná vrstva
  • Cilium nebo NPM jako síťová zásada
  • Používání vlastní virtuální sítě (BYO)
  • Více instancí rozšíření na cluster
  • Pohotovostní fondy

Dostupnost prostředků a omezení kvót

Virtuální uzly v2 jsou dostupné ve všech Azure oblastech veřejného cloudu, kde Azure Container Instances podporuje skladové položky virtuální sítě. Další informace najdete v tématu Omezení dostupnosti prostředků a kvót pro ACI.

Prerequisites

  • Azure CNI v režimu podsítě uzlu
  • Calico nebo žádná jako zásady sítě
  • Povolená identita úloh
  • Alespoň jeden fond uzlů s velikostí virtuálního počítače 4 a více virtuálních procesorů a 16+ GiB paměti. Každý virtuální uzel si v clusteru vyhrazuje přibližně 3 virtuální procesory a 12 GiB paměti na uzlu AKS, takže zajistěte, aby uzly měly dostatek prostředků.
  • Rozšíření k8s verze 1.8 nebo vyšší
  • kubectl 1.30 nebo novější

Zaregistrujte poskytovatele prostředků ACI:

az provider register --namespace Microsoft.ContainerInstance

Note

Pokud v jakékoli fázi procesu povolení rozšíření dojde k chybě, spusťte následující příkaz.

az provider register --namespace Microsoft.KubernetesConfig

Povolení virtuálních uzlů v2

Nainstalujte rozšíření:

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

Konfigurace nastavení rozšíření

Operace vytváření a aktualizace podporují následující nastavení konfigurace.

Nastavení konfigurace Description
replicaCount Počet virtuálních uzlů
admissionControllerReplicaCount Počet podů kontroleru přístupu
podAnnotations Poznámky přidané do podů infrastruktury jako mapa klíč-hodnota
nodeSelector Popisky, které vyberou uzly AKS, které hostují pody infrastruktury a kontroleru přístupu.
tolerations Tolerance použité u podů infrastruktury a kontroleru přístupu
affinity Další nastavení spřažení sloučená s požadovanými pravidly spřažení AKS
zones Zóny dostupnosti oddělené středníkem, ve kterých jsou nasazeny pody.
nodeLabels Popisky přidané do virtuálních uzlů jako dvojice oddělené key=value čárkami

Povolené kubernetes.io popisky jsou:

  • 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

Ověřte rozšíření:

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

Potvrďte, že provisioningState je Succeeded. Může zůstat Pending několik minut.

Ověřte, že pody rozšíření běží v vn-system oboru názvů:

kubectl get pods --namespace vn-system

Aktualizace rozšíření

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

Note

Parametr --auto-upgrade-mode podporuje none, patchnebo compatible. Pokud chcete připnout konkrétní verzi rozšíření pomocí --versionparametru , nastavte --auto-upgrade-mode na nonehodnotu .

přístup k Azure Container Registry

Pokud chcete vyžádat image z privátní Azure Container Registry (ACR), použijte spravovanou identitu rozšíření nebo tajný klíč pro vyžádání image Kubernetes.

Použití spravované identity rozšíření

AcrPull Udělte roli spravované identitě vygenerované pro rozšíření. Tato role uděluje všem podům spuštěným na virtuálních uzlech rozšíření přístup k načtení imagí z registru bez další konfigurace podu. Musíte mít oprávnění k vytváření přiřazení rolí v registru.

Získejte ID objektu zabezpečení spravované identity rozšíření:

$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

Získejte ID prostředku registru kontejneru:

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

AcrPull Přiřaďte roli spravované identitě rozšíření v oboru registru:

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

Před nasazením úloh, které načítá image z registru, počkejte několik minut, než se přiřazení role rozšíří.

Použití tajného kódu pro vyžádání obrázku

Pokyny najdete v tématu Kubernetes Pull Secret pro ověřování ACR.

Nasazení úlohy do virtuálních uzlů v2

Naplánujte pody na virtuálních uzlech pomocí selektoru virtualization: virtualnode2virtual-kubelet.io/provider uzlu a tolerance:

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

Uložte manifest jako demo.yamla pak ho použijte.

kubectl apply -f demo.yaml

Ověřte, že jsou pody spuštěné.

kubectl get pods -l app=demo -o wide

Zakázání virtuálních uzlů v2

Výstraha

Když rozšíření virtuálního uzlu zakážete, cluster AKS se odpojí od záložních Azure Container Instances skupin kontejnerů. Pokud se chcete vyhnout osamoceným instancím, které budou dál běžet a účtují poplatky, odstraňte všechny úlohy spuštěné na virtuálním uzlu, než rozšíření zakážete.

Odstraňte rozšíření a vyčistěte prostředky virtuálního uzlu.

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

Další kroky