Kubernetes är en av få teknologier som människor kämpar med inte för att det är komplicerat och svårt att förstå, utan för att det är utformat för att köras på serverkvalitet och inte lätt kan simuleras på en vanlig hemdator så enkelt. Tack och lov finns det en mängd olika molnhostade plattformar som ger prisvärd infrastruktur för att experimentera med och förstå tekniker som Kubernetes.Som en förutsättning uppmuntrar jag dig att gå igenom våra inlägg om arkitekturen i Kubernetes och om noder och skida, byggstenarna i ett Kubernetes-kluster.Det finns många värdlösningar för Kubernetes, men vi kommer att distribuera allt från grunden på DigitalOcean, vilket är en moln-hosting-lösning riktad mot utvecklare i synnerhet.
En VPS-instans på denna plattform kallas droplet. För att köra Kubernetes behöver du minst 2 GB RAM och vi kommer att använda dropparna på $ 20 / månad för denna demo. De laddar också per timme, så om du experimenterar i ett par timmar och sedan förstör alla droppar så kommer du att betala högst ett par dollar.
Nu har vi två maskiner, en märkt master och en annan kommer att vara arbetarnoden. Så låt oss konfigurera master först.
Konfigurera masternoden
För att konfigurera huvudnoden, SSH till den med hjälp av den offentliga IP-adressen eller använd konsolen från DigitalOcean för att komma åt terminalen som root-användare.
De första kommandona är de grundläggande hushållningskommandona:
$ apt update && apt upgrade -ySedan hämtar vi de nödvändiga gpg-nycklarna och lägger till dem i vår lista över betrodda fjärrförråd.
$ curl -s https: // paket.moln.Google.com / apt / doc / apt-key.gpg | apt-key lägg till -$ cat < /etc/apt/sources.list.d/kubernetes.list
deb http: // apt.kubernetes.io / kubernetes-xenial huvud
EOF
$ apt uppdatering
Att köra apt-uppdatering för andra gången kommer att få systemet snabbare med officiell Kubernetes-repo. Nu installerar vi nödvändiga paket.
$ apt installera docker.io#Docker krävs för containerisering av appar.
$ apt installera kubelet kubeadm kubectl kubernetes-cni
Det sista kommandot installerar några paket som var och en är viktig av olika skäl:
- Kubeadm: Bootstraps och initialiserar Kubernetes på en nod. Den kan användas för att tilldela en droppe rollen som huvudnod eller arbetarnod.
- Kubelet: Det är en bakgrundsprocess som pratar med masternoden och utför åtgärder som begärs av den.
- Kubectl: Det är kommandoradsverktyget som tillåter utvecklare och driftspersonal att interagera med och kontrollera Kubernetes-klustret.
- Kubernetes-cni: Det är Container Networking Interface som krävs för intern kommunikation mellan pods och extern kommunikation också.
Nu när vi har alla nödvändiga paket installerade är det dags för oss att initialisera masternoden. Kör följande:
$ kubeadm init --pod-network-cidr = 10.244.0.0/16 --apiserver-annonsera-adress $ DROPLET_IP_ADDRESS
Se till att ersätta den sista variabeln $ DROPLET_IP_ADDRESS med den allmänna IP-adressen för din masternod. Om allt fungerade bra skulle det här vara din produktion:
Se till att du kopierar den sista raden "kubeadm join -token ..." eftersom den innehåller nödvändiga säkerhetsuppgifter som en arbetarnod skulle behöva för att gå med i klustret.
Varje huvudnod har en API-server som körs, vilket ovanstående kommando exponerar för podnätverket och även för kommandoradsgränssnittet, kubectl, samt till ett valfritt webbgränssnitt.
Notera: Du kan använda droppens offentliga IP-adress för kubeadm init kommando men om du vill isolera din masternod från resten av världen kanske du vill använda DigitalOceans privata IP-funktion som kommer att användas av olika pods över olika noder för att prata med varandra. Du kan senare bara exponera front-end-tjänsterna när ditt projekt genomförs. |
Okej, ett sista steg innan vi får se hälsorapporten på vår huvudnod. Du kanske vill springa:
$ mkdir -p $ HOME /.kube$ cp / etc / kubernetes / admin.conf $ HOME /.kube
$ chown $ (id -u): $ (id -g) $ HOME / admin.konf
$ kubectl skapa -f
https: // rå.githubusercontent.com / coreos / flannel / master / Documentation / kube-flannel.yml - namnrymd = kube-system
Flannel installeras i det sista kommandot som ger lager 3 nätverksfunktionalitet som behövs för containrar.
Nu kan vi springa,
$ kubectl få pods -all-namespaces
Vilket skulle visa oss staten alla noder och alla pods i detta kluster, som för närvarande bara är en. Så det är dags för oss att konfigurera den andra droppen och konvertera den till en Kubernetes-arbetarnod.
Konfigurera minions eller arbetarnoder
Mycket minion konfiguration kommer att bli en upprepning av vad vi har gjort ovan, det är från kubeadm befalla att vägen ska börja avvika.
Så för att konfigurera din arbetarnod genom att upprepa alla kommandon till och med installationen av paket,
$ apt installera kubelet kubeadm kubectl kubernetes-cniFör att initialisera droppen som en kubernetes-nod, kör du kommandot som genererades vid masternoden efter attkubeadm init.
$ kubeadm gå med --token 3c37b5.08ed6cdf2e4a14c9159.89.25.245: 6443 - upptäckt-token-ca-cert-hash
sha256: 52f99432eb33bb23ff86f62255ecbb
Observera att innehållet som följer din tokenflagga, IP-adressen och sha256-kontrollsumman kommer att vara väldigt olika i ditt fall. Det är allt! Du har en ny nod som medlem i Kubernetes-klustret. Du kan bekräfta detta genom att lista noder och pods som körs i det här klustret.
Slutsats
Nu är det dags för dig att distribuera din dockeriserad applikation i det här klustret och gärna snurra upp fler droppar och använd kubeadm gå med för att lägga till nya medlemmar i ditt Kubernetes-kluster.