Dela via


Nätverksbegrepp för program i Azure Kubernetes Service (AKS)

I en containerbaserad mikrotjänstmetod 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änglighet genom att belastningsutjämning dina program.
  • Du kan begränsa flödet av nätverkstrafik till eller mellan poddar och noder för att förbättra säkerheten.
  • Du kan konfigurera inkommande trafik för SSL/TLS-avslutning eller routning av flera komponenter för dina mer komplexa program.

Den här artikeln beskriver de grundläggande begreppen som tillhandahåller nätverk till dina program i AKS:

Grunderna i Kubernetes-nätverk

Kubernetes använder ett virtuellt nätverkslager för att hantera åtkomst inom och mellan dina program eller deras komponenter:

  • Kubernetes-noder och virtuella nätverk: Kubernetes-noder är anslutna till ett virtuellt nätverk. Den här konfigurationen gör det möjligt för poddar (grundläggande distributionsenheter i Kubernetes) att ha både inkommande och utgående anslutning.

  • Kube-proxykomponent: kube-proxy körs på varje nod och ansvarar för att tillhandahålla nödvändiga nätverksfunktioner.

När det gäller specifika Kubernetes-funktioner:

  • Lastbalanserare: Du kan använda en lastbalanserare för att fördela nätverkstrafiken jämnt över olika resurser.
  • Ingresskontrollanter: Dessa underlättar Layer 7-routning, vilket är viktigt för att dirigera programtrafik.
  • Utgående trafikkontroll: Med Kubernetes kan du hantera och styra utgående trafik från klusternoder.
  • Nätverksprinciper: Dessa principer möjliggör säkerhetsåtgärder och filtrering för nätverkstrafik i poddar.

I samband med Azure-plattformen:

  • Azure effektiviserar virtuella nätverk för AKS-kluster (Azure Kubernetes Service).
  • När du skapar en Kubernetes-lastbalanserare i Azure konfigureras motsvarande Azure-lastbalanserareresurs samtidigt.
  • När du öppnar nätverksportar för poddar konfigurerar Azure automatiskt de nödvändiga reglerna för nätverkssäkerhetsgrupper.
  • Azure kan också hantera externa DNS-konfigurationer för HTTP-programroutning när nya inkommande vägar upprättas.

Virtuella Azure-nätverk

I AKS kan du distribuera ett kluster som använder någon av följande nätverksmodeller:

  • Överläggsnätverksmodell: Överläggsnätverk är den vanligaste nätverksmodellen som används i Kubernetes. Poddar får en IP-adress från en privat, logiskt separat CIDR från det virtuella Azure-nätverksundernätet där AKS-noder distribueras. Den här modellen möjliggör enklare och bättre skalbarhet jämfört med den platta nätverksmodellen.
  • Platt nätverksmodell: En platt nätverksmodell i AKS tilldelar IP-adresser till poddar från ett undernät från samma virtuella Azure-nätverk som AKS-noderna. All trafik som lämnar dina kluster är inte SNAT'd och podd-IP-adressen exponeras direkt för målet. Den här modellen kan vara användbar för scenarier som att exponera podd-IP-adresser för externa tjänster.

Mer information om nätverksmodeller i AKS finns i CNI-nätverk i AKS.

Ingresskontrollanter

När du skapar en LoadBalancer-tjänst skapar du även en underliggande Azure-lastbalanserareresurs. Lastbalanseraren är konfigurerad för att distribuera trafik till poddarna i tjänsten på en viss port.

LoadBalancer fungerar bara på lager 4. På nivå 4 känner tjänsten inte till de faktiska programmen och kan inte göra några fler routningsöverväganden.

Ingresskontrollanter fungerar på nivå 7 och kan använda mer intelligenta regler för att distribuera programtrafik. Ingresskontrollanter dirigerar vanligtvis HTTP-trafik till olika program baserat på den inkommande URL:en.

Diagram som visar inkommande trafikflöde i ett AKS-kluster

Jämföra alternativ för ingress

I följande tabell visas funktionsskillnaderna mellan de olika alternativen för ingresskontrollanter:

Funktion Tillägg för programroutning Application Gateway for Containers Azure Service Mesh/Istio-baserat tjänstnät
Ingress/Gateway-styrenhet NGINX-ingresskontrollant Azure Application Gateway för containrar Ingressgateway för Istio
API Ingress-API API för ingress och gateway-API Gateway-API
Värd I klustret Azure värdhanterat I klustret
Skalning Automatisk skalning Automatisk skalning Automatisk skalning
Belastningsutjämning Intern/extern Externt Intern/extern
SSL-avslutning I klustret Ja: Avlastning och E2E SSL I klustret
mTLS Ej tillämpligt Ja till serverdel Ej tillämpligt
Statisk IP-adress Ej tillämpligt FQDN Ej tillämpligt
Azure Key Vault-lagrade SSL-certifikat Ja Ja Ej tillämpligt
Azure DNS-integrering för DNS-zonhantering Ja Ja Ej tillämpligt

