Erstellen eines verwalteten oder benutzerseitig zugewiesenen NAT-Gateways für Ihren AKS-Cluster (Azure Kubernetes Service)
Sie können den ausgehenden Datenverkehr zwar über einen Azure Load Balancer leiten, aber es gibt Grenzwerte für die Anzahl der ausgehenden Datenströme, die Sie nutzen können. Azure NAT Gateway lässt pro IP-Adresse bis zu 64.512 ausgehende UDP- und TCP-Datenverkehrsflüsse sowie maximal 16 IP-Adressen zu.
In diesem Artikel erfahren Sie, wie Sie einen AKS-Cluster (Azure Kubernetes Service) mit einem verwalteten NAT-Gateway und einem benutzerseitig zugewiesenen NAT-Gateway für ausgehenden Datenverkehr erstellen. Außerdem wird gezeigt, wie Sie OutboundNAT unter Windows deaktivieren können.
Voraussetzungen
- Stellen Sie sicher, dass Sie die aktuelle Version der Azure-Befehlszeilenschnittstelle verwenden.
- Stellen Sie sicher, dass Sie Kubernetes Version 1.20.x oder höher verwenden.
- Das verwaltete NAT-Gateway ist nicht mit benutzerdefinierten virtuellen Netzwerken kompatibel.
Wichtig
In nicht privaten Clustern wird der API-Serverclusterdatenverkehr über den ausgehenden Clustertyp weitergeleitet und verarbeitet. Um zu verhindern, dass API-Serverdatenverkehr als öffentlicher Datenverkehr verarbeitet wird, sollten Sie einen privaten Clusterverwenden oder das Feature API-Server-VNET-Integration ausprobieren.
Erstellen eines AKS-Clusters mit einem verwalteten NAT Gateway
Erstellen Sie einen AKS-Cluster mit einem neuen verwalteten NAT-Gateway, indem Sie den Befehl
az aks create
mit den Parametern--outbound-type managedNATGateway
,--nat-gateway-managed-outbound-ip-count
und--nat-gateway-idle-timeout
verwenden. Wenn sich das NAT-Gateway in einer bestimmten Verfügbarkeitszone befinden soll, geben Sie die Zone mithilfe von--zones
an.Wenn beim Erstellen eines verwalteten NAT-Gateways keine Zone angegeben wird, wird das NAT-Gateway standardmäßig in „Keine Zone“ bereitgestellt. Wenn ein NAT-Gateway in keine Zone platziert wird, platziert Azure die Ressource in einer Zone für Sie. Weitere Informationen zum nicht zonalen Bereitstellungsmodell finden Sie unter Nicht-zonales NAT-Gateway.
Eine verwaltete NAT-Gatewayressource kann nicht über mehrere Verfügbarkeitszonen hinweg verwendet werden.
az aks create \ --resource-group myResourceGroup \ --name myNatCluster \ --node-count 3 \ --outbound-type managedNATGateway \ --nat-gateway-managed-outbound-ip-count 2 \ --nat-gateway-idle-timeout 4 \ --generate-ssh-keys
Aktualisieren Sie die ausgehende IP-Adresse oder das Leerlauftimeout mit dem Befehl
az aks update
mit dem Parameter--nat-gateway-managed-outbound-ip-count
oder--nat-gateway-idle-timeout
.az aks update \ --resource-group myResourceGroup \ --name myNatCluster\ --nat-gateway-managed-outbound-ip-count 5
Erstellen eines AKS-Clusters mit einem benutzerseitig zugewiesenen NAT Gateway
Diese Konfiguration setzt voraus, dass Sie ein eigenes Netzwerk mitbringen (über Kubenet oder Azure CNI) und dass das NAT-Gateway im Subnetz vorkonfiguriert ist. Die folgenden Befehle erstellen die erforderlichen Ressourcen für dieses Szenario.
Erstellen Sie mit dem Befehl
az group create
eine Ressourcengruppe.az group create --name myResourceGroup \ --location southcentralus
Erstellen Sie eine verwaltete Identität für Netzwerkberechtigungen, und speichern Sie die ID in
$IDENTITY_ID
zur späteren Verwendung.IDENTITY_ID=$(az identity create \ --resource-group myResourceGroup \ --name myNatClusterId \ --location southcentralus \ --query id \ --output tsv)
Erstellen Sie mit dem Befehl
az network public-ip create
eine öffentliche IP-Adresse für das NAT-Gateway.az network public-ip create \ --resource-group myResourceGroup \ --name myNatGatewayPip \ --location southcentralus \ --sku standard
Erstellen Sie das NAT-Gateway mit dem Befehl
az network nat gateway create
.az network nat gateway create \ --resource-group myResourceGroup \ --name myNatGateway \ --location southcentralus \ --public-ip-addresses myNatGatewayPip
Wichtig
Eine einzelne NAT-Gatewayressource kann nicht über mehrere Verfügbarkeitszonen hinweg verwendet werden. Um Zonenresilienz zu gewährleisten, wird empfohlen, eine NAT-Gatewayressource für jede Verfügbarkeitszone bereitzustellen und Subnetze zuzuweisen, die AKS-Cluster in jeder Zone enthalten. Weitere Informationen zu diesem Bereitstellungsmodell finden Sie unter NAT-Gateway für jede Zone. Wenn keine Zone für das NAT-Gateway konfiguriert ist, lautet die Standardzonenplatzierung „keine Zone”, in der Azure das NAT-Gateway für Sie in einer Zone platziert.
Erstellen Sie ein virtuelles Netzwerk mit dem Befehl
az network vnet create
.az network vnet create \ --resource-group myResourceGroup \ --name myVnet \ --location southcentralus \ --address-prefixes 172.16.0.0/20
Erstellen Sie ein Subnetz im virtuellen Netzwerk mithilfe des NAT Gateways, und speichern Sie die ID in
$SUBNET_ID
zur späteren Verwendung.SUBNET_ID=$(az network vnet subnet create \ --resource-group myResourceGroup \ --vnet-name myVnet \ --name myNatCluster \ --address-prefixes 172.16.0.0/22 \ --nat-gateway myNatGateway \ --query id \ --output tsv)
Erstellen Sie einen AKS-Cluster unter Verwendung des Subnetzes mit dem NAT Gateway und der verwalteten Identität mit dem Befehl
az aks create
.az aks create \ --resource-group myResourceGroup \ --name myNatCluster \ --location southcentralus \ --network-plugin azure \ --vnet-subnet-id $SUBNET_ID \ --outbound-type userAssignedNATGateway \ --assign-identity $IDENTITY_ID \ --generate-ssh-keys
Deaktivieren von OutboundNAT für Windows
Windows OutboundNAT kann bestimmte Verbindungs- und Kommunikationsprobleme mit Ihren AKS-Pods verursachen. Ein Beispielproblem ist die Wiederverwendung von Knotenports. In diesem Beispiel verwendet Windows OutboundNAT Ports, um Ihre Pod-IP-Adresse in Ihre Windows-Knotenhost-IP-Adresse zu übersetzen, was aufgrund eines Problems durch Portauslastung zu einer instabilen Verbindung mit dem externen Dienst führen kann.
Windows aktiviert OutboundNAT standardmäßig. Sie können OutboundNAT jetzt manuell deaktivieren, wenn Sie neue Windows-Agentpools erstellen.
Voraussetzungen
- Vorhandener AKS-Cluster mit mindestens der Version 1.26. Wenn Sie Kubernetes, Version 1.25 oder niedriger, verwenden, müssen Sie Ihre Bereitstellungskonfiguration aktualisieren.
Begrenzungen
- Sie können den ausgehenden Clustertyp nicht auf LoadBalancer festlegen. Sie können ihn auf NAT-Gateway oder UDR festlegen:
- NAT-Gateway: NAT-Gateway kann nat-Verbindung automatisch verarbeiten und ist leistungsstärker als der Standard-Load Balancer. Mit dieser Option können zusätzliche Gebühren anfallen.
- UDR (UserDefinedRouting): Beim Konfigurieren von Routingregeln müssen Portbeschränkungen beachtet werden.
- Wenn Sie von einem Lastenausgleich zum NAT Gateway wechseln müssen, können Sie entweder im VNet ein NAT Gateway hinzufügen oder
az aks upgrade
ausführen, um den Typ der ausgehenden Kommunikation zu aktualisieren.
Hinweis
UserDefinedRouting hat die folgenden Einschränkungen:
- SNAT by Load Balancer (muss die standardmäßige OutboundNAT verwenden) verfügt über „64 Ports auf der Host-IP“.
- SNAT von Azure Firewall (OutboundNAT deaktivieren) verfügt über 2496 Ports pro öffentliche IP.
- SNAT by NAT Gateway (OutboundNAT deaktivieren) verfügt über 64512 Ports pro öffentliche IP.
- Wenn der Azure Firewall-Portbereich für Ihre Anwendung nicht ausreicht, müssen Sie NAT-Gateway verwenden.
- Azure Firewall bietet kein SNAT mit Netzwerkregeln, wenn die Ziel-IP-Adresse ein privater IP-Adressbereich gemäß IANA RFC 1918 oder ein geteilter Adressraum gemäß IANA RFC 6598 ist.
Manuelles Deaktivieren von OutboundNAT für Windows
Wenn Sie neue Windows-Agentenpools erstellen, deaktivieren Sie OutboundNAT für Windows manuell mit dem Befehl
az aks nodepool add
und dem Flag--disable-windows-outbound-nat
.Hinweis
Sie können einen vorhandenen AKS-Cluster verwenden, müssen jedoch eventuell den ausgehenden Typ aktualisieren und einen Knotenpool hinzufügen, um
--disable-windows-outbound-nat
zu aktivieren.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myNatCluster \ --name mynp \ --node-count 3 \ --os-type Windows \ --disable-windows-outbound-nat
Nächste Schritte
Weitere Informationen zu Azure NAT Gateway finden Sie unter Azure NAT Gateway.
Azure Kubernetes Service