Nätverksbegrepp för program i Azure Kubernetes Service (AKS)
I en containerbaserad mikrotjänst för programutveckling arbetar programkomponenter tillsammans för att bearbeta sina uppgifter. Kubernetes tillhandahåller olika resurser som möjliggör det här samarbetet:
- Du kan ansluta till och exponera program internt eller externt.
- Du kan skapa program med hög tillgänglig genom att belastningsutjämna dina program.
- För dina mer komplexa program kan du konfigurera ingresstrafik för SSL/TLS-avslutning eller routning av flera komponenter.
- Av säkerhetsskäl kan du begränsa flödet av nätverkstrafik till eller mellan poddar och noder.
Den här artikeln beskriver de grundläggande begrepp som tillhandahåller nätverk för dina program i AKS:
Grundläggande om Kubernetes
För att tillåta åtkomst till dina program eller mellan programkomponenter tillhandahåller Kubernetes ett abstraktionslager till virtuella nätverk. Kubernetes-noder ansluter till ett virtuellt nätverk, vilket ger inkommande och utgående anslutning för poddar. Komponenten kube-proxy körs på varje nod för att tillhandahålla dessa nätverksfunktioner.
I Kubernetes:
- Tjänster grupperar logiskt poddar för att tillåta direkt åtkomst på en specifik port via en IP-adress eller ett DNS-namn.
- Du kan distribuera trafik med hjälp av en lastbalanserare.
- Mer komplex routning av programtrafik kan också uppnås med ingress-kontrollanter.
- Säkerhet och filtrering av nätverkstrafik för poddar är möjligt med Kubernetes-nätverksprinciper .
Azure-plattformen förenklar också virtuella nätverk för AKS-kluster. När du skapar en Kubernetes-lastbalanserare skapar och konfigurerar du även den underliggande Azure Load Balancer-resursen. När du öppnar nätverksportar till poddar konfigureras motsvarande regler för Azure-nätverkssäkerhetsgrupp. För HTTP-programroutning kan Azure också konfigurera extern DNS när nya ingressvägar konfigureras.
Tjänster
För att förenkla nätverkskonfigurationen för programarbetsbelastningar använder Kubernetes tjänster för att logiskt gruppera en uppsättning poddar och tillhandahålla nätverksanslutning. Följande tjänsttyper är tillgängliga:
Kluster-IP
Skapar en intern IP-adress för användning i AKS-klustret. Bra för interna program som stöder andra arbetsbelastningar i klustret.

NodePort
Skapar en portmappning på den underliggande noden som gör att programmet kan nås direkt med nodens IP-adress och port.

LoadBalancer
Skapar en Azure-lastbalanseringsresurs, konfigurerar en extern IP-adress och ansluter de begärda poddarna till lastbalanseringspoolens backend-pool. För att kundernas trafik ska kunna nå programmet skapas belastningsutjämningsregler på önskade portar.

För extra kontroll och routning av inkommande trafik kan du i stället använda en inkommande styrenhet.
ExternalName
Skapar en specifik DNS-post för enklare programåtkomst.
Antingen kan lastbalanserare och tjänsters IP-adress tilldelas dynamiskt, eller så kan du ange en befintlig statisk IP-adress. Du kan tilldela både interna och externa statiska IP-adresser. Befintliga statiska IP-adresser är ofta knutna till en DNS-post.
Du kan skapa både interna och externa lastbalanserare. Interna lastbalanserare tilldelas bara en privat IP-adress, så de kan inte nås från Internet.
Virtuella Azure-nätverk
I AKS kan du distribuera ett kluster som använder någon av följande två nätverksmodeller:
Kubenet-nätverk
Nätverksresurserna skapas och konfigureras vanligtvis när AKS-klustret distribueras.
Azure Container Networking Interface nätverk (CNI)
AKS-klustret ansluts till befintliga resurser och konfigurationer för virtuella nätverk.
Kubenet-nätverk (grundläggande)
Nätverksalternativet kubenet är standardkonfigurationen för att skapa AKS-kluster. Med kubenet:
- Noder får en IP-adress från det virtuella Azure-nätverkets undernät.
- Poddar får en IP-adress från ett logiskt annat adressutrymme än noderna i undernätet för virtuella Azure-nätverk.
- NAT (Network Address Translation) konfigureras sedan så att poddarna kan komma åt resurser i det virtuella Azure-nätverket.
- Käll-IP-adressen för trafiken översätts till nodens primära IP-adress.
Noder använder kubernetes-plugin-programmet kubenet. Du kan:
- Låt Azure-plattformen skapa och konfigurera de virtuella nätverken åt dig, eller
- Välj att distribuera ditt AKS-kluster till ett befintligt virtuellt nätverksundernät.
Kom ihåg att endast noderna får en dirigerbar IP-adress. Poddarna använder NAT för att kommunicera med andra resurser utanför AKS-klustret. Den här metoden minskar antalet IP-adresser som du måste reservera i ditt nätverksutrymme för poddar att använda.
Mer information finns i Konfigurera kubenet-nätverk för ett AKS-kluster.
Azure CNI (avancerat) nätverk
Med Azure CNI får varje podd en IP-adress från undernätet och kan nås direkt. Dessa IP-adresser måste planeras i förväg och vara unika i hela nätverksutrymmet. Varje nod har en konfigurationsparameter för det maximala antalet poddar som stöds. Motsvarande antal IP-adresser per nod reserveras sedan direkt. Utan planering kan den här metoden leda till att IP-adresserna tar slut eller att kluster måste återskapas i ett större undernät allt eftersom dina programkrav växer.
Till skillnad från kubenet är trafik till slutpunkter i samma virtuella nätverk inte NAT till nodens primära IP-adress. Källadressen för trafik i det virtuella nätverket är poddens IP-adress. Trafik som är extern till det virtuella nätverket är fortfarande NAT:er till nodens primära IP-adress.
Noder använder Azure CNI Kubernetes-pluginprogrammet.