I följande tabell visas de olika scenarier där du kan använda varje ingresskontrollant:

Alternativ för ingress Användningsområde för
Hanterad NGINX – tillägg för programroutning • In-cluster värdbaserade, anpassningsbara och skalbara NGINX-ingresskontrollanter.
• Grundläggande funktioner för belastningsutjämning och routning.
• Intern och extern lastbalanserare.
• Konfiguration av statisk IP-adress.
• Integrering med Azure Key Vault för certifikathantering.
• Integrering med Azure DNS-zoner för offentlig och privat DNS-hantering.
• Stöder API:et ingress.
Application Gateway för containrar • Azure-värdbaserad ingressgateway.
• Flexibla distributionsstrategier som hanteras av kontrollanten eller ta med din egen Application Gateway för containrar.
• Avancerade trafikhanteringsfunktioner som automatiska återförsök, återhämtning i tillgänglighetszonen, ömsesidig autentisering (mTLS) till serverdelsmål, trafikdelning/viktad resursallokering och automatisk skalning.
• Integrering med Azure Key Vault för certifikathantering.
• Integrering med Azure DNS-zoner för offentlig och privat DNS-hantering.
• Stöder API:er för ingress och gateway.
Ingressgateway för Istio • Baserat på Envoy, när du använder med Istio för ett servicenät.
• Avancerade trafikhanteringsfunktioner som hastighetsbegränsning och kretsbrytning.
• Stöd för mTLS
• Stöder gateway-API:et.

Skapa en ingressresurs

Tillägget för programroutning är det rekommenderade sättet att konfigurera en ingresskontrollant i AKS. Tillägget för programroutning är en fullständigt hanterad ingresskontrollant för Azure Kubernetes Service (AKS) som tillhandahåller följande funktioner:

  • Enkel konfiguration av hanterade NGINX-ingresskontrollanter baserat på Kubernetes NGINX-ingresskontrollant.

  • Integrering med Azure DNS för offentlig och privat zonhantering.

  • SSL-avslutning med certifikat som lagras i Azure Key Vault.

Mer information om tillägget för programroutning finns i Hanterad NGINX-ingress med tillägget för programroutning.

Ip-bevarande av klientkälla

Konfigurera ingresskontrollanten så att klientkällans IP-adress bevaras på 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 den begäran inte tillgänglig för målcontainern. När du aktiverar IP-bevarande av klientkällan är käll-IP för klienten tillgängligt i begärandehuvudet under X-Forwarded-For.

Om du använder IP-konservering av klientkällan på ingresskontrollanten kan du inte använda TLS-direkt. Ip-bevarande av klientkälla och TLS-direkt kan användas med andra tjänster, till exempel LoadBalancer-typen .

Mer information om IP-bevarande av klientkälla finns i Så här fungerar IP-bevarande av klientkälla för LoadBalancer Services i AKS.

Kontrollera utgående trafik (utgående)

AKS-kluster distribueras i ett virtuellt nätverk och har utgående beroenden på tjänster utanför det virtuella nätverket. Dessa utgående beroenden definieras nästan helt och hållet med fullständigt kvalificerade domännamn (FQDN). Som standard har AKS-kluster obegränsad utgående (utgående) Internetåtkomst, vilket gör att de noder och tjänster som du kör får åtkomst till externa resurser efter behov. Om du vill kan du begränsa utgående trafik.

Mer information finns i Kontrollera utgående trafik för klusternoder i AKS.

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äkerhetsgrupper.

Du behöver inte konfigurera NSG-regler manuellt för att filtrera trafik för poddar i ett AKS-kluster. Du kan definiera alla nödvändiga portar och vidarebefordran som en del av Kubernetes Service-manifesten och låta Azure-plattformen skapa eller uppdatera lämpliga regler.

Du kan också använda nätverksprinciper för att automatiskt tillämpa trafikfilterregler på poddar.

Mer information finns i Hur nätverkssäkerhetsgrupper filtrerar nätverkstrafik.

Nätverksprinciper

Som standard kan alla poddar i ett AKS-kluster skicka och ta emot trafik utan begränsningar. För förbättrad säkerhet definierar du regler som styr trafikflödet, till exempel:

  • Serverdelsprogram exponeras endast för nödvändiga klientdelstjänster.
  • Databaskomponenter är endast tillgängliga för de programnivåer som ansluter till dem.

Nätverksprincip är en Kubernetes-funktion som är tillgänglig i AKS som gör att du kan styra trafikflödet mellan poddar. Du kan tillåta eller neka 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 anpassat, molnbaserat sätt att styra flödet av trafik för poddar. Eftersom 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 hjälp av 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 kubenet eller Azure CNI.

Rekommenderade metoder 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: