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.
AKS-Knoten benötigen keine eigene öffentliche IP-Adresse für die Kommunikation. In einigen Szenarien müssen Knoten in einem Knotenpool jedoch möglicherweise jeweils eine eigene dedizierte öffentliche IP-Adresse erhalten. Ein häufiges Szenario hierfür sind Gamingworkloads, bei denen eine Konsole eine direkte Verbindung mit einem virtuellen Cloudcomputer herstellen muss, um Hops zu minimieren. Dieses Szenario kann in AKS durch öffentliche IP-Adressen für Knoten erzielt werden.
Erstellen Sie zunächst eine neue Ressourcengruppe.
az group create --name <resourceGroup> --location <region>
Erstellen Sie einen neuen AKS-Cluster, und fügen Sie an Ihre Knoten eine öffentliche IP-Adresse an. Jeder Knoten im Knotenpool erhält eine eindeutige öffentliche IP-Adresse. Sie können dies überprüfen, indem Sie sich die Virtual Machine Scale Set-Instanzen ansehen.
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--generate-ssh-keys
Bei vorhandenen AKS-Clustern können Sie auch einen neuen Knotenpool hinzufügen und eine öffentliche IP-Adresse an Ihre Knoten anfügen.
az aks nodepool add --resource-group <resourceGroup> --cluster-name <aksClusterName> --name <newNodePool> --enable-node-public-ip
Präfix für öffentliche IP-Adressen verwenden
Es gibt viele Vorteile bei der Verwendung eines öffentlichen IP-Präfixes. AKS unterstützt die Verwendung von Adressen aus einem vorhandenen öffentlichen IP-Präfix für Ihre Knoten durch das Übergeben der Ressourcen-ID mit dem Flag --node-public-ip-prefix-id Erstellen eines neuen Clusters oder durch Hinzufügen eines Knoten-Pools.
Erstellen Sie zunächst mit AZ Network Public-IP Prefix ein öffentliches IP-Präfix:
az network public-ip prefix create --length 28 --location <region> --name <publicIPPrefixName> --resource-group <resourceGroup>
Sehen Sie sich die Ausgabe an, und notieren Sie sich die id für das Präfix:
{
...
"id": "/subscriptions/<subscription-id>/resourceGroups/<resourceGroup>/providers/Microsoft.Network/publicIPPrefixes/<publicIPPrefixName>",
...
}
Wenn Sie einen neuen Cluster erstellen oder einen neuen Knoten-Pool hinzufügen, verwenden Sie schließlich das --node-public-ip-prefix-id-Flag und übergeben Sie die Ressourcen-ID des Präfixes:
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--node-public-ip-prefix-id /subscriptions/<subscription-id>/resourceGroups/<resourceGroup>/providers/Microsoft.Network/publicIPPrefixes/<publicIPPrefixName> \
--generate-ssh-keys
Verwenden Sie ein öffentliches Dual-Stack-IP-Präfix (Vorschau)
Sie können beiden öffentlichen IPv4- und IPv6-IP-Adressen jedem Knoten in einem Knotenpool zuweisen, indem Sie ein öffentliches IP-Präfix mit dualem Stapel verwenden. Mit diesem Ansatz können Sie Ihre eigenen öffentlichen IP-Präfixe mitbringen und sicherstellen, dass jeder Knoten eine IPv4-Adresse und eine IPv6-Adresse empfängt.
Dieses Feature ist nützlich für Workloads, die eine direkte eingehende oder ausgehende Konnektivität sowohl über IPv4 als auch über IPv6 oder Anwendungen erfordern, die in Umgebungen ausgeführt werden, die IPv6-Compliance erfordern.
Wichtig
AKS-Previewfunktionen stehen gemäß dem Self-Service- und Aktivierungsprinzip zur Verfügung. Vorschauversionen werden „wie besehen“ und „wie verfügbar“ bereitgestellt und sind von den Vereinbarungen zum Service Level 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:
Requirements (Anforderungen)
Um öffentliche Dual-Stack-IP-Präfixe mit den öffentlichen IP-Adressen von Knoten zu verwenden, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
- Ihr Cluster ist als Dual-Stack-Cluster mit IPv4- und IPv6-IP-Familien konfiguriert.
- Ihr Cluster verwendet Azure CNI mit Überlagerungsnetzwerken.
- Sie verfügen über ein öffentliches IPv4-IP-Präfix und ein öffentliches IPv6-IP-Präfix, das in derselben Region wie Ihr AKS-Cluster erstellt wurde.
- Beide öffentlichen IP-Präfixe verwenden die Standard-SKU.
- Die AKS-Clusteridentität verfügt über die Berechtigung zum Verwalten der öffentlichen IP-Präfixe. Wenn sich die Präfixe in einer anderen Ressourcengruppe befinden, weisen Sie der Clusteridentität die Rolle "Netzwerkmitwirkender" für diese Ressourcengruppe zu.
Registrieren Sie die Vorschaufunktionen
Die Unterstützung öffentlicher Dual-Stack-IP-Präfixe (IPv4 und IPv6) für öffentliche IPs von Knoten ist derzeit als Vorschau verfügbar. Bevor Sie dieses Feature verwenden können, müssen Sie die Azure CLI Erweiterung installieren oder aktualisieren und die NodePublicIPv6PrefixPreview Featurekennzeichnungen in Ihrem Abonnement registrieren.
Installieren oder aktualisieren Sie die Erweiterung "aks-preview":
az extension add --name aks-preview --upgrade
Registrieren Sie die erforderlichen Vorschaufeatures:
az feature register --namespace Microsoft.ContainerService --name NodePublicIPv6PrefixPreview
Es kann mehrere Minuten dauern, bis die Featureregistrierungen abgeschlossen sind. Führen Sie Folgendes aus, um den Registrierungsstatus zu überprüfen:
az feature show --namespace Microsoft.ContainerService --name NodePublicIPv6PrefixPreview --query "properties.state"
Warten Sie, bis beide Features den Status "Registriert" melden, bevor Sie fortfahren.
Nachdem die Featurekennzeichnungen registriert wurden, aktualisieren Sie den Ressourcenanbieter, um sicherzustellen, dass die Änderungen angewendet werden:
az provider register --namespace Microsoft.ContainerService
Nachdem die Registrierung abgeschlossen ist, können Sie einen Cluster erstellen oder aktualisieren, um öffentliche IP-Präfixe mit dualem Stapel für öffentliche Knoten-IPs zu verwenden.
Erstellen von öffentlichen IP-Präfixen
Erstellen Sie mithilfe des Azure CLI ein öffentliches IP-Präfix für IPv4 und IPv6.
Für IPv4:
az network public-ip prefix create \
--resource-group <resourceGroup> \
--name <ipv4PrefixName> \
--location <region> \
--length 28 \
--sku Standard \
--version IPv4
Für IPv6:
az network public-ip prefix create \
--resource-group <resourceGroup> \
--name <ipv6PrefixName> \
--location <region> \
--length 124 \
--sku Standard \
--version IPv6
Beachten Sie nach dem Erstellen der Präfixe die Ressourcen-IDs beider Präfixe.
Neuen Cluster mit öffentlichen Dual-Stack-IP-Präfixen für Knoten erstellen
Verwenden Sie beim Erstellen eines neuen AKS-Clusters den --node-public-ip-prefix-ids Parameter, um sowohl die öffentlichen IPv4- als auch die IPv6-IP-Präfixe anzugeben.
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--ip-families IPv4,IPv6 \
--network-plugin azure \
--network-plugin-mode overlay \
--node-public-ip-prefix-ids "<ipv4PrefixResourceId>,<ipv6PrefixResourceId>" \
--generate-ssh-keys
Der --node-public-ip-prefix-ids Parameter akzeptiert eine durch Trennzeichen getrennte Liste öffentlicher IP-Präfixressourcen-IDs. Die Liste muss ein IPv4-Präfix und ein IPv6-Präfix enthalten.
Hinzufügen eines Knotenpools mit Dual-Stack-Präfixen für öffentliche Knoten-IP-Adressen
Sie können einem vorhandenen Dual-Stack-Cluster auch einen Knotenpool mit öffentlichen IP-Präfixen für Dual-Stack-Knoten hinzufügen.
az aks nodepool add \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--enable-node-public-ip \
--node-public-ip-prefix-ids "<ipv4PrefixResourceId>,<ipv6PrefixResourceId>"
Einschränkungen
Die folgenden Einschränkungen gelten für öffentliche IP-Präfixe mit dualen Stapeln:
- Sie müssen sowohl ein IPv4- als auch ein IPv6-Präfix angeben. Nur IPv6-Konfigurationen werden nicht unterstützt.
- Die Konfiguration der öffentlichen IP-Adresse des Knotens kann nicht geändert werden. Um die öffentlichen IP-Präfixe zu ändern, müssen Sie einen neuen Knotenpool erstellen und Workloads migrieren.
- Jedem Knoten wird eine einzelne öffentliche IPv6-IP-Adresse zugewiesen.
- Diese Funktion wird für AKS Automatic oder die automatische Knotenbereitstellung nicht unterstützt.
- Multi-NIC-Knotenpools werden nicht unterstützt.
- Cluster autoscaler wird unterstützt, aber stellen Sie sicher, dass die konfigurierte maximale Knotenanzahl die Anzahl der verfügbaren IP-Adressen im öffentlichen IP-Präfix nicht überschreitet, da für jeden Knoten eine IP aus dem Präfix erforderlich ist.
Öffentliche IPS für Knoten suchen
Sie können die öffentlichen IP-Adressen Ihrer Knoten auf verschiedene Weise ermitteln:
- Verwenden Sie den Azure CLI-Befehl
az vmss list-instance-public-ips. - Mit PowerShell- oder Bash-Befehlen
- Sie können die öffentlichen IP-Adressen auch im Azure-Portal anzeigen, indem Sie die Virtual Machine Scale Set-Instanzen anzeigen
Wichtig
Die Knotenressourcengruppe enthält die Knoten und deren öffentlichen IP-Adressen. Verwenden Sie die Knotenressourcengruppe, wenn Sie Befehle ausführen, um die öffentlichen IP-Adressen Ihrer Knoten zu ermitteln.
az vmss list-instance-public-ips --resource-group <MC_region_aksClusterName_region> --name <virtualMachineScaleSetName>
Verwenden von Tags öffentlicher IP-Adressen für öffentliche IP-Adressen von Knoten
Öffentliche IP-Tags können auf öffentlichen Knoten-IPs verwendet werden, um das Azure Routing-Einstellungsfeature zu verwenden, das in bestimmten Regionen verfügbar ist.
Requirements (Anforderungen)
- AKS-Version 1.29 (oder höher) ist erforderlich.
Erstellen eines neuen Clusters mithilfe der Routingeinstellung „Internet“
az aks create \
--name <aksClusterName> \
--location <region> \
--resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet \
--generate-ssh-keys
Hinzufügen eines Knotenpools mit Routingeinstellung „Internet“
az aks nodepool add --cluster-name <aksClusterName> \
--name <nodePoolName> \
--location <region> \
--resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet
Zulassen von Hostportverbindungen und Hinzufügen von Knotenpools zu Anwendungssicherheitsgruppen
AKS-Knoten, die öffentliche IP-Adressen von Knoten verwenden, die Dienste mit ihrer Hostadresse hosten, muss eine NSG-Regel hinzugefügt werden, um den Datenverkehr zuzulassen. Durch das Hinzufügen der gewünschten Ports in der Knotenpoolkonfiguration werden die entsprechenden Zulassungsregeln in der Clusternetzwerk-Sicherheitsgruppe erstellt.
Wenn im Subnetz eine Netzwerksicherheitsgruppe mit einem Cluster unter Verwendung eines virtuellen Bring-Your-Own-Netzwerks vorhanden ist, muss dieser Netzwerksicherheitsgruppe eine Zulassungsregel hinzugefügt werden. Dies kann durch Hinzufügen des Knotenpools zu einer Anwendungssicherheitsgruppe (ASG) auf die Knoten in einem bestimmten Knotenpool beschränkt werden. Eine verwaltete ASG wird standardmäßig in der verwalteten Ressourcengruppe erstellt, wenn zulässige Hostports angegeben werden. Knoten können auch mindestens einer benutzerdefinierten ASG hinzugefügt werden, indem die Ressourcen-ID der NSG in den Knotenpoolparametern angegeben wird.
Format der Hostportspezifikation
Wenn Sie die Liste der zuzulassenden Ports angeben, verwenden Sie eine durch Trennzeichen getrennte Liste mit Einträgen im Format port/protocol oder startPort-endPort/protocol.
Beispiele:
- 80/tcp
- 80/tcp,443/tcp
- 53/udp,80/tcp
- 50000-60000/tcp
Requirements (Anforderungen)
- AKS-Version 1.29 (oder höher) ist erforderlich.
Erstellen eines neuen Clusters mit zulässigen Ports und Anwendungssicherheitsgruppen
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--nodepool-name <nodePoolName> \
--nodepool-allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp\
--nodepool-asg-ids "<asgId>,<asgId>" \
--generate-ssh-keys
Hinzufügen eines neuen Knotenpools mit zulässigen Ports und Anwendungssicherheitsgruppen
az aks nodepool add \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp \
--asg-ids "<asgId>,<asgId>"
Aktualisieren der zulässigen Ports und Anwendungssicherheitsgruppen für einen Knotenpool
az aks nodepool update \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--allowed-host-ports 80/tcp,443/tcp,53/udp,40000-60000/tcp,40000-50000/udp \
--asg-ids "<asgId>,<asgId>"
Automatisches Zuweisen von Hostports für Podworkloads (VORSCHAU)
Wenn öffentliche IP-Adressen für Knoten konfiguriert sind, können Hostports verwendet werden, um Pods das direkte Empfangen von Datenverkehr zu ermöglichen, ohne einen Lastenausgleichsdienst konfigurieren zu müssen. Dies ist besonders nützlich in Szenarien wie Gaming, in denen die kurzlebige Natur der IP-Adresse des Knotens und des Ports kein Problem darstellt, da ein Matchmakerdienst unter einem bekannten Hostnamen den richtigen Host und Port bereitstellen kann, die zur Verbindungszeit verwendet werden sollen. Da jedoch nur ein Prozess auf einem Host am gleichen Port lauschen kann, kann die Verwendung von Anwendungen mit Hostports zu Problemen bei der Zeitplanung führen. Um dieses Problem zu vermeiden, bietet AKS die Möglichkeit, dass das System zur Planungszeit dynamisch einen verfügbaren Port zuweisen kann, um Konflikte zu vermeiden.
Warnung
Der Portdatenverkehr des Podhosts wird durch die im Cluster geltenden NSG-Standardregeln blockiert. Diese Funktion sollte mit dem Zulassen von Hostports für den Knotenpool kombiniert werden, damit der Datenverkehr fließen kann.
Wichtig
AKS-Previewfunktionen stehen gemäß dem Self-Service- und Aktivierungsprinzip zur Verfügung. Vorschauversionen werden „wie besehen“ und „wie verfügbar“ bereitgestellt und sind von den Vereinbarungen zum Service Level 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:
Requirements (Anforderungen)
- AKS-Version 1.29 (oder höher) ist erforderlich.
Registrieren des PodHostPortAutoAssignPreview-Featureflags
Registrieren Sie das PodHostPortAutoAssignPreview-Featureflag mit dem Befehl az feature register, wie im folgenden Beispiel gezeigt:
az feature register --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"
Es dauert einige Minuten, bis der Status Registered (Registriert) angezeigt wird. Überprüfen Sie den Registrierungsstatus mithilfe des Befehls az feature show:
az feature show --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"
Wenn der Zustand Registered (Registriert) lautet, aktualisieren Sie die Registrierung des Ressourcenanbieters Microsoft.ContainerService mithilfe des Befehls az provider register:
az provider register --namespace Microsoft.ContainerService
Automatisches Zuweisen eines Hostports zu einem Pod
Das Auslösen der automatischen Hostportzuweisung erfolgt durch Bereitstellen einer Workload ohne Hostports und Anwenden der kubernetes.azure.com/assign-hostports-for-containerports-Anmerkung mit der Liste der Ports, die Hostportzuweisungen benötigen. Der Wert der Anmerkung sollte als durch Trennzeichen getrennte Liste von Einträgen wie port/protocol angegeben werden, wobei der Port eine einzelne Portnummer ist, die in der Podspezifikation definiert ist, und das Protokoll ist tcp oder udp.
Ports werden aus dem Bereich 40000-59999 zugewiesen und sind im gesamten Cluster eindeutig. Die zugewiesenen Ports werden auch Umgebungsvariablen innerhalb des Pods hinzugefügt, damit die Anwendung bestimmen kann, welche Ports zugewiesen wurden. Der Name der Umgebungsvariablen weist das folgende Format auf (Beispiel unten): <deployment name>_PORT_<port number>_<protocol>_HOSTPORT, ein Beispiel wäre also mydeployment_PORT_8080_TCP_HOSTPORT: 41932.
Hier sehen Sie eine echoserver-Beispielbereitstellung, die die Zuordnung der Hostports für die Ports 8080 und 8443 zeigt:
apiVersion: apps/v1
kind: Deployment
metadata:
name: echoserver-hostport
labels:
app: echoserver-hostport
spec:
replicas: 3
selector:
matchLabels:
app: echoserver-hostport
template:
metadata:
annotations:
kubernetes.azure.com/assign-hostports-for-containerports: 8080/tcp,8443/tcp
labels:
app: echoserver-hostport
spec:
nodeSelector:
kubernetes.io/os: linux
containers:
- name: echoserver-hostport
image: k8s.gcr.io/echoserver:1.10
ports:
- name: http
containerPort: 8080
protocol: TCP
- name: https
containerPort: 8443
protocol: TCP
Wenn die Bereitstellung angewendet wird, befinden sich die hostPort-Einträge im YAML der einzelnen Pods:
$ kubectl describe pod echoserver-hostport-75dc8d8855-4gjfc
<cut for brevity>
Containers:
echoserver-hostport:
Container ID: containerd://d0b75198afe0612091f412ee7cf7473f26c80660143a96b459b3e699ebaee54c
Image: k8s.gcr.io/echoserver:1.10
Image ID: k8s.gcr.io/echoserver@sha256:cb5c1bddd1b5665e1867a7fa1b5fa843a47ee433bbb75d4293888b71def53229 Ports: 8080/TCP, 8443/TCP
Host Ports: 46645/TCP, 49482/TCP
State: Running
Started: Thu, 12 Jan 2023 18:02:50 +0000
Ready: True
Restart Count: 0
Environment:
echoserver-hostport_PORT_8443_TCP_HOSTPORT: 49482
echoserver-hostport_PORT_8080_TCP_HOSTPORT: 46645
Nächste Schritte
Erfahren Sie mehr über die Verwendung mehrerer Knotenpools in AKS.
Erfahren Sie mehr über die Verwendung von Standard-Lastenausgleichsmodulen in AKS