Mer information finns i Konfigurera Azure CNI för ett AKS-kluster.
Jämföra nätverksmodeller
Både kubenet och Azure CNI tillhandahåller nätverksanslutning för dina AKS-kluster. Det finns dock fördelar och nackdelar med var och en. På en hög nivå gäller följande överväganden:
- kubenet
- Sparar IP-adressutrymme.
- Använder intern eller extern Kubernetes-lastbalanserare för att nå poddar utanför klustret.
- Du hanterar och underhåller användardefinierade vägar (UDR:er) manuellt.
- Högst 400 noder per kluster.
- Azure CNI
- Poddar får fullständig virtuell nätverksanslutning och kan nås direkt via deras privata IP-adress från anslutna nätverk.
- Kräver mer IP-adressutrymme.
Följande beteendeskillnader finns mellan kubenet och Azure CNI:
| Funktion | Kubenet | Azure CNI |
|---|---|---|
| Distribuera kluster i befintligt eller nytt virtuellt nätverk | Stöds – UDR:er tillämpas manuellt | Stöds |
| Podd-poddanslutning | Stöds | Stöds |
| Pod-VM-anslutning; Virtuell dator i samma virtuella nätverk | Fungerar när den initieras av en podd | Fungerar på båda sätten |
| Pod-VM-anslutning; Virtuell dator i peer-erat virtuellt nätverk | Fungerar när den initieras av en podd | Fungerar på båda sätten |
| Lokal åtkomst med VPN eller Express Route | Fungerar när den initieras av en podd | Fungerar på båda sätten |
| Åtkomst till resurser som skyddas av tjänstslutpunkter | Stöds | Stöds |
| Exponera Kubernetes-tjänster med hjälp av en lastbalanseringstjänst, App Gateway eller indatakontrollant | Stöds | Stöds |
| Standardzoner Azure DNS privata zoner | Stöds | Stöds |
| Stöd för Windows nodpooler | Stöds inte | Stöds |
När det gäller DNS erbjuds DNS med både kubenet och Azure CNI-plugin-program av CoreDNS, en distribution som körs i AKS med en egen autoskalning. Mer information om CoreDNS på Kubernetes finns i Anpassa DNS-tjänsten. CoreDNS konfigureras som standard för att vidarebefordra okända domäner till DNS-funktionerna i Azure Virtual Network där AKS-klustret distribueras. Därför fungerar Azure DNS och privata zoner för poddar som körs i AKS.
Stödomfång mellan nätverksmodeller
Oavsett vilken nätverksmodell du använder kan både kubenet Azure CNI distribueras på något av följande sätt:
- Azure-plattformen kan automatiskt skapa och konfigurera de virtuella nätverksresurserna när du skapar ett AKS-kluster.
- Du kan manuellt skapa och konfigurera de virtuella nätverksresurserna och ansluta till dessa resurser när du skapar ditt AKS-kluster.
Även om funktioner som tjänstslutpunkter eller UDR stöds med både kubenet och Azure CNI definierar supportprinciperna för AKS vilka ändringar du kan göra. Exempel:
- Om du skapar de virtuella nätverksresurserna manuellt för ett AKS-kluster stöds du när du konfigurerar dina egna UDR:er eller tjänstslutpunkter.
- Om Azure-plattformen automatiskt skapar de virtuella nätverksresurserna för ditt AKS-kluster kan du inte manuellt ändra de AKS-hanterade resurserna för att konfigurera dina egna UDR:er eller tjänstslutpunkter.
Ingresskontrollanter
När du skapar en tjänst av typen LoadBalancer skapar du även en underliggande Azure-lastbalanseringsresurs. Lastbalanseraren är konfigurerad för att distribuera trafik till poddarna i din tjänst på en viss port.
LoadBalancer fungerar bara i lager 4. I lager 4 är tjänsten inte medveten om de faktiska programmen och kan inte göra några fler routningsöverväganden.
Ingress-kontrollanter fungerar på nivå 7 och kan använda mer intelligenta regler för att distribuera programtrafik. Inkommande styrenheter dirigerar vanligtvis HTTP-trafik till olika program baserat på den inkommande URL:en.

