Nätverksbegrepp för Kubernetes-containrar

Slutförd

Kubernetes är en bärbar, utökningsbar plattform med öppen källkod för att automatisera distribution, skalning och hantering av dina containerbaserade arbetsbelastningar. Som orkestreringsplattform ger Kubernetes enkel användning och flexibilitet som PaaS(Platform as a Service) och IaaS-erbjudanden (Infrastructure as a Service).

Viktig

Du måste förstå begrepp som virtuella nätverk, lastbalanserare och omvända proxyservrar för att konfigurera Kubernetes-nätverk.

Kluster och noder

Kubernetes baseras på kluster. I stället för att ha en enda virtuell dator använder den flera virtuella datorer som kallas noder som fungerar tillsammans som en. Kubernetes använder en klusterarkitektur som består av en primär nod och en eller flera arbetsnoder. Den primära noden kör kontrollplanskomponenterna, till exempel API-servern, schemaläggaren och kontrollanthanteraren. Arbetsnoderna kör dataplanskomponenterna, till exempel kubelet, kube-proxyoch containerkörningen.

diagram som visar hur Kubernetes använder en klusterarkitektur som består av en primär nod och en eller flera arbetsnoder.

Kube-proxykomponenten ansvarar för lokala klusternätverk och körs på varje nod. Det säkerställer att varje nod har en unik IP-adress. Den implementerar också regler för att hantera routning och belastningsutjämning av trafik med hjälp av IP-tabeller och en virtuell IP-server. Den här proxyn tillhandahåller inte DNS-tjänster på egen hand. Ett DNS-klustertillägg baserat på CoreDNS rekommenderas och installeras som standard.

Podar

En Kubernetes-podd grupperar containrar och program i en logisk struktur. Dessa poddar har ingen intelligens och består av en eller flera programcontainrar. Var och en har en IP-adress, nätverksregler och exponerade portar.

diagram som visar hur en Kubernetes-podd grupperar containrar och program i en logisk struktur.

En Kubernetes-distribution är en utveckling av poddar. En distribution omsluter poddarna till ett intelligent objekt som gör att de kan skala ut. Du kan enkelt duplicera och skala ditt program för att stödja mer belastning utan att behöva konfigurera komplexa nätverksregler.

Abstraktionslagerresurser

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. Kube-proxykomponenten körs på varje nod för att tillhandahålla dessa nätverksfunktioner.

I Kubernetes:

  • Services logiskt gruppera poddar för att ge direkt åtkomst till en specifik port via en IP-adress eller ett DNS-namn.
  • ServiceTypes kan du ange vilken typ av tjänst du vill ha.
  • Du kan distribuera trafik med hjälp av en lastbalanserare.
  • Layer 7-routning av programtrafik kan också uppnås med ingresskontrollanter.
  • Du kan kontrollera utgående trafik för klusternoder.
  • Säkerhet och filtrering av nätverkstrafiken för poddar är möjlig med nätverksprinciper.

Nätverk i Kubernetes

Kubernetes har specifika krav för hur du implementerar nätverk för ett kluster. Dina konfigurationsalternativ påverkar dina alternativ för hur du exponerar dina appar i klusternätverket och hur du lagrar data. För att förenkla kommunikationen förväntar sig Kubernetes att du konfigurerar nätverk på ett sådant sätt att:

  • Poddar kan kommunicera med varandra mellan noder utan NAT (Network Address Translation).
  • Noder och poddar kan kommunicera med varandra utan NAT.
  • Agenter på en nod kan kommunicera med alla noder och poddar.

En containers konfiguration och data i den är inte beständiga mellan körningar. När du har tagit bort en container är all information borta om den inte är konfigurerad att använda en volym. Samma sak gäller för containerns nätverkskonfiguration och eventuella IP-adresser som tilldelats den.

En utplacering är en logisk gruppering av poddar. Det betraktas inte som en fysisk arbetsbelastning och tilldelas inte någon IP-adress. Varje podd tilldelas automatiskt en IP-adress som går förlorad när podden förstörs. Det här beteendet gör en manuell strategi för nätverkskonfiguration komplex.

Kubernetes-nätverksalternativ för Windows-containrar

