Kubernetes er en af de få teknologier, som folk kæmper med, ikke fordi det er kompliceret og svært at forstå, men fordi det er designet til at køre på serverkvalitet hardware og ikke let kan simuleres på en typisk hjemmecomputer, der let. Heldigvis er der en række cloudhostede platforme, der giver overkommelig infrastruktur til at eksperimentere med og forstå teknologier som Kubernetes.Som en forudsætning opfordrer jeg dig til at gennemgå vores indlæg om arkitekturen i Kubernetes og om knuder og bælg, byggestenene i en Kubernetes-klynge.Mens der er mange hostede løsninger til Kubernetes, vil vi implementere alt fra bunden på DigitalOcean, som er en cloud-hosting-løsning målrettet især udviklere.
En VPS-forekomst på denne platform er kendt som en dråbe. For at køre Kubernetes har du brug for mindst 2 GB RAM, og vi bruger $ 20 / måned-dråber til denne demo. De opkræver også pr. Time, så hvis du eksperimenterer i et par timer og derefter ødelægger alle dråberne, betaler du ikke mere end et par dollars.
Nu har vi to maskiner, en mærket master, og en anden bliver arbejdsknudepunktet. Så lad os konfigurere mesteren først.
Konfiguration af masternoden
For at konfigurere masternoden skal du SSH ind i den ved hjælp af den offentlige IP eller bruge konsollen fra DigitalOcean til at få adgang til terminalen som rootbruger.
De første kommandoer er de grundlæggende husholdningskommandoer:
$ apt opdatering && apt opgradering -yDerefter henter vi de krævede gpg-nøgler og føjer dem til vores liste over pålidelige fjernopbevaringssteder.
$ curl -s https: // pakker.Sky.google.com / apt / doc / apt-key.gpg | apt-key tilføj -$ kat < /etc/apt/sources.list.d/kubernetes.list
deb http: // apt.kubernetes.io / kubernetes-xenial hoved
EOF
$ apt opdatering
Kørsel af apt-opdatering for anden gang bringer systemet op i fart med officiel Kubernetes-repo. Nu installerer vi de nødvendige pakker.
$ apt installer docker.io#Docker kræves til containerisering af apps.
$ apt installer kubelet kubeadm kubectl kubernetes-cni
Den sidste kommando installerer et par pakker, som hver især er vigtige af forskellige årsager:
- Kubeadm: Bootstraps og initialiserer Kubernetes på en node. Det kan bruges til at tildele en dråbe rollen som hovedknude eller arbejdsknude.
- Kubelet: Det er en baggrundsproces, der taler til masternoden og udfører handlinger, som den anmoder om.
- Kubectl: Det er kommandolinjeværktøjet, der giver udviklere og driftspersonale mulighed for at interagere med og kontrollere Kubernetes-klyngen.
- Kubernetes-cni: Det er Container Networking Interface, der kræves til intern kommunikation mellem pods og ekstern kommunikation.
Nu hvor vi har alle de nødvendige pakker installeret, er det tid for os at initialisere masternoden. Kør følgende:
$ kubeadm init --pod-network-cidr = 10.244.0.0/16 --apiserver-annoncer-adresse $ DROPLET_IP_ADDRESS
Sørg for at erstatte den sidste variabel $ DROPLET_IP_ADDRESS med den offentlige IP på din masternode. Hvis alt fungerede fint, ville dette være din produktion:
Sørg for at kopiere den sidste linje "kubeadm join -token ...", da den indeholder de nødvendige sikkerhedsoplysninger, som en arbejdsknude skal bruge for at deltage i klyngen.
Hver masternode har en API-server, der kører på, som ovenstående kommando udsætter for podnetværket og også for kommandolinjegrænsefladen, kubectl, samt til et valgfrit web-UI.
Bemærk: Du kan bruge din dråbes offentlige IP-adresse til kubeadm init kommando, men hvis du vil isolere din masternode fra resten af verden, kan du bruge DigitalOceans private IP-funktion, som vil blive brugt af forskellige bælg på tværs af forskellige noder til at tale med hinanden. Du kan senere kun eksponere front-end-tjenesterne, når dit projekt gennemføres. |
Okay, et sidste trin før vi får vist sundhedsrapporten om vores masternode. Det kan være en god idé at køre:
$ mkdir -p $ HOME /.kube$ cp / etc / kubernetes / admin.conf $ HOME /.kube
$ chown $ (id -u): $ (id -g) $ HOME / admin.konf
$ kubectl oprette -f
https: // rå.githubusercontent.com / coreos / flannel / master / Documentation / kube-flannel.yml - navneområde = kube-system
Flannel er installeret i den sidste kommando, der giver lag 3-netværksfunktionalitet, der er nødvendig for containere.
Nu kan vi løbe,
$ kubectl få pods -all-namespaces
Hvilket ville vise os staten alle knudepunkter og alle bælg i denne klynge, som i øjeblikket kun er en. Så det er på tide for os at konfigurere den anden dråbe og konvertere den til en Kubernetes arbejdsknude.
Konfiguration af håndlangere eller medarbejdernoder
En masse minion-konfiguration vil være en gentagelse af, hvad vi har gjort ovenfor, den er fra kubeadm kommando om, at vejen begynder at afvige.
Så for at konfigurere din arbejdsknude ved at gentage alle kommandoer til og med installation af pakker,
$ apt installer kubelet kubeadm kubectl kubernetes-cniFor at initialisere dråben som en kubernetes-knude skal du køre kommandoen, der blev genereret ved masternoden efter afslutningen afkubeadm init.
$ kubeadm join - token 3c37b5.08ed6cdf2e4a14c9159.89.25.245: 6443 - opdagelses-token-ca-cert-hash
sha256: 52f99432eb33bb23ff86f62255ecbb
Bemærk, at indholdet efter dit token-flag, IP-adressen og sha256-kontrolsummen alle vil være meget forskellige i dit tilfælde. Det er det! Du har en ny node som medlem af Kubernetes-klyngen. Du kan bekræfte dette ved at angive de noder og de bælg, der kører på denne klynge.
Konklusion
Nu er det tid for dig at implementere din dockeriseret anvendelse i denne klynge, og du er velkommen til at dreje flere dråber op og bruge kubeadm deltage for at tilføje nye medlemmer til din Kubernetes-klynge.