Dela via


Översikt över Azure CNI-nätverk i Azure Kubernetes Service (AKS)

Som standard använder AKS-kluster kubenet och skapar ett virtuellt nätverk och undernät. Med kubenet får noder en IP-adress från ett virtuellt nätverksundernät. Nätverksadressöversättning (NAT) konfigureras sedan på noderna och poddar får en IP-adress "dold" bakom nodens IP-adress. Den här metoden minskar antalet IP-adresser som du behöver reservera i ditt nätverksutrymme för poddar att använda.

Med Azure Container Networking Interface (CNI) får varje podd en IP-adress från undernätet och kan nås direkt. System i samma virtuella nätverk som AKS-klustret ser poddens IP-adress som källadress för trafik från podden. System utanför det virtuella AKS-klustrets virtuella nätverk ser nod-IP som källadress för all trafik från podden. Dessa IP-adresser måste vara unika i nätverket och måste planeras i förväg. Varje nod har en konfigurationsparameter för det maximala antalet poddar som den stöder. Motsvarande antal IP-adresser per nod reserveras sedan i förväg för den noden. Den här metoden kräver mer planering och leder ofta till överbelastning av IP-adresser eller behovet av att återskapa kluster i ett större undernät när programkraven växer.

Kommentar

Den här artikeln introducerar endast traditionell Azure CNI. För Azure CNI Overlay, Azure CNI VNet för dynamisk IP-allokering och Azure CNI VNet – Statisk blockallokering (förhandsversion). Läs dokumentationen i stället.

Förutsättningar

  • Det virtuella nätverket för AKS-klustret måste tillåta utgående Internetanslutning.

  • AKS-kluster kan inte använda 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16eller 192.0.2.0/24 för Kubernetes-tjänstens adressintervall, poddadressintervall eller klusteradressintervall för virtuella nätverk.

  • Klusteridentiteten som används av AKS-klustret måste ha minst behörighet som nätverksdeltagare i undernätet i det virtuella nätverket. Om du vill definiera en anpassad roll i stället för att använda den inbyggda rollen Nätverksdeltagare krävs följande behörigheter:

    • Microsoft.Network/virtualNetworks/subnets/join/action

    • Microsoft.Network/virtualNetworks/subnets/read

    • Microsoft.Authorization/roleAssignments/write

  • Det undernät som tilldelats AKS-nodpoolen kan inte vara ett delegerat undernät.

  • AKS tillämpar inte nätverkssäkerhetsgrupper (NSG:er) på undernätet och ändrar inte någon av de NSG:er som är associerade med det undernätet. Om du anger ett eget undernät och lägger till NSG:er som är associerade med det undernätet måste du se till att säkerhetsreglerna i NSG:erna tillåter trafik inom nodens CIDR-intervall. Mer information finns i Nätverkssäkerhetsgrupper.

Distributionsparametrar

När du skapar ett AKS-kluster kan följande parametrar konfigureras för Azure CNI-nätverk:

Virtuellt nätverk: Det virtuella nätverk som du vill distribuera Kubernetes-klustret till. Om du vill skapa ett nytt virtuellt nätverk för klustret väljer du Skapa nytt och följer stegen i avsnittet Skapa virtuellt nätverk . Om du vill välja ett befintligt virtuellt nätverk kontrollerar du att det finns på samma plats och en Azure-prenumeration som ditt Kubernetes-kluster. Information om begränsningar och kvoter för ett virtuellt Azure-nätverk finns i Begränsningar, kvoter och begränsningar för Azure-prenumerationer och tjänster.

Undernät: Undernätet i det virtuella nätverk där du vill distribuera klustret. Om du vill skapa ett nytt undernät i det virtuella nätverket för klustret väljer du Skapa nytt och följer stegen i avsnittet Skapa undernät . För hybridanslutningar bör adressintervallet inte överlappa andra virtuella nätverk i din miljö.

Plugin-program för Azure-nätverk: När plugin-programmet för Azure-nätverk används kan den interna LoadBalancer-tjänsten med "externalTrafficPolicy=Local" inte nås från virtuella datorer med en IP-adress i clusterCIDR som inte tillhör AKS-klustret.