När du distribuerar Kubernetes med Windows-containrar har du två nätverksalternativ: Services och Ingress-styrenheter. Om du vill använda de här alternativen är Windows beroende av CNI-plugin-program (Container Network Interface).

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. Tjänsten fungerar som en startpunkt för gruppen poddar och tillhandahåller en statisk IP-adress. Trafiken kommer till gruppens tjänst och distribueras i ett rundturmönster till poddarna. När IP-adresserna för poddarna ändras över tid spårar tjänsten ändringarna för att säkerställa rätt flöde av nätverkstrafik till poddarna.

Containerbaserade program som körs på Kubernetes måste skicka och ta emot data via Internet. Kubernetes stöder den här kommunikationen via ingress- och utgående komponenter. Ingresskontrollanten anger vilken trafik och vilka källor som kan ansluta till dina tjänster. Med egress-kontroller kan du ansluta dina appar till externa parter via en internetgateway.

Med CNI-plugin-program kan Kubernetes använda olika nätverksgränssnitt för containernätverk. Plugin-program ansluter dina poddar till nätverket och allokerar podd-IP-adresserna. De interagerar med Windows Host Networking Service (HNS) och Host Compute Service (HCS) för att skapa och hantera nätverksresurser för Windows-containrar. Några exempel på plugin-program är Calico, Flannel och Azure CNI.

Kubernetes Tjänsttyper

Om du vill konfigurera önskad tjänst kan du ange något av följande Kubernetes-ServiceTypes-:

  • ClusterIP- skapar en intern IP-adress för användning i klustret. Den här tjänsten är bra för interna program som stöder andra arbetsbelastningar i klustret. Det här är standardvärdet som används om du inte uttryckligen anger en typ för en tjänst.

diagram som visar hur ClusterIP skapar en intern IP-adress för användning 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.

diagram som visar hur 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 lastbalanserarresurs, konfigurerar en extern IP-adress och ansluter de begärda poddarna till lastbalanserarens serverdelspool. För att kundernas trafik ska kunna nå programmet skapas belastningsutjämningsregler på önskade portar.

diagram som visar hur LoadBalancer skapar en lastbalanserareresurs, konfigurerar en extern IP-adress och ansluter de begärda poddarna till lastbalanserarens serverdelspool.

För HTTP/S-belastningsutjämning av inkommande trafik är ett annat alternativ att använda en ingresskontrollant.

  • ExternalName skapar en specifik DNS-post för enklare programåtkomst.

Kubernetes-ingress

Kubernetes-ingresskomponenten exponerar vägar för HTTP- och HTTPS-trafik utanför ett kluster till tjänster i klustret. Du definierar ingressvägar med hjälp av ingressregler. Ett Kubernetes-kluster avvisar all inkommande trafik utan att dessa vägar har definierats.

diagram som visar hur Kubernetes-ingresskomponenten exponerar vägar för HTTP- och HTTPS-trafik utanför ett kluster för tjänster i klustret.

Ingress-kontroller

En ingresskontrollant är en programvara som tillhandahåller konfigurerbar trafikroutning för Kubernetes-tjänster. Kubernetes ingressresurser används för att konfigurera ingressregler och vägar för enskilda Kubernetes-tjänster. Genom att använda en ingresskontrollant och ingressregler kan du använda en enda IP-adress för att dirigera trafik till flera tjänster i ett Kubernetes-kluster. När du har distribuerat kontrollanten i din miljö kan du sedan skapa och distribuera ingressmanifestet. Kubernetes använder ingresskontrollanter för att hantera ingresskonfiguration i ett kluster och tillhandahåller flera funktioner.

Ingressregler

Ingressregler definierar var trafik kommer från och var den ska dirigeras i ett kluster. Du definierar ingressregler i en manifestfil för ingressdistribution. Dessa regler definieras i regelnyckeln för manifestfilen. Varje regel är en uppsättning värden som beskriver regeln.

Ingressanteckningar

Med en anteckning kan du bifoga metadata som inte identifieras, till exempel ingresskonfigurationer, för arbetsbelastningar. Du kan se anteckningen som en intern etikett som definierar specifika konfigurationer för resurser. Du kanske till exempel vill använda en specifik ingresskontrollant som stöder namnomskrivning eller nyttolastbegränsning.

Nätverksprinciper

Kubernetes tillhandahåller Network-principen funktion för att styra trafikflödet mellan poddar. Du kan tillåta eller neka trafik baserat på dina inställningar för tilldelade etiketter, namnområdet och trafikporten. Nätverksprinciper erbjuder en molnbaserad metod som är idealisk för att styra trafik mellan Kubernetes-poddar.