Kubernetes er en av få teknologier som folk sliter med, ikke fordi det er komplisert og vanskelig å forstå, men fordi det er designet for å kjøre på serverhardware og ikke lett kan simuleres på en vanlig hjemmecomputer som lett. Heldigvis finnes det en rekke skyhostede plattformer som gir rimelig infrastruktur for å eksperimentere med og forstå teknologier som Kubernetes.Som en forutsetning oppfordrer jeg deg til å gå gjennom innleggene våre om arkitekturen til Kubernetes og om noder og bøtter, byggesteinene til en Kubernetes-klynge.Mens det er mange vertsløsninger for Kubernetes, vil vi distribuere alt fra bunnen av på DigitalOcean, som er en skyhosting-løsning rettet mot utviklere spesielt.
En VPS-forekomst på denne plattformen er kjent som en dråpe. For å kjøre Kubernetes trenger du minst 2 GB RAM, og vi vil bruke alternativet $ 20 / måned dråper for denne demo. De tar også betalt per time, så hvis du eksperimenterer i et par timer og deretter ødelegger alle dråpene, vil du ende opp med å betale mer enn et par dollar.
Nå har vi to maskiner, en merket master og en annen blir arbeiderknuten. Så la oss konfigurere mesteren først.
Konfigurere masternoden
For å konfigurere masternoden, SSH inn i den ved hjelp av offentlig IP eller bruk konsollen levert av DigitalOcean for å få tilgang til terminalen som rotbruker.
Første kommandoer er de grunnleggende husholdningene:
$ apt update && apt upgrade -yDeretter henter vi de nødvendige gpg-nøklene og legger dem til i listen vår over pålitelige eksterne lagringssteder.
$ curl -s https: // pakker.Sky.Google.com / apt / doc / apt-key.gpg | apt-key legge til -$ katt < /etc/apt/sources.list.d/kubernetes.list
deb http: // apt.kubernetes.io / kubernetes-xenial hoved
EOF
$ apt oppdatering
Å kjøre apt-oppdatering for andre gang vil bringe systemet opp i fart med offisiell Kubernetes-repo. Nå installerer vi de nødvendige pakkene.
$ apt installer docker.io#Docker kreves for containerisering av apper.
$ apt installer kubelet kubeadm kubectl kubernetes-cni
Den siste kommandoen installerer noen få pakker som hver er viktige av forskjellige årsaker:
- Kubeadm: Bootstraps og initialiserer Kubernetes på en node. Den kan brukes til å tilordne en dråpe rollen som hovednode eller arbeidernode.
- Kubelet: Det er en bakgrunnsprosess som snakker med masternoden og utfører handlinger som den etterspør.
- Kubectl: Det er kommandolinjeverktøyet som lar utviklere og operasjonspersonell samhandle med og kontrollere Kubernetes-klyngen.
- Kubernetes-cni: Det er Container Networking Interface som kreves for intern kommunikasjon mellom pods og ekstern kommunikasjon også.
Nå som vi har installert alle nødvendige pakker, er det på tide for oss å initialisere masternoden. Kjør følgende:
$ kubeadm init --pod-network-cidr = 10.244.0.0/16 --apiserver-annonsere-adresse $ DROPLET_IP_ADDRESS
Sørg for å erstatte den siste variabelen $ DROPLET_IP_ADDRESS med den offentlige IP-adressen til masternoden din. Hvis alt fungerte bra, ville dette være resultatet ditt:
Forsikre deg om at du kopierer den siste linjen "kubeadm join -token ..." da den inneholder nødvendige sikkerhetsopplysninger som en arbeidernode trenger for å bli med i klyngen.
Hver masternode har en API-server som kjører, som kommandoen ovenfor vil eksponere for pod-nettverket og også for kommandolinjegrensesnittet, kubectl, så vel som til et valgfritt nettgrensesnitt.
Merk: Du kan bruke slippens offentlige IP-adresse for kubeadm init kommando, men hvis du vil isolere masternoden din fra resten av verden, kan det være lurt å bruke DigitalOceans private IP-funksjon som brukes av forskjellige pods på tvers av forskjellige noder for å snakke med hverandre. Du kan senere bare avsløre front-end-tjenestene når prosjektet ditt blir oppfylt. |
Ok, et siste trinn før vi får se helserapporten på hovednoden vår. Det kan være lurt å løpe:
$ mkdir -p $ HOME /.kube$ cp / etc / kubernetes / admin.conf $ HOME /.kube
$ chown $ (id -u): $ (id -g) $ HOME / admin.konf
$ kubectl create -f
https: // rå.githubusercontent.com / coreos / flannel / master / Documentation / kube-flannel.yml - namespace = kube-system
Flannel er installert i den siste kommandoen som gir lag 3 nettverksfunksjonalitet som trengs for containere.
Nå kan vi løpe,
$ kubectl få pods -all-namespaces
Som vil vise oss staten alle noder og alle pods i denne klyngen, som for øyeblikket bare er en. Så det er på tide for oss å konfigurere den andre dråpen og konvertere den til en Kubernetes-arbeiderknute.
Konfigurere håndlangere eller arbeidernoder
Mye minion konfigurasjon kommer til å være en repetisjon av det vi har gjort ovenfor, det er fra kubeadm kommando om at veien vil begynne å avvike.
Så for å konfigurere arbeidernoden din ved å gjenta alle kommandoene til og med installasjonen av pakker,
$ apt installer kubelet kubeadm kubectl kubernetes-cniFor å initialisere dråpen som en kubernetes-node, kjør kommandoen som ble generert ved masternoden, etter atkubeadm init.
$ kubeadm bli med - token 3c37b5.08ed6cdf2e4a14c9159.89.25.245: 6443 --discovery-token-ca-cert-hash
sha256: 52f99432eb33bb23ff86f62255ecbb
Vær oppmerksom på at innholdet som følger tokenflagget ditt, IP-adressen og sha256-kontrollsummen vil være veldig forskjellige i ditt tilfelle. Det er det! Du har en ny node som medlem av Kubernetes-klyngen. Du kan bekrefte dette ved å oppgi nodene og podene som kjører på denne klyngen.
Konklusjon
Nå er det på tide for deg å distribuere din dockerisert applikasjonen i denne klyngen, og spinn gjerne opp flere dråper og bruk kubeadm bli med for å legge til nye medlemmer i Kubernetes-klyngen.