Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
AKS-noder kräver inte egna offentliga IP-adresser för kommunikation. Scenarier kan dock kräva att noder i en nodpool tar emot sina egna dedikerade offentliga IP-adresser. Ett vanligt scenario är för spelarbetsbelastningar, där en konsol måste upprätta en direktanslutning till en virtuell molndator för att minimera hopp. Det här scenariot kan uppnås på AKS med hjälp av nodens offentliga IP.
Skapa först en ny resursgrupp.
az group create --name <resourceGroup> --location <region>
Skapa ett nytt AKS-kluster och koppla en offentlig IP-adress för dina noder. Var och en av noderna i nodpoolen får en unik offentlig IP-adress. Du kan kontrollera detta genom att titta på instanserna i skalningsuppsättningar för virtuella maskiner.
az aks create \
--resource-group <resourceGroup> \
--name <aksClusterName> \
--location <region> \
--enable-node-public-ip \
--generate-ssh-keys
För befintliga AKS-kluster kan du också lägga till en ny nodpool och koppla en offentlig IP-adress för dina noder.
az aks nodepool add --resource-group <resourceGroup> --cluster-name <aksClusterName> --name <newNodePool> --enable-node-public-ip
Använda ett offentligt IP-prefix
Det finns ett antal fördelar med att använda ett offentligt IP-prefix. AKS stöder användning av adresser från ett befintligt offentligt IP-prefix för dina noder genom att skicka resurs-ID:t med flaggan --node-public-ip-prefix-id när du skapar ett nytt kluster eller lägger till en nodpool.
Skapa först ett offentligt IP-prefix med az network public-ip prefix create:
az network public-ip prefix create --length 28 --location <region> --name <publicIPPrefixName> --resource-group <resourceGroup>
Visa utdata och anteckna id för prefixet:
{
...
"id": "/subscriptions/<subscription-id>/resourceGroups/<resourceGroup>/providers/Microsoft.Network/publicIPPrefixes/<publicIPPrefixName>",
...
}
När du skapar ett nytt kluster eller lägger till en ny nodpool använder du slutligen flaggan --node-public-ip-prefix-id och skickar in prefixets resurs-ID:
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
Använda ett offentligt IP-prefix med dubbla staplar (förhandsversion)
Du kan tilldela både offentliga IP-adresser för IPv4 och IPv6 till varje nod i en nodpool med hjälp av offentliga IP-prefix i ett dual-stack-kluster. Den här funktionen är användbar för arbetsbelastningar som kräver direkt inkommande eller utgående anslutning över både IPv4 och IPv6, eller för program som fungerar i miljöer som kräver IPv6-efterlevnad.
Det finns två konfigurationer som stöds:
- Ta med dina egna IPv4- och IPv6-prefix. Varje nod tar emot en IPv4-adress från ditt IPv4-prefix och en IPv6-adress från ditt IPv6-prefix. Använd den här konfigurationen när båda adresserna måste komma från adressintervall som du styr, till exempel när en brandvägg eller partnertjänst endast tillåter trafik från dina prefix.
- Ta endast med ditt eget IPv6-prefix. Varje nod tar emot en IPv6-adress från ditt IPv6-prefix och Azure tilldelar automatiskt IPv4-adressen. Använd den här konfigurationen när endast IPv6-adressen behöver komma från ett intervall som du styr. Eftersom nodpoolen inte använder adresser från ett IPv4-prefix begränsar inte storleken på ett IPv4-prefix hur många noder nodpoolen kan skala till.
Viktigt!
AKS-förhandsfunktioner är tillgängliga via självbetjäning och frivillig anmälan. Förhandsversioner tillhandahålls "som är" och "som tillgängliga", och de undantas från serviceavtalen och den begränsade garantin. AKS-förhandsversioner omfattas delvis av kundsupport efter bästa förmåga. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:
Krav
Om du vill använda offentliga IP-prefix med dubbla staplar med offentliga IP-adresser för noder kontrollerar du att följande krav uppfylls:
- Klustret är konfigurerat som ett kluster med dubbla staplar med ip-familjer för både IPv4 och IPv6. Ett dual-stack-kluster krävs för båda konfigurationerna, inklusive prefixkonfigurationen endast för IPv6.
- Klustret använder Azure CNI med överläggsnätverk.
- Du har skapat de offentliga IP-prefix som du planerar att använda i samma prenumeration och region som ditt AKS-kluster. Beroende på vilken konfiguration du väljer behöver du antingen ett IPv4-prefix och ett IPv6-prefix eller ett enda IPv6-prefix.
- Varje offentligt IP-prefix använder standard-SKU:n och är inte kopplad till en lastbalanserare.
- AKS-klusteridentiteten har behörighet att hantera de offentliga IP-prefixen. Om prefixen finns i en annan resursgrupp tilldelar du rollen Nätverksdeltagare för den resursgruppen till klusteridentiteten.
Registrera förhandsgranskningsfunktionerna
Stöd för offentliga IP-prefix med dubbla staplar (IPv4 och IPv6) för offentliga IP-adresser för noder är för närvarande tillgängligt i förhandsversionen. Innan du kan använda den här funktionen måste du installera eller uppdatera Azure CLI-tillägget och registrera funktionsflaggor NodePublicIPv6PrefixPreview i din prenumeration.
Installera eller uppdatera aks-preview-tillägget:
az extension add --name aks-preview --upgrade
Registrera de förhandsversionsfunktioner som krävs:
az feature register --namespace Microsoft.ContainerService --name NodePublicIPv6PrefixPreview
Det kan ta flera minuter innan funktionsregistreringarna slutförs. Kontrollera registreringsstatusen genom att köra:
az feature show --namespace Microsoft.ContainerService --name NodePublicIPv6PrefixPreview --query "properties.state"
Vänta tills funktionen rapporterar tillståndet Registered innan du fortsätter.
När funktionsflaggor har registrerats uppdaterar du resursprovidern för att säkerställa att ändringarna tillämpas:
az provider register --namespace Microsoft.ContainerService
När registreringen är klar kan du skapa eller uppdatera ett kluster för att använda offentliga IP-prefix med dubbla staplar för offentliga IP-adresser för noder.
Skapa offentliga IP-prefix
Skapa ett offentligt IP-prefix för IPv4 och IPv6 med hjälp av Azure CLI. Om du planerar att använda prefixkonfigurationen för endast IPv6, skapar du bara IPv6-prefixet.
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
När du har skapat prefixen bör du notera resurs-ID:t för varje prefix.
Skapa ett nytt kluster med offentliga IP-prefix med dubbla stacknoder
När du skapar ett nytt AKS-kluster använder du parametern --node-public-ip-prefix-ids för att ange både de offentliga IP-prefixen IPv4 och IPv6.
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
Parametern --node-public-ip-prefix-ids accepterar en kommaavgränsad lista över offentliga IP-prefixresurs-ID:er. Listan kan innehålla högst ett IPv4-prefix och ett IPv6-prefix. Ordningen spelar ingen roll eftersom AKS avgör IP-versionen från varje refererat prefix.
Lägg till en nodpool med offentliga IP-prefix för noder med dubbel stack
Du kan också lägga till en nodpool med offentliga IP-prefix för noder med dubbla stackar i ett befintligt kluster med dubbla stackar.
az aks nodepool add \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--enable-node-public-ip \
--node-public-ip-prefix-ids "<ipv4PrefixResourceId>,<ipv6PrefixResourceId>"
Använd ett offentligt IP-prefix med endast IPv6
Om du bara behöver IPv6-adressen från ett prefix som du styr anger du ett enda IPv6-prefix. Varje nod tar emot en IPv6-adress från prefixet och Azure tilldelar automatiskt IPv4-adressen. Nodpoolen kräver fortfarande ett dual-stack-kluster.
Använd den här konfigurationen när storleken på ett IPv4-prefix annars skulle begränsa hur långt nodpoolen kan skalas. Eftersom nodpoolen inte hämtar IPv4-adresser från ett prefix begränsar endast IPv6-prefixets kapacitet antalet noder.
Skapa ett nytt kluster med ett offentligt IP-prefix för nod med endast IPv6:
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 "<ipv6PrefixResourceId>" \
--generate-ssh-keys
Lägg till en nodpool med ett offentligt IP-prefix endast för IPv6-noder till ett befintligt kluster med dubbla staplar:
az aks nodepool add \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--enable-node-public-ip \
--node-public-ip-prefix-ids "<ipv6PrefixResourceId>"
Eftersom Azure tilldelar IPv4-adressen automatiskt är IPv4-adressen för varje nod inte förutsägbar och du kan inte lägga till den i en tillåtelselista i förväg. Därför kan du inte använda ett offentligt IP-prefix med endast IPv6 i ett kluster som använder API-serverauktoriserade IP-intervall. Använd API Server VNet-integrering eller ett privat kluster i stället, eller inkludera ett IPv4-prefix i listan.
Kontrollera den offentliga IP-prefixkonfigurationen för noden
Bekräfta vilka prefix en nodpool använder med kommandot az aks nodepool show :
az aks nodepool show \
--resource-group <resourceGroup> \
--cluster-name <aksClusterName> \
--name <nodePoolName> \
--query "networkProfile.nodePublicIPPrefixIDs"
Lista de offentliga IP-adresser som noderna tog emot med kommandot az vmss list-instance-public-ips . Använd nodresursgrupp:
az vmss list-instance-public-ips \
--resource-group <MC_resourceGroup_aksClusterName_region> \
--name <virtualMachineScaleSetName> \
--query "[].{name:name, ipAddress:ipAddress, version:publicIPAddressVersion}" \
--output table
För ett prefix med endast IPv6 har varje nod en IPv6-adress från prefixet och en IPv4-adress från den Azure hanterade adresspoolen.
Limitations
Följande begränsningar gäller för offentliga IP-prefix för offentliga IP-adresser för nod.
Lista över prefix:
- Prefixlistan kan innehålla högst ett IPv4-prefix och ett IPv6-prefix. Två prefix med samma IP-version avvisas.
- Du måste aktivera offentliga IP-adresser i nodpoolen när du anger prefix.
- Du kan inte använda parametrarna
--node-public-ip-prefix-idsoch--node-public-ip-prefix-idi samma kommando. - Nodens offentliga IP-konfiguration är oföränderlig. Om du vill ändra de offentliga IP-prefixen måste du skapa en ny nodpool och migrera arbetsbelastningar.
Prefix resources:
- Varje prefix måste ha Standard SKU. Basic- och Standard V2-prefix stöds inte.
- Varje prefix måste finnas i samma prenumeration och i samma region som ditt AKS-kluster.
- Du kan inte använda ett prefix som redan är kopplat till en lastbalanserare.
- Om nodpoolen använder tillgänglighetszoner måste varje prefixs zoner täcka nodpoolens zoner. Ett zonredundant prefix, som inte har några tilldelade zoner, fungerar med alla nodpooler.
Kapacitet och skala:
- Varje prefix måste ha tillräckligt med adresser för nodpoolens antal noder, eftersom varje nod använder en adress från varje prefix som du anger.
- Cluster Autoscaler stöds, men se till att det konfigurerade maximala antalet noder inte överskrider antalet tillgängliga IP-adresser i varje prefix som du anger. Om du använder ett prefix med endast IPv6 begränsar endast IPv6-prefixet antalet noder eftersom Azure tilldelar IPv4-adresserna automatiskt.
Funktionskompatibilitet:
- Du kan inte använda ett offentligt IP-prefix med endast IPv6 på ett kluster som använder API-serverauktoriserade IP-intervall, eftersom Azure tilldelar nodens IPv4-adress automatiskt och du inte kan lägga till den i en lista över tillåtna i förväg. Använd API Server VNet-integrering eller ett privat kluster i stället, eller inkludera ett IPv4-prefix i listan.
- Varje nod tilldelas en enda offentlig IP-adress för IPv6.
- Den här funktionen stöds inte för AKS Automatic eller automatisk nodetablering.
- Nodpooler med flera nätverkskort stöds inte.
Leta upp offentliga IP-adresser för noder
Du kan hitta offentliga IP-adresser för dina noder på olika sätt:
- Använd Azure CLI-kommandot
az vmss list-instance-public-ips. - Använd PowerShell- eller Bash-kommandon.
- Du kan också visa offentliga IP-adresser i Azure Portal genom att visa instanserna i VM-skalningsuppsättningen.
Viktigt!
Nodresursgruppen innehåller noderna och deras offentliga IP-adresser. Använd nodresursgruppen när du kör kommandon för att hitta offentliga IP-adresser för dina noder.
az vmss list-instance-public-ips --resource-group <MC_region_aksClusterName_region> --name <virtualMachineScaleSetName>
Använda offentliga IP-taggar på offentliga IP-adresser för noder
Offentliga IP-taggar kan användas på offentliga IP-adresser för noder för att använda funktionen Azure Routing Preference , som är tillgänglig i angivna regioner.
Krav
- AKS version 1.29 eller senare krävs.
Skapa ett nytt kluster med routningsinställningen Internet
az aks create \
--name <aksClusterName> \
--location <region> \
--resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet \
--generate-ssh-keys
Lägg till en nodpool med internet som routningspreferens
az aks nodepool add --cluster-name <aksClusterName> \
--name <nodePoolName> \
--location <region> \
--resource-group <resourceGroup> \
--enable-node-public-ip \
--node-public-ip-tags RoutingPreference=Internet
Tillåt värdportanslutningar och lägg till nodpooler i programsäkerhetsgrupper
AKS-noder som använder offentliga IP-adresser för noder som är värdar för tjänster på värdadressen måste ha en NSG-regel tillagd för att tillåta trafiken. Om du lägger till önskade portar i nodpoolkonfigurationen skapas lämpliga tillåtna regler i klusternätverkssäkerhetsgruppen.
Om en nätverkssäkerhetsgrupp finns i undernätet och ett kluster använder ett eget virtuellt nätverk, måste en tillåtande regel läggas till i den nätverkssäkerhetsgruppen. Detta kan begränsas till noderna i en viss nodpool genom att lägga till nodpoolen i en programsäkerhetsgrupp (ASG). En hanterad ASG skapas som standard i den hanterade resursgruppen om tillåtna värdportar anges. Noder kan också läggas till i en eller flera anpassade ASG:er genom att ange resurs-ID för NSG:erna i nodpoolsparametrarna.
Specifikationsformat för värdport
När du anger listan med portar som ska tillåtas använder du en kommaavgränsad lista med poster i formatet port/protocol eller startPort-endPort/protocol.
Exempel:
- 80/tcp
- 80/tcp,443/tcp
- 53/udp,80/tcp
- 50000-60000/tcp
Krav
- AKS version 1.29 eller senare krävs.
Skapa ett nytt kluster med tillåtna portar och programsäkerhetsgrupper
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
Lägga till en ny nodpool med tillåtna portar och programsäkerhetsgrupper
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>"
Uppdatera de tillåtna portarna och programsäkerhetsgrupperna för en nodpool
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>"
Tilldela automatiskt värdportar för poddarbetsbelastningar (FÖRHANDSVERSION)
När offentliga IP-adresser konfigureras på noder kan värdportar användas för att tillåta poddar att ta emot trafik direkt utan att behöva konfigurera en lastbalanserartjänst. Detta är särskilt användbart i scenarier som spel, där den tillfälliga karaktären hos nodens IP och port inte är ett problem eftersom en matchmaker-tjänst med ett välkänt värdnamn kan ge rätt värd och port att använda vid anslutningstid. Men eftersom endast en process på en värd kan lyssna på samma port kan användning av program med värdportar leda till problem med schemaläggning. För att undvika det här problemet ger AKS möjlighet att låta systemet dynamiskt tilldela en tillgänglig port vid schemaläggningstid, vilket förhindrar konflikter.
Varning
Trafiken till poddens värdport blockeras av de förvalda NSG-reglerna i klustret. Den här funktionen bör kombineras med att tillåta värdportar i nodpoolen så att trafik kan flöda.
Viktigt!
AKS-förhandsfunktioner är tillgängliga via självbetjäning och frivillig anmälan. Förhandsversioner tillhandahålls "som är" och "som tillgängliga", och de undantas från serviceavtalen och den begränsade garantin. AKS-förhandsversioner omfattas delvis av kundsupport efter bästa förmåga. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:
Krav
- AKS version 1.29 eller senare krävs.
Registrera funktionsflaggan PodHostPortAutoAssignPreview
Registrera funktionsflaggan PodHostPortAutoAssignPreview med kommandot az feature register , som du ser i följande exempel:
az feature register --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"
Det tar några minuter för statusen att visa Registrerad. Kontrollera registreringsstatusen med kommandot az feature show :
az feature show --namespace "Microsoft.ContainerService" --name "PodHostPortAutoAssignPreview"
När statusen visar Registrerad uppdaterar du registreringen av Resursprovidern Microsoft.ContainerService med hjälp av kommandot az provider register :
az provider register --namespace Microsoft.ContainerService
Tilldela automatiskt en värdport till en podd
Utlösande av automatisk tilldelning av värdport görs genom att distribuera en arbetsbelastning utan värdportar och tillämpa anteckningen kubernetes.azure.com/assign-hostports-for-containerports med listan över portar som behöver värdporttilldelningar. Värdet för anteckningen ska anges som en kommaavgränsad lista med poster som port/protocol, där porten är ett enskilt portnummer som definieras i poddspecifikationen och protokollet är tcp eller udp.
Portar tilldelas från intervallet 40000-59999 och kommer att vara unika i klustret. De tilldelade portarna läggs också till i miljövariabler i podden så att programmet kan avgöra vilka portar som har tilldelats. Miljövariabelnamnet kommer att ha följande format (exempel nedan): <deployment name>_PORT_<port number>_<protocol>_HOSTPORT, så ett exempel är mydeployment_PORT_8080_TCP_HOSTPORT: 41932.
Här är ett exempel echoserver på en distribution som visar mappningen av värdportar för portarna 8080 och 8443:
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
När distributionen tillämpas finns posterna hostPort i YAML för de enskilda poddarna:
$ 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ästa steg
Lär dig mer om att använda flera nodpooler i AKS.
Lär dig mer om att använda standardlastbalanserare i AKS