Vorbereitungen auf allen 3 VMs:
Bringe das System auf den aktuellsten Stand und installiere die Pakete apt-transport-https und curl.
apt update
apt install apt-transport-https curl
Lade den Public-Key des Kubernetes Repository herunter, füge ihn zur Schlüsselverwaltung des System und das Repository zur Repositiry-Liste hinzu.
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
Installiere die erforderlichen Pakete aus dem Kubernetes Repository.
apt install -y kubelet kubeadm kubectl docker.io
Deaktiviere das SWAP.
swapoff -a
Initialisierung des Cluster auf dem Master-Node
Auf dem Server, der das Control-Plane werden soll führst du die Initialisierung des Cluster aus.
sudo kubeadm init --apiserver-advertise-address [master-node-ip] --pod-network-cidr=[internal pod network cidr]
Am Ende der Ausgabe des letzte Befehls werden weitere Schritte zum Anlegen der Konfiguration und die API Token zum Hinzufügen weiterer Worker-Nodes ausgegeben. Zum Schluss wird eine Konfiguration für kubectl auf dem Master-Node erstellt.
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Damit die Pods miteinander kommunizieren können benötigt man eine Netzwerk-API wie z.B Calico.
kubectl apply -f https://docs.projectcalico.org/v3.19/manifests/calico.yaml
Auf den Worker-Nodes
Zum Hinzufügen der anderen 2 VMsvon Worker-Nodes wird auf dem jeweiligen System der Befehl
kubeadm join [control-plane-host]:[control-plane-port] --token [token] --discovery-token-ca-cert-hash sha256:[hash]
verwendet.