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).
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).
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).
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.