Kubernetes

Kubernetes servicenät

Kubernetes servicenät
Kubernetes har många resurstyper som hjälper dig att ta bort idén om tjänster eller mikrotjänster. Till exempel, om din apps frontend vill interagera med backend, behöver den inte bry sig om vilken pod den letar efter, eller inte ens vilken IP-adress den hoppas att en backend-pod skulle uppta. Pods exponeras via en tjänst. (Om du är nybörjare i Kubernetes rekommenderar jag det här inlägget för att bättre förstå vad pods är tillsammans med andra viktiga begrepp.)

I huvudsak exponerar Kubernetes a backend-tjänst internt i klustret och fronten interagerar med den här tjänsten. Bälgen som erbjuder tjänsten kan mycket väl bytas ut och ingen märker någonting. Men i takt med att funktionerna i dina applikationer växer ökar också antalet tjänster du behöver behålla. Varje tjänst kan eventuellt prata med alla andra tjänster i klustret, och det resulterande nätverket kallas Service Mesh.

Det finns många tillägg för Kubernetes som hjälper oss att förenkla hanteringen av detta servicenät. Många nyckelfunktioner som TLS, automatiserad belastningsbalansering, säkring av API: er även i det interna nätverket, etc. erbjuds av dessa tillägg. Många alternativ som Istio, Linkerd och Conduit kan integreras med Kubernetes för att uppnå detta. Vi kommer att undersöka Istio i det här inlägget eftersom det är version 1.0 tillkännagavs nyligen.

Förutsättningar

För att komma igång med Istio behöver du ett fungerande kubernetes-kluster. Det finns tre sätt att få det.

  1. Du kan installera Minikube för att skapa ett enda nodkluster på din lokala dator.
  2. Eller om du använder Docker på Windows eller Mac kan du aktivera ett Kubernetes-kluster med en nod i Docker-inställningar.
  3. Eller så kan du använda onlinetjänster som Katacoda lekplats. Vi kommer att använda detta.

Varför använda ett servicenät?

Att installera ett servicenät, som Istio, gör det enkelt att arbeta med mikrotjänster. Under utvecklingen behöver du inte oroa dig för det faktum att din mikrotjänst skulle behöva erbjuda stöd för ömsesidig TLS, lastbalansering eller någon annan aspekt som serviceupptäckt. Med en idealisk servicenät kan du ansluta mikrotjänster, säkra dem från varandra och från omvärlden och hantera dem på ett organiserat sätt. Det hjälper både utvecklare och operatörer oerhört.

Installerar Istio

För att installera Istio krävs ett Kubernetes-kluster. Om du har ett enda nodkluster som du får med Minikube eller Docker på skrivbordet kan alla kommandon köras på din lokala nod. Men om du använder ett kluster med flera noder som det som Katacoda-lekplatsen erbjuder, kom ihåg att de flesta kommandon och inställningsprocedurer görs på masternoden. Ja, det påverkar hela klustret, men vi behöver bara interagera med masternoden.

Vi börjar med att klona (eller ladda ner) den senaste versionen av Istio från Github. Windows-användare kanske vill besöka den här sidan och få rätt .blixtlås fil.

$ curl -L https: // git.io / getLatestIstio | sh -
$ cd istio-1.0.0

Repos namn kan förändras med tiden när nyare släpp kommer igenom, när detta skrivs 1.0.0 är den senaste stabila utgåvan. Denna repo innehåller inte bara serviceförlängningen utan också en exempelapp som heter BookInfo för experimentändamål. Manuset lägger också till den nya katalogen $ PWD / istio-1.0.0 / bin till din PATH-variabel.

Denna katalog innehåller istioctl binär som kan användas för att interagera med klustret. Windows-användare kan helt enkelt ringa den binära genom att gå till mappen istio-1.0.0 \ bin och ringer .\ istioctl med hjälp av powershell eller kommandotolken. Men det är ett valfritt tillägg.

Om du använder Mac kan du göra det med följande kommando:

$ export PATH = $ PWD / bin: $ PATH

Därefter måste vi utöka vårt Kubernetes API med anpassade resursdefinitioner (CRD) som istio ger oss.

$ kubectl applicera -f install / kubernetes / helm / istio / mallar / crds.yaml

Detta kan träda i kraft om några sekunder och när det är klart kommer din kube-apiserver att ha Istio-tillägg inbyggda i det. Härifrån varierar installationsalternativen beroende på om du använder detta för produktionsändamål eller om du experimenterar med det i din egen isolerade miljö.

Vi kommer att anta att det senare är fallet och installera istio utan TLS-autentisering.

$ kubectl applicera -f install / kubernetes / istio-demo.yaml

Detta skapar ett nytt namnområde istio-system där alla olika komponenter som istio-pilot och ingress gateway kommer att installeras.

Applikationsdistribution och Istio Injector

Här kommer nyttan av Istio. Istio lägger till sidovagnsproxyer för dina tjänster, och detta görs utan att ändra den faktiska koden för din applikation. Om automatisk istio-sidovagnsspruta är aktiverad. Du kan märka ett namnutrymme med istio-injection = aktiverat och när din applikation distribueras i detta namnutrymme kommer podarna själva att ha specialiserade Envoy-behållare tillsammans med behållarna för kärnapplikationen. Låt oss till exempel märka standardnamnområdet

$ kubectl label namespace default istio-injection = aktiverat

Låt oss nu distribuera exempel på BookInfo-appen i det här namnutrymmet. Från rotkatalogen till Isitio rep som vi klonade, kör:

$ kubectl applicera -f prover / bookinfo / plattform / kube / bookinfo.yaml

Du kan lista alla pods som körs här:

$ kubectl få skida

Välj någon pod ur dem och se dess detaljer. Till exempel heter en av skivorna från BookInfo-appen i min distribution detaljer-v1-6865b9b99d-6mxx9

$ kubectl beskriv pods / details-v1-6865b9b99d-6mxx9

I beskrivningen kommer du att märka att poden innehåller två behållare, den första är en del av den faktiska körningen av bildappen exempel-bokinfo-detaljer-v1: 1.8.0 och den andra är istio-proxy som kör bilden gcr.io / istio-release / proxyv2: 1.0.0 .

Istio erbjuder finkornig kontroll över ditt servicenät eftersom det injicerar dessa behållare ner till själva kapslarna där dina applikationer finns. Detta i kombination med lättanvänd TLS för kommunikation och finkornig trafikkontroll är en av många anledningar till varför stora applikationer kan dra nytta av ett servicenät som Istio.

Referenser

Den faktiska arkitekturen har många komponenter som Pilot, Citadel och Mixer, var och en med sin egen viktiga roll att utföra. Du kan lära dig mycket mer om dessa komponenter här och försöka distribuera din egen mikroservice här.

Bästa kommandoradsspel för Linux
Kommandoraden är inte bara din största allierade när du använder Linux, det kan också vara källan till underhållning eftersom du kan använda den för a...
Bästa Gamepad Mapping Apps för Linux
Om du gillar att spela spel på Linux med en gamepad istället för ett typiskt tangentbord och musinmatningssystem, finns det några användbara appar för...
Användbara verktyg för Linux-spelare
Om du gillar att spela spel på Linux är chansen att du kan ha använt appar och verktyg som Wine, Lutris och OBS Studio för att förbättra spelupplevels...