Levente Varadi - Fotolia

Docker-Cluster mit Kubernetes in Linux orchestrieren

Kubernetes ist aus der Container-Verwaltung kaum wegzudenken. In diesem Artikel wird erklärt, wie ein Kubernetes-Cluster mit dem Management Dashboard installiert wird.

Durch die Verwendung von Kubernetes lassen sich Docker-Container effektiv orchestrieren. Mit der Open-Source-Lösung werden die einzelnen Container-Hosts im Netzwerk zu einem Cluster zusammengefasst. Über das Cluster werden anschließend die Container auf den einzelnen Knoten des Clusters verteilt und zentral verwaltet. Dadurch erhalten Unternehmen eine umfassende Container-Verwaltungsumgebung und können Container effektiver nutzen.

Die Installation von Kubernetes ist auf den meisten Linux-Systemen kein Problem. Dieser Beitrag beschreibt die Installation der Containerorchestrierung auf einem Server mit CentOS 8. Die Installation entspricht in diesem Fall auch der Installation auf einem Server mit RHEL 7 oder RHEL 8.

Linux aktualisieren und Docker installieren

Kubernetes benötigt für seinen Betrieb zunächst Docker. Im ersten Schritt sollte man daher das System aktualisieren und die Docker-Installation starten. Der Docker-Daemon wird danach automatisch mit dem System gestartet. Die Befehle dazu sind:

yum update

yum install -y docker

systemctl enable docker

systemsctl start docker

Die Installation von Docker lässt sich danach mit docker version überprüfen. In den meisten Fällen muss die Installation aus einem Benutzerkonto heraus mit sudo erfolgen.

Lässt sich Docker nicht installieren, muss die Paketquelle erst hinzugefügt werden. Das erfolgt mit folgenden Befehlen:

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Danach muss noch das Paket containerd.io in der aktuellen Version installiert werden. Die jeweils aktuelle Version ist in der aktuellen Paketquelle zu finden. Die Installation erfolgt danach mit dem Befehl:

yum -y install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.10-3.2.el7.x86_64.rpm

Hier muss die gewünschte Version verwendet werden:

Yum install docker-ce

Systemctl enable --now docker

Die Installation lässt sich anschließend mit docker version überprüfen. Um einen ersten Test-Container zu betreiben, wird docker run hello-world genutzt. Dadurch wird das entsprechende Image heruntergeladen und gestartet (Abbildung 1).

Abbildung 1: Docker meldet, dass Hello World läuft. Das bedeutet, die Installation war erfolgreich.
Abbildung 1: Docker meldet, dass Hello World läuft. Das bedeutet, die Installation war erfolgreich.

Für die Ausführung von Docker sind Root-Rechte notwendig. Um nicht jedes Mal mit sudo arbeiten zu müssen, kann man das verwendete Benutzerkonto auch zur Docker-Verwaltungsgruppe hinzufügen:

usermod -aG docker <Kontoname>

Nach der erneuten Anmeldung am Server, lässt sich der Befehl docker auch ohne sudo einsetzen.

Server für Kubernetes vorbereiten

Anschließend sollte der Hostname gesetzt und selinux für die Installation von Kubernetes deaktiviert werden:

hostnamectl set-hostname 'k8s-master'

exec bash

sudo setenforce 0

sudo sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Auch Firewall-Regeln sollten gesetzt werden:

firewall-cmd --permanent --add-port=6443/tcp

firewall-cmd --permanent --add-port=2379-2380/tcp

firewall-cmd --permanent --add-port=10250/tcp

firewall-cmd --permanent --add-port=10251/tcp

firewall-cmd --permanent --add-port=10252/tcp

firewall-cmd --permanent --add-port=10255/tcp

firewall-cmd --reload

modprobe br_netfilter

echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Swap sollte auf allen Partitionen deaktiviert werden. Ansonsten funktioniert Kubernetes nicht. Die Einstellungen lassen sich in der entsprechenden fstab-Datei vornehmen, und temporär im Terminal mit swapoff -a. Die entsprechende Datei kann man zum Beispiel mit nano /etc/fstab öffnen. Hier wird die Swap-Zeile auskommentiert.

Installation der Kubernetes-Komponenten und erstellen des Clusters

Sobald Docker auf dem Server einsatzbereit ist, können Anwender auch die Kubernetes-Komponenten auf dem System installieren. Dazu wird das Kubernetes-Repository zur Datei kubernetes.repo im Verzeichnis etc/yum.repos.d hinzugefügt. Hierfür wird im Terminal die Datei geöffnet, die entsprechenden Zeilen hinzugefügt, und die Datei wieder geschlossen. Idealerweise sollte man dazu im ersten Schritt mit su die Eingabe als root aktivieren.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo

[kubernetes]

name=Kubernetes

baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=1

repo_gpgcheck=1

gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg

EOF

Die Datei lässt sich nachfolgend auch mit nano öffnen und bearbeiten. Anschließend werden die Kubernetes-Komponenten installiert. Der Befehl installiert und überprüft auch gleich Docker:

yum install kubeadm kubelet kubectl -y

Nach der Installation lässt sich auch hier der Dienst aktivieren:

systemctl  restart kubelet

systemctl enable kubelet

Danach wird der Kubernetes-Master mit dem folgenden Befehl initialisiert:

kubeadm init

Die einzelnen Werte für das Aufsetzen des Clusters können in kubeadm init auch mitgegeben werden:

kubeadm init --apiserver-advertise-address=192.168.10.10 --pod-network-cidr=192.168.0.0/16 --service-cidr=192.168.2.0/24

Kubernetes-Cluster überprüfen

Sobald der Cluster installiert wurde, kann man dessen Funktion mit kubectl cluster-info überprüfen. Eine Liste der Knoten im Cluster zeigt der Befehl kubetctl get nodes an. Um sich alle Pods im Kubernetes-Cluster anzeigen zu lassen, wird der Befehl kubectl get pods --all-namespaces verwendet. Die Namespaces zeigt wiederum der Befehl kubectl get namespaces an (Abbildung 2).

Abbildung 2: Ein funktionierendes Kubernetes-Cluster zeigt die vorhandenen Nodes und Pods an.
Abbildung 2: Ein funktionierendes Kubernetes-Cluster zeigt die vorhandenen Nodes und Pods an.

Wenn das Dashboard auf dem Server verfügbar ist, kann man mit kubectl proxy darauf zugreifen. Die URL wird beim Starten des Proxys angezeigt (Abbildung 3).

Abbildung 3: Starten des Kubernetes-Proxys
Abbildung 3: Starten des Kubernetes-Proxys

Wenn auch hier der Zugriff funktioniert, ist der Cluster bereit und es lassen sich Worker Nodes zum Cluster hinzufügen. Weiterführende Informationen sind auf Github in einer Anleitung verfügbar, mit der sich Kubernetes ebenfalls auf CentOS installieren lässt. Microsoft beschreibt auf der Seite Creating a Kubernetes Master wie sich Kubernetes auf Ubuntu so installieren lässt, damit auch Windows-Server angebunden werden können.

Nächste Schritte

Die Installation von SQL Server 2019 auf einem System mit CentOS 8, RHEL 8 oder Ubuntu

So ist Ihre Containerstrategie fit für die Zukunft

Kostenloses E-Handbook: Das Wichtigste zur Containertechnologie

Erfahren Sie mehr über Cloud Computing