Før ankomsten av containere ble problemer med distribusjonskompatibiliteter møtt av programvareutviklere. Dette kan skje når programvare fungerer som beregnet i utviklingsstadiet, men funksjonsfeil i produktets miljø på grunn av avhengighetsproblemer. Imidlertid kan alle programvarekravene som brukes til utvikling nå leveres og brukes i produksjonsmiljøet på grunn av containere. Etter å ha bygget containerbildet ditt og kjørt en forekomst av det, kan det hende du trenger en forbindelse til beholderen for feilsøkingsformål eller for å bruke en hurtig. Du må gå inn i skallet til enhver løpende beholder for å samhandle med det på noen måte. Du lærer i denne artikkelen hvordan du får tilgang til en løpende docker container eller Kubernetes pod gjennom SSH.
Hva er SSH?
Secure Shell -protokollen (ofte kjent som SSH) gir en måte å logge inn eksternt fra en datamaskin til en annen sikkert. Sterk kryptering brukes til å ivareta kommunikasjonens sikkerhet og integritet og tilbyr flere ekstra alternativer for sterk autentisering. Det er en sikker erstatning for utrygge filoverføringsprotokoller og usikrede påloggingsprotokoller (som Telnet og Rlogin) (for eksempel FTP). I tillegg fungerer det bra med Kubernetes.
Nyttige skallkommandoer og eksempler for Kubectl Exec
Med Kubectl Exec kan du starte en skalløkt til containere som opererer i Kubernetes -klyngen. Det er SSH-lignende funksjonalitet for Kubernetes. Informasjonen du trenger, sammen med scenariene der den gir mest mening, er gitt nedenfor, slik at du kan bruke denne kommandoen som en del av klyngestyringsprosessene dine.
En container orkestrator kalt Kubernetes muliggjør automatiserte distribusjoner på tvers av mange fysiske datamaskiner. Sikkert skall på en fysisk server er forskjellig fra å starte en skalløkt til en beholder i en Kubernetes -klynge. Selv om containere skal være statsløse og i stand til å fungere uten tilsyn, kan du av og til trenge et skall for å feilsøke problemer eller hente data.
Du kan koble til containere i klyngen din ved hjelp av Kubectl Exec. Det er en komponent i KUBECTL CLI -verktøyet for å kommunisere med Kubernetes -installasjoner. I likhet med SSH eller Docker Exec, mater Exec -kommandoen en skalløkt inn i terminalen din.
Den enkleste påkallelsen for å få tilgang til "demo-pod" -poden er som følger:
Kubectl vil koble seg til klyngen din, starte /bin /sh i demo-pod pods første beholder, og passere inngangs- og utgangsstrømmene fra terminalen til beholderens prosess. Dette innlegget vil se på situasjonene der Kubectl Exec er nyttig, hva hver del av kommandoen oppnår og hvordan skallforbindelsen kan tilpasses.
Når skal du bruke Kubectl Exec?
Ulike teknikker er nødvendig for å administrere containeriserte arbeidsmengder i en Kubernetes-klynge enn for å administrere applikasjoner på en konvensjonell bare-metal-server. Du må grave ned fra klyngeverten til containerforekomster som distribuerer systemet ditt, og legger til et nytt lag mellom deg og programmet ditt.
Kubernetes evne til å distribuere kopier på tvers av fysiske datamaskiner er et av de sterke punktene (noder). Selv om du kan administrere over SSH, må du fortsatt følge med på hvilken node som er overvåket hver container. Uten å bry seg om Kubernetes -noden, er beholderen på. Du kan spesifisere beholderen for å koble til ved hjelp av Kubectl Exec.
Den hyppigste bruken av å starte et skall inne i en beholder er når du feilsøker et problem. Du kan ikke sitte igjen med noe annet valg enn å undersøke beholderen fra innsiden etter å ha uttømt alle andre alternativer, for eksempel å se på beholderens logger.
Du kan se det komplette filsystemet til beholderen og bekrefte at miljøet er som du forventet ved å utføre skallkommandoene. I tillegg kan det hjelpe deg med å finne forekomster av feil definerte miljøvariabler og bestemme om en avgjørende fil er låst eller mangler.
KUBECTL EXEC -erstatninger
Den mest effektive metoden for å koble til et Kubernetes -beholderens skall er Kubectl Exec. Den er laget for denne bruken og løser alle problemene med å velge riktig fysisk node å koble til.
Vurder å kjøre en SSH -demon i containeren din hvis du virkelig trenger et annet alternativ fordi du trenger å koble deg til et system uten Kubectl. Vær oppmerksom på at det å gjøre det vekker sårbarheten din for sikkerhetstrusler og motsier forutsetningen om at hver container skal tjene et enkelt formål.
Hvordan få tilgang til arbeidstakernoden min gjennom SSH?
Bruk et Kubernetes demonsett eller oppgaver for engangshandlinger for å kjøre på hver arbeidernode.
Gjennomgå følgende alternativer for å få vertsadgang til arbeidernoder for feilsøking og feilsøking.
Bruker Kubectl -feilsøking for feilsøking
Bruk kommandoen Kubectl Debug Node for å distribuere en pod med en privilegert sikkerhetskontekst til en arbeidernode som du vil feilsøke. For å gi tilgang til arbeidernoden så snart feilsøkingspoden er dannet, blir et interaktivt skall distribuert med den.
Feilsøking ved å bruke Kubectl Exec
Du kan bygge en alpin pod med en privilegert sikkerhetskontekst og bruke KUBECTL EXEC -kommandoen for å utføre feilsøkingskommandoer fra det interaktive skallet til pod hvis du ikke kan utføre Kubectl Debug Node -kommandoen.
Å bygge en pod med root ssh -tilgang for feilsøking
Hvis du ikke kan bruke Kubectl Debug Node eller Kubectl Exec -kommandoer, for eksempel om VPN -forbindelsen mellom klyngemester og arbeidernoder er nede. Du kan opprette en pod som muliggjør root ssh -tilgang og kopierer en offentlig ssh -nøkkel til arbeidernoden for SSH -tilgang.
Rydde opp etter feilsøking
Etter at du er ferdig med feilsøking, kan du rydde opp i ressursene for å deaktivere SSH -tilgang.
Hva er fordelene med SSH -tilgang?
Fordelene er listet opp nedenfor:
Konklusjon
Ved hjelp av KUBECTL EXEC -kommandoen kan du starte en skalløkt inne i hvilken som helst aktiv beholder i Kubernetes Cluster. Når logger alene er utilstrekkelige, kan du bruke denne kommandoen til å utforske beholderens filsystem, evaluere miljøet og kjøre sofistikerte feilsøkingsverktøy. Som et siste alternativ, bør du administrere containerne dine manuelt ved å bruke skallkommandoer.