Kubeadm installeren op de master-node

Initialiseer je cluster met kubeadm

Je hoeft deze stap alleen uit te voeren op je aangewezen hoofdserver, voor mij was dat k8s-master-node.

We gebruiken nu het interne IP-adres om de Kubernetes-API uit te zenden, in plaats van het internetgerichte adres (lokaal hebben we dit niet, in de cloud wel).

Je moet --apiserver-advertise-address vervangen door het IP-adres van je master node-host.

$ sudo kubeadm init --apiserver-advertise-address=10.80.0.133 --kubernetes-version stable

Wij gebruiken de stable variant van Kubernetes, omdat deze werkt met Ubuntu 20.04

Je krijgt deze output als alles volgens plan is verlopen, zo niet, controleer dan de bovenstaande stappen.

 

Alleen uitvoeren als je geen sudo gebruiker hebt!

De Ubuntu-installatie wordt geleverd zonder een onbevoegd gebruikersaccount, dus laten we er een toevoegen.

$ sudo useradd k8s -G sudo -m -s /bin/bash
$ sudo passwd k8s

Je kunt nu je omgeving configureren met de instructies aan het einde van het init-bericht hierboven.

Ga hier verder!

Schakel over naar het nieuwe gebruikersaccount en configureer het KUBECONFIG

sudo su k8s

cd $HOME
sudo cp /etc/kubernetes/admin.conf $HOME/
sudo chown $(id -u):$(id -g) $HOME/admin.conf

Probeer nu het KUBECONFIG-bestand uit:

echo "export KUBECONFIG=$HOME/admin.conf" | tee -a ~/.bashrc
source ~/.bashrc

Probeer een kubectlcommando om te zien of het masterserver nu in de lijst staat, merk op dat het voorlopig een NotReadystatus heeft

$ kubectl get node
NAME               STATUS     ROLES    AGE     VERSION
k8s-master         NotReady   master   3m32s   v1.20.2

We zullen nu de configuratie toepassen op het cluster met kubectlen ons nieuwe KUBECONFIGbestand. Dit maakt netwerken mogelijk en ons hoofdserver wordt Ready, op dat moment gaan we naar de andere werkservers.

sudo mkdir -p /var/lib/weave
head -c 16 /dev/urandom | shasum -a 256 | cut -d" " -f1 | sudo tee /var/lib/weave/weave-passwd

kubectl create secret -n kube-system generic weave-passwd --from-file=/var/lib/weave/weave-passwd

Omdat we het standaard Pod-netwerk gebruiken voor hostnetwerken, moeten we een ander privé-subnet voor Weave-net gebruiken om conflicten te voorkomen. Gelukkig is 192.168.0.0/24 ruimte beschikbaar voor gebruik.

$ kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')&password-secret=weave-passwd&env.IPALLOC_RANGE=192.168.0.0/24"

We hebben nu het netwerk geconfigureerd voor de pods.

Kubernetes streeft ernaar een zeer beschikbare clustering container orchestrator te zijn waarbij workloads met redundantie over meerdere hosts worden verdeeld. We kunnen echter een enkele master node dwingen om workloads uit te voeren voor ontwikkeling door de "taint" te verwijderen:

Dit wordt alleen aanbevolen als je met een enkele host werkt, voer deze stap niet uit als je andere hosts aan het cluster toevoegt.

$ kubectl taint nodes --all node-role.kubernetes.io/master-