Hvordan utsetter du porter i Kubernetes?

Hvordan utsetter du porter i Kubernetes?

For Kubernetes -tjenester er forskjellige distinkte portkonfigurasjoner tilgjengelige, inkludert Port, TargetPort og NodePort. Kubernetes -tjenesten er tilgjengelig gjennom klyngens valgte port, og andre belg kan kommunisere med denne serveren ved hjelp av den konfigurerte porten. På TargetPort vil tjenesten sende forespørsler, og belgene vil lytte etter dem. Denne porten må også være åpen for containerens søknad. Hvis portfeltet ikke leveres, brukes NodePort som standard. Vi går over hvordan du kan eksponere porter i Kubernetes i denne artikkelen. Du må forstå pod og distribusjon for å følge de praktiske øvelsene om dette emnet.

Forsikre deg om at du har installert Kubectl. Du trenger også en Kubernetes-klynge, så vel som KUBECTL-kommandolinjeverktøyet konfigurert for å koble til det. For å komme i gang, åpne Minikube -klyngen, som er installert på Ubuntu 20.04 LTS OS. For å kjøre Minikube, utfør minikube -startkommandoen på kommandolinjen.

Opprett en fil med Touch -kommandoen.

Poden.YAML -fil opprettes, som vist i det medfølgende skjermbildet.

Lag nå en Nginx -pod med følgende containerportspesifikasjon:

Som et resultat kan det nås det fra en hvilken som helst node i klyngen din. Undersøk nodene som poden opererer på, og bruk kommandoene nedenfor for å gjøre det.

For å se den fullstendige statusen til Kubernetes Pods, kan du kjøre Get POD -kommandoen som nevnt nedenfor.

Med kommandoen vist på skjermbildet, kan du sjekke IP -adressene til belgene dine.

Du kan SSH til hvilken som helst node som er til stede i klyngen din og krøller begge IP -adressene. Det er verdt å merke seg at containerne ikke bruker port 80 på noden, og det er ikke noen spesifikke NAT -regler på plass for å lede trafikk til POD. Dette betyr at du kan kjøre mange Nginx -pods på samme node, hver med containerporten, og få tilgang til dem gjennom IP fra en hvilken som helst annen pod eller node i klyngen. Porter kan fremdeles bli utsatt for vertsnodens grensesnitt, akkurat som Docker, selv om dette kravet er sterkt redusert på grunn av nettverksmodellen.

Hvordan lage en tjeneste?

Så på en flat, klynge-bred adresseom. Du kan teoretisk kommunisere direkte med disse belgene, men hva som skjer hvis en av dem dør? Pods vil gå til grunne som et resultat, og distribusjonen vil generere nye med alternative IP -adresser. Problemet som en tjeneste løser er denne.

En Kubernetes -tjeneste er et logisk sett med pods som alle gjør den samme oppgaven og løper et sted i klyngen din. Når det opprettes en tjeneste, får den en spesifikk IP -adresse, og denne adressen er løst gjennom tjenestens eksistens og vil ikke endre. Pods kan settes til å kommunisere med tjenesten, med sikkerheten om at kommunikasjonen vil bli belastet balansert til et tjenestemedlem POD. Med Kubectl Expose kan du bygge en tjeneste for dine to Nginx -kopier:

Et sett med pods støtter en tjeneste. Endepunkter gir tilgang til disse belgene. Tjenestens utvalg vil bli evaluert regelmessig, med resultatene lagt ut til et sluttpunkter som heter My-Nginx. Hvis en pod dør, skilles den fra endepunktene. Etter det erstattes den med nye belg med samme velger.

Hvordan få tilgang til tjenesten?

Miljøvariabler og DNS er de to grunnleggende metodene for å finne en tjeneste i Kubernetes. Førstnevnte krever Coredns Cluster Addon, mens sistnevnte ikke gjør det.

Miljøvariabler

Kubelet lager en samling av miljøvariabler for hver nåværende tjeneste når en pod starter på en node. Som et resultat kan det være vanskeligheter med ordreprosessen. Undersøk miljøet til dine løpende Nginx -pods (navnet på pod vil variere) for å forstå hvorfor:

$ KUBECTL EXEC MY-NGINX-3800858182-JR4A2-PRINTENV | grep service

Det er verdt å merke seg at tjenesten din ikke er nevnt. Fordi du laget kopiene før tjenesten, er dette tilfelle. Dette trinnet kan få hele tjenesten ned hvis det ikke fungerte. Ved å ødelegge de to belgene og vente på at utplasseringen skal gjenskape dem, kan vi fullføre oppgaven riktig. Tjenesten er til stede før kopiene denne gangen. Dette vil gi deg tjenestespredning for planleggingsnivå for belgene dine, samt de aktuelle miljøvariablene:

Dns

Kubernetes har en DNS Cluster Addon -tjeneste som tildeler DNS -navn til andre tjenester automatisk. Du kan se om den kjører på klyngen din ved å utføre følgende kommando:

$ kubectl få tjenester kube-dns-namespace = kube-system

Konklusjon

I denne artikkelen har du lært at for Kubernetes -tjenester er det forskjellige distinkte portkonfigurasjoner tilgjengelig, inkludert Port, TargetPort og NodePort. I tillegg har vi inkludert en fullstendig beskrivelse av hvordan du kan eksponere porter i Kubernetes.