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
--apiserver-advertise-address
bepaalt welk IP-adres Kubernetes zijn API-server moet adverteren.
--skip-preflight-checks
staat kubeadm
toe om de host-kernel te controleren op vereiste functies. Als je problemen tegenkomt waarbij een host de kernel-metagegevens heeft verwijderd, moet je mogelijk met deze vlag draaien.
--kubernetes-version stable-1.16
dit pint de versie van het cluster naar 1.16, maar als je bijvoorbeeld Kubernetes 1.15 wilt gebruiken, verander dan gewoon de versie. Als je deze vlag verwijdert, wordt alles gebruikt dat geldt als "nieuwste".
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 kubectl
commando om te zien of het masterserver nu in de lijst staat, merk op dat het voorlopig een NotReady
status 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 kubectl
en ons nieuwe KUBECONFIG
bestand. 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-