Kubernetes-tjänstadressintervall: Den här parametern är den uppsättning virtuella IP-adresser som Kubernetes tilldelar interna tjänster i klustret. Det här intervallet kan inte uppdateras när du har skapat klustret. Du kan använda alla privata adressintervall som uppfyller följande krav:

  • Får inte ligga inom ip-adressintervallet för det virtuella nätverket i klustret
  • Får inte överlappa med andra virtuella nätverk som klustrets virtuella nätverkskolleger har
  • Får inte överlappa med några lokala IP-adresser
  • Får inte ligga inom intervallen 169.254.0.0/16, 172.30.0.0/16, 172.31.0.0/16eller 192.0.2.0/24

Även om det är tekniskt möjligt att ange ett tjänstadressintervall inom samma virtuella nätverk som klustret, rekommenderas det inte. Oförutsägbart beteende kan uppstå om överlappande IP-intervall används. Mer information finns i avsnittet Vanliga frågor och svar i den här artikeln. Mer information om Kubernetes-tjänster finns i Tjänster i Kubernetes-dokumentationen.

Ip-adress för Kubernetes DNS-tjänsten: IP-adressen för klustrets DNS-tjänst. Den här adressen måste ligga inom Kubernetes Service-adressintervallet. Använd inte den första IP-adressen i adressintervallet. Den första adressen i undernätsintervallet används för adressen kubernetes.default.svc.cluster.local .

Vanliga frågor och svar

  • Kan jag distribuera virtuella datorer i mitt klusterundernät?

    Ja. Men för Azure CNI för dynamisk IP-allokering kan de virtuella datorerna inte distribueras i poddens undernät.

  • Vilken käll-IP ser externa system för trafik som kommer från en Azure CNI-aktiverad podd?

    System i samma virtuella nätverk som AKS-klustret ser poddens IP-adress som källadress för trafik från podden. System utanför det virtuella AKS-klustrets virtuella nätverk ser nod-IP som källadress för all trafik från podden.

    Men för Azure CNI för dynamisk IP-allokering, oavsett om anslutningen finns i samma virtuella nätverk eller mellan virtuella nätverk, är podd-IP alltid källadressen för all trafik från podden. Det beror på att Azure CNI för dynamisk IP-allokering implementerar Microsoft Azure Container Networking-infrastrukturen , vilket ger en upplevelse från slutpunkt till slutpunkt. Därför eliminerar det användningen av ip-masq-agent, som fortfarande används av traditionell Azure CNI.

  • Kan jag konfigurera nätverksprinciper per podd?

    Ja, Kubernetes-nätverksprincip är tillgänglig i AKS. Information om hur du kommer igång finns i Skydda trafik mellan poddar med hjälp av nätverksprinciper i AKS.

  • Kan det maximala antalet poddar distribueras till en nod?

    Ja, när du distribuerar ett kluster med Azure CLI eller en Resource Manager-mall. Se Maximalt antal poddar per nod.

    Du kan inte ändra det maximala antalet poddar per nod i ett befintligt kluster.

  • Hur gör jag för att konfigurera ytterligare egenskaper för undernätet som jag skapade när AKS-klustret skapades? Till exempel tjänstslutpunkter.

    Den fullständiga listan med egenskaper för det virtuella nätverket och undernäten som du skapar när AKS-klustret skapas kan konfigureras på standardsidan för konfiguration av virtuella nätverk i Azure-portalen.

  • Kan jag använda ett annat undernät i mitt virtuella klusternätverk för Kubernetes-tjänstens adressintervall?

    Det rekommenderas inte, men den här konfigurationen är möjlig. Tjänstadressintervallet är en uppsättning virtuella IP-adresser som Kubernetes tilldelar interna tjänster i klustret. Azure Networking har ingen insyn i tjänstens IP-intervall för Kubernetes-klustret. Bristen på insyn i klustrets tjänstadressintervall kan leda till problem. Du kan senare skapa ett nytt undernät i klustrets virtuella nätverk som överlappar tjänstadressintervallet. Om en sådan överlappning inträffar kan Kubernetes tilldela en tjänst en IP-adress som redan används av en annan resurs i undernätet, vilket orsakar oförutsägbart beteende eller fel. Genom att se till att du använder ett adressintervall utanför klustrets virtuella nätverk kan du undvika den här överlappningsrisken.

Gå vidare

Läs mer om nätverk i AKS i följande artiklar: