Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
„Virtual Nodes v2“ ist ein verbesserter Virtual-Nodes-Stack, der AKS über VM-basierte Knoten hinaus erweitert, indem Pods auf serverloser Recheninfrastruktur in Azure Container Instances (ACI). Workloads platzen in Sekunden auf ACI, ohne darauf zu warten, dass neue Knoten bereitgestellt werden, und Sie zahlen nur für die Berechnung, die Sie verwenden, während die Pods ausgeführt werden. Virtual Nodes v2 wird als AKS-Clustererweiterung bereitgestellt.
Important
AKS-Preview-Funktionen stehen auf Selbstbedienungs- und Opt-in-Basis zur Verfügung. Vorschauversionen werden „im Istzustand“ und „wie verfügbar“ bereitgestellt und sind von den Service Level Agreements und der eingeschränkten Garantie ausgeschlossen. AKS-Vorschauversionen werden teilweise vom Kundensupport auf Grundlage der bestmöglichen Leistung abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen. Weitere Informationen finden Sie in den folgenden Supportartikeln:
Unterstützt
- Initialisierungscontainer.
- Hostaliase.
- Containerlebenszyklus-Hooks (
postStartundpreStop) -
kubectl execmit Argumenten - Persistente Volumes und PVCs (nur Azure Files)
- VNet-Peering
- NSG-kontrollierter Ausgang
- NAT-Gateway für den Ausgang
- Vertrauliche Container
- Bis zu 200 Pods pro virtuellen Knoten
Limitations
Die folgenden Features werden nicht unterstützt:
- Windows-Container
- DaemonSets
- Portweiterleitung
- IPv6
- Vom API-Server autorisierte IP-Adressbereiche
- Azure CNI-Überlagerung
- Cilium oder NPM als Netzwerkrichtlinie
- Verwendung eines eigenen (BYO) virtuellen Netzwerks
- Mehrere Erweiterungsinstanzen pro Cluster
- Bereitschaftspools
Ressourcenverfügbarkeit und Kontingentgrenzen
Virtual Nodes v2 ist in allen öffentlichen Azure-Cloudregionen verfügbar, in denen Azure Container Instances VNet-SKUs unterstützt. Weitere Informationen finden Sie unter Ressourcenverfügbarkeits- & Kontingentbeschränkungen für ACI.
Prerequisites
- Azure CNI im Knoten-Subnetzmodus
- Calico oder keine als Netzwerkrichtlinie
- Workload-Identität aktiviert
- Mindestens ein Knotenpool mit einer VM-Größe von 4+ vCPUs und 16+ GiB Arbeitsspeicher. Jeder virtuelle Knoten reserviert etwa 3 vCPUs und 12 GiB Arbeitsspeicher auf einem AKS-Knoten in Ihrem Cluster, damit Ihre Knoten über genügend Ressourcen verfügen.
- k8s-Erweiterung Version 1.8 oder höher
-
kubectl1.30 oder höher
Registrieren des ACI-Ressourcenanbieters
az provider register --namespace Microsoft.ContainerInstance
Note
Führen Sie den folgenden Befehl aus, wenn in irgendeiner Phase des Erweiterungsaktivierungsprozesses ein Fehler auftritt.
az provider register --namespace Microsoft.KubernetesConfig
Virtual Nodes v2 aktivieren
Installieren Sie die Erweiterung:
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
Konfigurieren der Erweiterungseinstellungen
Erstellungs- und Aktualisierungsvorgänge unterstützen die folgenden Konfigurationseinstellungen.
| Konfigurationseinstellung | Description |
|---|---|
replicaCount |
Anzahl virtueller Knoten. |
admissionControllerReplicaCount |
Anzahl der Zugangscontrollerpods. |
podAnnotations |
Anmerkungen, die Infrastruktur-Pods als Schlüsselwertzuordnung hinzugefügt werden. |
nodeSelector |
Bezeichnungen, die die AKS-Knoten auswählen, die Infrastruktur- und Zugangscontrollerpods hosten. |
tolerations |
Toleranzen, die auf Infrastruktur- und Zugangscontrollerpods angewendet werden. |
affinity |
Zusätzliche Affinitätseinstellungen werden mit den erforderlichen AKS-Affinitätsregeln zusammengeführt. |
zones |
Durch Semikolons getrennte Verfügbarkeitszonen, in denen Pods bereitgestellt werden. |
nodeLabels |
Bezeichnungen, die virtuellen Knoten als kommagetrennte key=value Paare hinzugefügt werden. |
Die zulässigen kubernetes.io Bezeichnungen sind:
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
Überprüfen der Erweiterung:
az k8s-extension show \
--name <extension-name> \
--cluster-type managedClusters \
--cluster-name <cluster-name> \
--resource-group <resource-group>
Bestätigen Sie, dass provisioningStateSucceeded ist. Es kann Pending ein paar Minuten bleiben.
Überprüfen Sie, ob die Erweiterungs-Pods im vn-system Namespace ausgeführt werden:
kubectl get pods --namespace vn-system
Aktualisieren einer Erweiterung
az k8s-extension update --name <extension-name> --cluster-name <aks-cluster-name> --resource-group <aks-resource-group> --cluster-type managedClusters
Note
Der --auto-upgrade-mode Parameter unterstützt none, patch oder compatible. Zum Anheften einer bestimmten Erweiterungsversion mithilfe --versionvon , legen Sie --auto-upgrade-mode auf none fest.
Zugriff auf Azure Container Registry
Um Bilder aus einer privaten Azure Container Registry (ACR) abzurufen, verwenden Sie die verwaltete Identität der Erweiterung oder ein Kubernetes-Image-Pull-Secret.
Verwenden der verwalteten Erweiterungsidentität
Gewähren Sie der AcrPull Rolle die für die Erweiterung generierte verwaltete Identität. Diese Rolle gewährt allen Pods, die auf den virtuellen Knoten der Erweiterung ausgeführt werden, Zugriff auf das Abrufen von Bilder aus der Registrierung, ohne dass eine zusätzliche Pod-Konfiguration erforderlich ist. Sie müssen über die Berechtigung zum Erstellen von Rollenzuweisungen in der Registrierung verfügen.
Abrufen der Prinzipal-ID der verwalteten Identität der Erweiterung:
$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
Rufen Sie die Ressourcen-ID der Containerregistrierung ab:
$acrId = az acr show --name <acr-name> --resource-group <acr-resource-group> --query id --output tsv
Weisen Sie die AcrPull Rolle der verwalteten Erweiterungsidentität im Registrierungsbereich zu:
az role assignment create --assignee-object-id $extensionPrincipalId --assignee-principal-type ServicePrincipal --role AcrPull --scope $acrId
Warten Sie mehrere Minuten, bis die Rollenzuweisung verteilt wird, bevor Workloads bereitgestellt werden, die Bilder aus der Registrierung abrufen.
Verwenden eines Geheimnisses für Imagepullvorgänge
Anweisungen finden Sie unter Kubernetes Pull Secret für die ACR-Authentifizierung.
Bereitstellen einer Workload auf Virtual Nodes v2
Planen Sie Pods auf virtuellen Knoten mithilfe der virtualization: virtualnode2 Knotenauswahl und der virtual-kubelet.io/provider Toleration:
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
Speichern Sie das Manifest als demo.yaml, und wenden Sie es an.
kubectl apply -f demo.yaml
Überprüfen Sie, ob die Pods ausgeführt werden.
kubectl get pods -l app=demo -o wide
Virtual Nodes v2 deaktivieren
Warning
Wenn Sie die Erweiterung für virtuelle Knoten deaktivieren, trennt der AKS-Cluster die Verbindung zu den zugrunde liegenden Azure Container Instances-Containergruppen. Um verwaiste Instanzen zu vermeiden, die weiterhin ausgeführt werden und Gebühren verursachen, löschen Sie alle Workloads, die auf dem virtuellen Knoten ausgeführt werden, bevor Sie die Erweiterung deaktivieren.
Löschen Sie die Erweiterung und bereinigen Sie virtuelle Knotenressourcen.
az k8s-extension delete \
--name <extension-name> \
--cluster-name <cluster-name> \
--resource-group <resource-group> \
--cluster-type managedClusters
kubectl delete node <virtual-node-name>