Skapa en ingressresurs
I AKS kan du skapa en ingressresurs med hjälp av NGINX, ett liknande verktyg eller funktionen för AKS HTTP-programroutning. När du aktiverar HTTP-programroutning för ett AKS-kluster skapar Azure-plattformen ingress-kontrollanten och en extern DNS-styrenhet. När nya ingressresurser skapas i Kubernetes skapas nödvändiga DNS A-poster i en klusterspecifik DNS-zon.
Mer information finns i Distribuera HTTP-programroutning.
Application Gateway Ingress Controller (AGIC)
Med AGIC-tillägget (Application Gateway Ingress Controller) utnyttjar AKS-kunder Azures interna Application Gateway level 7-lastbalanserare för att exponera molnprogramvara för Internet. AGIC övervakar kubernetes-värdklustret och uppdaterar kontinuerligt en Application Gateway, vilket exponerar valda tjänster på Internet.
Mer information om AGIC-tillägget för AKS finns i Vad är Application Gateway Ingress Controller?.
SSL/TLS-avslutning
SSL/TLS-avslutning är en annan vanlig funktion för ingress. På stora webbprogram som nås via HTTPS hanterar ingressresursen TLS-avslutningen i stället för själva programmet. Om du vill tillhandahålla automatisk generering och konfiguration av TLS-certifiering kan du konfigurera ingressresursen så att den använder leverantörer som "Let's Encrypt".
Mer information om hur du konfigurerar en NGINX Ingress-kontrollant med Let's Encrypt finns i Ingress and TLS.
Bevarande av klientkällans IP-adress
Konfigurera indatakontrollanten så att klientkällans IP-adress bevaras vid begäranden till containrar i AKS-klustret. När ingresskontrollanten dirigerar en klients begäran till en container i AKS-klustret är den ursprungliga käll-IP-adressen för begäran inte tillgänglig för målcontainern. När du aktiverar bevarande av klientkällans IP-adress är käll-IP-adressen för klienten tillgänglig i begärandehuvudet under X-Forwarded-For.
Om du använder bevarande av klientkällans IP-adress på ingress-kontrollanten kan du inte använda TLS-genomgående. Klientkällans IP-bevarande och TLS-genomsnöring kan användas med andra tjänster, till exempel LoadBalancer-typen.
Nätverkssäkerhetsgrupper
En nätverkssäkerhetsgrupp filtrerar trafik för virtuella datorer som AKS-noderna. När du skapar tjänster, till exempel en LoadBalancer, konfigurerar Azure-plattformen automatiskt alla nödvändiga regler för nätverkssäkerhetsgruppen.
Du behöver inte konfigurera regler för nätverkssäkerhetsgrupp manuellt för att filtrera trafik för poddar i ett AKS-kluster. Definiera bara nödvändiga portar och vidarebefordran som en del av dina Kubernetes Service-manifest. Låt Azure-plattformen skapa eller uppdatera lämpliga regler.
Du kan också använda nätverksprinciper för att automatiskt tillämpa trafikfilterregler på poddar.
Nätverksprinciper
Som standard kan alla poddar i ett AKS-kluster skicka och ta emot trafik utan begränsningar. För bättre säkerhet definierar du regler som styr trafikflödet, till exempel:
- Backend-program exponeras endast för nödvändiga frontend-tjänster.
- Databaskomponenter är bara tillgängliga för de programnivåer som ansluter till dem.
Nätverksprincipen är en Kubernetes-funktion som är tillgänglig i AKS och som gör att du kan styra trafikflödet mellan poddar. Du tillåter eller nekar trafik till podden baserat på inställningar som tilldelade etiketter, namnrymd eller trafikport. Nätverkssäkerhetsgrupper är bättre för AKS-noder, men nätverksprinciper är ett mer lämpligt, molnbyggt sätt att styra trafikflödet för poddar. När poddar skapas dynamiskt i ett AKS-kluster kan nödvändiga nätverksprinciper tillämpas automatiskt.
Mer information finns i Skydda trafik mellan poddar med nätverksprinciper i Azure Kubernetes Service (AKS).
Nästa steg
Kom igång med AKS-nätverk genom att skapa och konfigurera ett AKS-kluster med dina egna IP-adressintervall med hjälp av kubenet eller Azure CNI.
Associerade metodtips finns i Metodtips för nätverksanslutning och säkerhet i AKS.
Mer information om grundläggande Kubernetes- och AKS-begrepp finns i följande artiklar: