Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nodi virtuali v2 è uno stack di nodi virtuali migliorato che estende il servizio Azure Kubernetes oltre i nodi basati su macchine virtuali eseguendo pod nel calcolo serverless in Istanze di Azure Container (ACI). I carichi di lavoro vengono eseguiti in modalità ACI in pochi secondi senza attendere il provisioning dei nuovi nodi e si paga solo per il calcolo usato durante l'esecuzione dei pod. I nodi virtuali v2 vengono distribuiti come estensione del cluster del servizio Azure Kubernetes.
Important
Le funzionalità in anteprima di AKS sono disponibili in modalità self-service, su base volontaria. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime di AKS sono coperte solo parzialmente dall'assistenza clienti nei limiti del possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
Supportato
- Contenitori init
- Alias host
- Hook del ciclo di vita dei contenitori (
postStartepreStop) -
kubectl execcon argomenti - Volumi persistenti e pvC (solo File di Azure)
- Collegamento reti virtuali
- Uscita controllata dal gruppo di sicurezza di rete
- Gateway NAT per l'uscita
- Contenitori riservati
- Fino a 200 pod per nodo virtuale
Limitations
Le funzionalità seguenti non sono supportate:
- Contenitori di Windows
- DaemonSets
- Port forwarding
- IPv6
- Intervalli IP autorizzati del server API
- Overlay CNI di Azure
- Cilium o NPM come criterio di rete
- Rete virtuale Bring Your Own (BYO)
- Più istanze di estensione per cluster
- Pool di standby
Limiti di disponibilità e quota delle risorse
I nodi virtuali v2 sono disponibili in tutte le aree cloud pubbliche Azure in cui Istanze di Azure Container supporta gli SKU di rete virtuale. Per altre informazioni, vedere Disponibilità delle risorse e limiti di quota per ACI.
Prerequisiti
- Azure CNI in modalità node-subnet
- Calico o nessuno come criterio di rete
- Identità del carico di lavoro abilitata
- Almeno un pool di nodi con dimensioni di vm di 4+ vCPU e 16+ GiB di memoria. Ogni nodo virtuale riserva circa 3 vCPU e 12 GiB di memoria in un nodo del servizio Azure Kubernetes nel cluster, quindi assicurarsi che i nodi dispongano di risorse sufficienti.
- k8s-extension versione 1.8 o successiva
-
kubectl1.30 o successiva
Registrare il provider di risorse ACI:
az provider register --namespace Microsoft.ContainerInstance
Note
Eseguire il comando seguente se si verifica un errore in qualsiasi fase del processo di abilitazione dell'estensione.
az provider register --namespace Microsoft.KubernetesConfig
Abilitare i nodi virtuali v2
Installare l'estensione
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
Configurare le impostazioni dell'estensione
Le operazioni di creazione e aggiornamento supportano le impostazioni di configurazione seguenti.
| Impostazione di configurazione | Description |
|---|---|
replicaCount |
Numero di nodi virtuali. |
admissionControllerReplicaCount |
Numero di pod del controller di ammissione. |
podAnnotations |
Annotazioni aggiunte ai pod dell'infrastruttura come mappa chiave-valore. |
nodeSelector |
Etichette che selezionano i nodi del servizio Azure Kubernetes che ospitano i pod dell'infrastruttura e del controller di ammissione. |
tolerations |
Tolerazioni applicate ai pod dell'infrastruttura e del controller di ammissione. |
affinity |
Impostazioni di affinità aggiuntive unite alle regole di affinità del servizio Azure Kubernetes necessarie. |
zones |
Zone di disponibilità delimitate da punto e virgola in cui vengono distribuiti i pod. |
nodeLabels |
Etichette aggiunte ai nodi virtuali come coppie separate da key=value virgole. |
Le etichette consentite kubernetes.io sono:
beta.kubernetes.io/archbeta.kubernetes.io/instance-typebeta.kubernetes.io/osfailure-domain.beta.kubernetes.io/regionfailure-domain.beta.kubernetes.io/zonekubernetes.io/archkubernetes.io/hostnamekubernetes.io/osnode.kubernetes.io/instance-typetopology.kubernetes.io/regiontopology.kubernetes.io/zone
Verificare l'estensione:
az k8s-extension show \
--name <extension-name> \
--cluster-type managedClusters \
--cluster-name <cluster-name> \
--resource-group <resource-group>
Confermare provisioningState è Succeeded. Può rimanere per qualche Pending minuto.
Verificare che i pod di estensione siano in esecuzione nello spazio dei vn-system nomi :
kubectl get pods --namespace vn-system
Aggiornare un'estensione
az k8s-extension update --name <extension-name> --cluster-name <aks-cluster-name> --resource-group <aks-resource-group> --cluster-type managedClusters
Note
Il --auto-upgrade-mode parametro supporta none, patcho compatible. Per aggiungere una versione di estensione specifica tramite --version, impostare su --auto-upgrade-modenone.
Accesso ad Registro Azure Container
Per eseguire il pull delle immagini da un Registro Azure Container privato, usare l'identità gestita dell'estensione o un segreto di pull dell'immagine Kubernetes.
Usare l'identità gestita dell'estensione
Concedere il AcrPull ruolo all'identità gestita generata per l'estensione. Questo ruolo concede a tutti i pod in esecuzione nei nodi virtuali dell'estensione l'accesso per eseguire il pull delle immagini dal Registro di sistema senza una configurazione aggiuntiva del pod. È necessario disporre dell'autorizzazione per creare assegnazioni di ruolo nel Registro di sistema.
Ottenere l'ID entità dell'identità gestita dell'estensione:
$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
Ottenere l'ID risorsa del registro contenitori:
$acrId = az acr show --name <acr-name> --resource-group <acr-resource-group> --query id --output tsv
Assegnare il AcrPull ruolo all'identità gestita dell'estensione nell'ambito del Registro di sistema:
az role assignment create --assignee-object-id $extensionPrincipalId --assignee-principal-type ServicePrincipal --role AcrPull --scope $acrId
Attendere alcuni minuti per propagare l'assegnazione di ruolo prima di distribuire carichi di lavoro che estraggono immagini dal Registro di sistema.
Usare un segreto pull di immagini
Per istruzioni, vedere Segreto pull Kubernetes per l'autenticazione di Registro Azure Container.
Distribuire un carico di lavoro nei nodi virtuali v2
Pianificare i pod nei nodi virtuali usando il virtualization: virtualnode2 selettore di nodi e la virtual-kubelet.io/provider tolleranza:
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
Salvare il manifesto come demo.yamle quindi applicarlo.
kubectl apply -f demo.yaml
Verificare che i pod siano in esecuzione.
kubectl get pods -l app=demo -o wide
Disabilitare i nodi virtuali v2
Avvertimento
Quando si disabilita l'estensione del nodo virtuale, il cluster del servizio Azure Kubernetes si disconnette dal backup Istanze di Azure Container gruppi di contenitori. Per evitare istanze orfane che continuano a essere in esecuzione e incorrere in addebiti, eliminare tutti i carichi di lavoro in esecuzione nel nodo virtuale prima di disabilitare l'estensione.
Eliminare l'estensione e pulire le risorse del nodo virtuale.
az k8s-extension delete \
--name <extension-name> \
--cluster-name <cluster-name> \
--resource-group <resource-group> \
--cluster-type managedClusters
kubectl delete node <virtual-node-name>