Kubernetes

Kubernetes Ingress

Kubernetes Ingress
Kubernetes har mange bevægelige dele. Dette kan forventes fra enhver model beregnet til distribueret computing. For at undersøge, hvad Kubernetes Ingress hjælper os med at opnå, lad os sammenfatte et par relevante detaljer om en typisk Kubernetes-klynge først:

  1. En applikation, der er implementeret i en Kubernetes-klynge, kører som en samlingsbælg.
  2. Bælgene er i det væsentlige containere, der er planlagt på tværs af flere noder.
  3. Noder kan være fysiske servere eller VM'er, der tilbydes af din hostingudbyder. Det er klart, at du også kan Kubernetes på en lokal server, hvis du ønsker det.
  4. Hver Pod har en unik IP-adresse.
  5. Din applikation er opdelt i mange underkomponenter, ofte omtalt som mikrotjenester.
  6. For hver mikroservice i din applikation har du en tilsvarende service i Kubernetes.
  7. I forbindelse med Kubernetes, a Service udsætter en samling bælg til resten af ​​klyngen som en enkelt abstraktion. En enkelt virtuel IP.
  8. Dette hjælper en tjeneste i din applikation med at kommunikere med en anden tjeneste. Det er en abstraktion, der giver dig mulighed for at adressere en samling af bælg snarere end at specificere IP-adressen på en pod, hver gang du vil tale med den.
  9. En Kubernetes-tjeneste fungerer også som en belastningsafbalancering for alle de bælg, den repræsenterer. Trafikken fordeles jævnt over alle knudepunkter.

Så langt så godt. Hver tjeneste kan tale med en anden tjeneste. Denne kommunikation er mulig i hele Kubernetes-klyngen

Eksponering af tjenester

Hvis et træ falder i en skov, og ingen er omkring for at høre det, lyder det?

På en lignende note, hvis din applikation ikke tjener et formål uden for Kubernetes-klyngen, betyder det virkelig noget, om din klynge er godt bygget? Sikkert ikke.

Lad os sige, at vi har en klassisk webapp sammensat af en frontend skrevet i Nodejs og en backend skrevet i Python, der bruger MySQL-database. Du distribuerer to tilsvarende tjenester i din Kubernetes-klynge.

Du laver en Dockerfile, der specificerer, hvordan du pakker frontend-softwaren i en container, og på samme måde pakker du din backend. Dernæst i din Kubernetes-klynge implementerer du to tjenester, der hver kører et sæt bælg bag den. Webtjenesten kan tale med databaseklyngen og omvendt.

Kubernetes udsætter dog ikke nogen af ​​disse tjenester (som er essentielle HTTP-slutpunkter) for resten af ​​verden. Som anført i de officielle dokumenter:

Tjenester antages at have virtuelle IP'er, der kun kan routes inden for klyngenetværket

Dette er helt rimeligt fra et sikkerhedsmæssigt synspunkt, dine tjenester kan tale med hinanden, men klyngen tillader ikke eksterne enheder at tale direkte med tjenesterne. For eksempel er det kun din webfront, der kan tale med databasetjenesten, og ingen andre kan endda sende anmodninger til databasetjenesten.

Problemet opstår, når vi ser på brugen af ​​en frontend-tjeneste. Det skal udsættes for resten af ​​offentligheden, så slutbrugere kan bruge din applikation. Vi udsætter sådanne tjenester ved hjælp af Kubernetes Ingress.

Kubernetes Ingress

Ingress udsætter HTTP- og HTTPS-ruter fra uden for klyngen til tjenester i klyngen. Du kan kontrollere rutningsreglerne ved at definere Kubernetes Ingress-ressourcen. Men det gør meget mere end det. Eksponering af en enkelt tjeneste kan opnås ved hjælp af forskellige andre alternativer som NodePort eller Load Balancers, men disse faciliteter har ikke funktioner, der er sofistikerede nok til en moderne webapp.

Funktioner som, udsætter flere apps på en enkelt IP, definerer ruter osv.

Så lad os forstå disse funktioner for den resterende del af artiklen:

Single Service Ingress

Dette er den enkleste version af at eksponere en enkelt tjeneste som en webfront med en IP (eller et domænenavn) og standard HTTP- og HTTPS-porte (i.e, 80 og 443).

Enkelt Fanout

Dette er en indgangsopsætning, der giver dig mulighed for at tillade indgående trafik til en enkelt IP og dirigere den til flere tjenester.

Den består af:

Single fanout er tilfældet, hvor en enkelt IP bruges til flere tjenester. Tjenesterne kan være på forskellige stier i URI som foo.bar.com / admin kan være en tjeneste for administratorer og foo.bar.com / home kan være den service, der genererer hver brugers startside.

Indgangsporten vil altid være 80 eller 443, men den havn, hvor tjenesterne kører (inde i klyngen), kan variere en hel del.

Denne form for indtrængen hjælper os med at minimere antallet af belastningsafbalancere i klyngen, da det i det væsentlige fungerer som en.

Navnebaseret virtuel hosting

Offentlige IP-adresser er endelige. De er også ret dyre. Idéen med navnebaseret virtuel hosting er ældre end Kubernetes. Kernen i det er, at du peger på DNS-poster for forskellige websteder som ww1.eksempel.com og ww2.eksempel.com til den samme IP-adresse. Serveren, der kører på den IP-adresse, vil se den indgående anmodning, og hvis værtsnavnet, der er nævnt i anmodningen, er til ww1.eksempel.com så tjener det webstedet for dig, og hvis ww2.eksempel.com anmodes om, så serveres det.

I forbindelse med Kubernetes kan vi køre to tjenester, der kører ved f.eks. Port 80 og udsætte dem begge for en enkelt IP-adresse ved hjælp af en indgang også af port 80. Ved indgangspunktet er trafikken på ww1.eksempel.com bliver adskilt fra trafikken til ww2.eksempel.com. Derfor udtryk navn baseret virtuel hosting.

Konklusion

Indtrængen i Kubernetes er ret sofistikeret til at blive dækket af et enkelt indlæg. Der er en række brugssager til det og en række Ingress Controllers, der vil tilføje Ingress-funktionaliteten til din klynge. Jeg vil anbefale at starte med Nginx Ingress Controller.

For yderligere detaljer og specifikationer kan du også følge den officielle dokumentation.

5 bedste arkadespil til Linux
I dag er computere seriøse maskiner, der bruges til spil. Hvis du ikke kan få den nye høje score, ved du hvad jeg mener. I dette indlæg vil du kende n...
Kamp om Wesnoth 1.13.6 Udvikling frigivet
Kamp om Wesnoth 1.13.6 udgivet i sidste måned, er den sjette udviklingsudgivelse i 1.13.x-serien, og den leverer en række forbedringer, især til bruge...
Sådan installeres League Of Legends på Ubuntu 14.04
Hvis du er fan af League of Legends, er dette en mulighed for dig at prøvekøre League of Legends. Bemærk, at LOL understøttes på PlayOnLinux, hvis du ...