kalafoto - stock.adobe.com
Kubernetes-Cluster in Linux mit Worker Nodes skalieren
Kubernetes gehört zu den Platzhirschen bei der Orchestrierung von Container-Umgebungen. In dieser Anleitung lernen Sie, wie Sie der Umgebung weitere Server hinzufügen.
Zum Skalieren eines mit Kubernetes verwalteten Container-Clusters lassen sich Container-Hosts als Worker Nodes zu einem Kubernetes-Cluster hinzufügen.
Die Worker Nodes werden von einem Master verwaltet, der für den Cluster verantwortlich ist. Sie skalieren einen Kubernetes-Cluster, indem Sie weitere Worker Nodes hinzufügen. Dieser Artikel bezieht sich auf die Installation in Linux, zum Beispiel Ubuntu oder Debian, über das Terminal.
Linux für Kubernetes vorbereiten
Unabhängig davon, ob ein Linux-Server zu einem Master- oder einem Worker Node konfiguriert werden soll, sind einige Vorbereitungen notwendig. Stellen Sie zunächst sicher, dass die Namen der Server und deren IP-Adresse so eingestellt sind, dass die Kommunikation funktionieren kann.
Als ersten Schritt melden Sie sich im Terminal mit sudo su an, da Sie für viele der nachfolgenden Schritte Root-Rechte benötigen. Mit apt-get update aktualisieren Sie das Repository.
Für Kubernetes sollten Sie in Linux die Swap-Funktion deaktivieren, um Probleme bei der Installation und Verwaltung zu vermeiden. Dazu kommentieren Sie in der Datei etc/fstab die Zeilen für den Swap Space aus. Der Befehl nano /etc/fstab öffnet die Datei zum Bearbeiten. Im Terminal kann dazu auch alternativ swapoff -a vor der Installation von Kubernetes angegeben werden.
OpenSSH-Server und Docker installieren
Für die Remote-Verwaltung des Servers kann es sinnvoll sein, den OpenSSH-Server zu installieren. Für den Betrieb ist Docker notwendig. In Ubuntu oder Debian verwenden Sie dafür folgende Befehle:
apt-get install openssh-server
apt-get install -y docker.io
Sie können die Funktionalität von Docker mit docker version testen (Abbildung 1).
Kubernetes-Komponenten auf Linux-Servern installieren
Vor der eigentlichen Installation von Kubernetes müssen Sie noch die Paketquelle von Kubernetes hinzufügen. Das erreichen Sie mit folgenden Befehlen:
apt-get update
apt-get install -y apt-transport-https curl
Mit Curl fügen Sie jetzt die Signatur und die Quelle für Kubernetes hinzu:
Curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
Danach speichern Sie die Quelle in Linux:
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
Anschließend installieren Sie die notwendigen Dateien von Kubernetes:
apt-get install -y kubelet kubeadm kubectl
Zuletzt müssen Sie noch in der Konfigurationsdatei von Kubernetes eine weitere Umgebungsvariable hinzufügen. Dazu öffnen Sie zunächst die Datei:
nano /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
Anschließend fügen Sie folgende Zeile hinzu:
Environment=“cgroup-driver=systemd/cgroup-driver=cgroupfs”
Kubernetes-Knoten hinzufügen
Bis zu dieser Stelle sind die Schritte zur Vorbereitung für den Betrieb von Kubernetes Master Nodes und Kubernetes Worker Nodes identisch. Liegt bereits ein Cluster vor, müssen Sie keinen neuen installieren, sondern können den Knoten zum vorhandenen Cluster hinzufügen. Für die Netzwerk-Kommunikation müssen Sie dazu auf dem Master-Knoten ein Pod-Netzwerk definieren. Das erledigt der folgende Befehl:
sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Der Status der Pods, inklusive des Pods für das Netzwerk können Sie sich mit kubectl angzeigen lassen (Abbildung 2):
kubectl get pods --all-namespaces
Zum Hinzufügen eines Cluster-Knotens zu Kubernetes benutzen Sie anschließend folgende Befehle:
Kubeadm join <IP-Adresse des Clusters>:<Port> --token <Token> --discovery-token-ca-cert-hash: <Hash>
Die einzelnen Optionen finden Sie auch in der Kubernetes-Dokumentation umfassend erläutert.
Mit MicroK8s auf Ubuntu Kubernetes installieren
Mit MicroK8s können Anwender in Linux in wenigen Schritten Kubernetes als alleinstehenden Cluster installieren. So bauen sich Entwickler und Administratoren in kurzer Zeit schnell und einfach einen Kubernetes-Cluster auf. Im ersten Schritt laden Sie hierzu die aktuelle Version von MicroK8s herunter. Das funktioniert bei nahezu allen Linux-Distributionen so:
sudo snap install microk8s --classic
Die verfügbaren, installierbaren Versionen lassen sich mit dem folgenden Befehl überprüfen:
snap info microk8s
Nun überprüfen Sie, ob MicroK8s bereit ist. Um mit dem aktuellen Benutzer das Kubernetes-Cluster zu verwalten, müssen Sie die Benutzerrechte anpassen:
sudo usermod -a -G microk8s $USER
sudo chown -f -R $USER ~/.kube
microk8s.status
Auch hier können Sie kubectl zur Verwaltung des Clusters verwenden. Dazu müssen Sie aber dem Befehl immer noch zusätzlich der Befehl microk8s voranstellen, zum Beispiel:
microk8s kubectl get nodes
microk8s kubectl get services
Eine Beispiel-App können Sie mit dem folgenden Befehl in den Container integrieren:
microk8s kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1
Um MicroK8s zu beenden, verwenden Sie den Befehl microk8s stop. Starten lässt sich der Kubernetes-Cluster wieder mit microk8s start. Auch hier können Sie das Dashboard von Kubernetes nutzen. Dieses aktivieren Sie mit microk8s enable dashboard. Für den Zugriff benötigen Sie das Token, das Ubuntu mit dem folgenden Befehl anzeigt:
token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s kubectl -n kube-system describe secret $token
Die Befehle werden auch im Terminal angezeigt, wenn Sie das Dashboard aktiviert haben. Das Token können Sie ganz einfach in die Zwischenablage kopieren. Für die Authentifizierung geben Sie das Token in der Oberfläche ein. Den Port für den Zugriff können Sie ebenfalls mit kubectl umleiten:
microk8s kubectl port-forward -n kube-system service/kubernetes-dashboard 10443:443