Website-Suche

So installieren Sie einen Kubernetes-Cluster unter CentOS 7


Kubernetes wurde von Google an die OpenSource-Community gespendet und ist mittlerweile zum Container-Management-Tool der Wahl geworden. Es kann nicht nur Docker-Laufzeiten verwalten und orchestrieren, sondern auch Container und Rkt-Laufzeiten.

Ein typischer Kubernetes-Cluster verfügt im Allgemeinen über einen Master-Knoten und mehrere Worker-Knoten oder Minions. Die Worker-Nodes werden dann vom Master-Node aus verwaltet, wodurch sichergestellt wird, dass der Cluster von einem zentralen Punkt aus verwaltet wird.

Es ist auch wichtig zu erwähnen, dass Sie auch einen Kubernetes-Cluster mit einem Knoten bereitstellen können, was im Allgemeinen für sehr leichte, nicht produktive Arbeitslasten empfohlen wird. Hierzu können Sie Minikube verwenden, ein Tool, das einen Kubernetes-Cluster mit einem einzelnen Knoten in einer virtuellen Maschine auf Ihrem Knoten ausführt.

Empfohlene Lektüre: So installieren Sie einen Kubernetes-Cluster unter CentOS 8

In diesem Tutorial führen wir eine Kubernetes-Clusterinstallation mit mehreren Knoten unter CentOS 7 Linux durch. Dieses Tutorial basiert auf der Befehlszeile, daher benötigen Sie Zugriff auf Ihr Terminalfenster.

Voraussetzungen

  1. Mehrere Server, auf denen Centos 7 ausgeführt wird (1 Master-Knoten, 2 Worker-Knoten). Es wird empfohlen, dass Ihr Master-Knoten über mindestens 2 CPUs verfügt, obwohl dies keine strenge Anforderung ist.
  2. Internetverbindung auf allen Ihren Knoten. Wir werden Kubernetes- und Docker-Pakete aus dem Repository abrufen. Ebenso müssen Sie sicherstellen, dass der Yum-Paketmanager standardmäßig installiert ist und Pakete aus der Ferne abrufen kann.
  3. Sie benötigen außerdem Zugriff auf ein Konto mit Sudo- oder Root-Rechten. In diesem Tutorial verwende ich mein Root-Konto.

Unser 3-Knoten-Cluster sieht in etwa so aus:

Installation des Kubernetes-Clusters auf dem Master-Knoten

Damit Kubernetes funktioniert, benötigen Sie eine Containerisierungs-Engine. Für diese Installation verwenden wir Docker, da es am beliebtesten ist.

Die folgenden Schritte werden auf dem Master-Node ausgeführt.

Schritt 1: Bereiten Sie Hostnamen, Firewall und SELinux vor

Legen Sie auf Ihrem Masterknoten den Hostnamen fest. Wenn Sie keinen DNS-Server haben, aktualisieren Sie auch Ihre Datei /etc/hosts.

hostnamectl set-hostname master-node
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Sie können worker-node-1 und worker-node-2 anpingen, um mit dem Ping-Befehl zu testen, ob Ihre aktualisierte Hostdatei in Ordnung ist.

ping 10.128.0.29
ping 10.128.0.30

Deaktivieren Sie als Nächstes SElinux und aktualisieren Sie Ihre Firewall-Regeln.

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

Legen Sie die folgenden Firewall-Regeln für Ports fest. Stellen Sie sicher, dass jeder firewall-cmd-Befehl einen Erfolg zurückgibt.

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

Schritt 2: Richten Sie das Kubernetes-Repo ein

Sie müssen Kubernetes-Repositorys manuell hinzufügen, da diese unter CentOS 7 nicht standardmäßig installiert sind.

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

Schritt 3: Installieren Sie Kubeadm und Docker

Da das Paket-Repository nun fertig ist, können Sie mit der Installation der Pakete kubeadm und docker beginnen.

yum install kubeadm docker -y 

Wenn die Installation erfolgreich abgeschlossen wurde, aktivieren und starten Sie beide Dienste.

systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker

Schritt 4: Initialisieren Sie den Kubernetes-Master und richten Sie den Standardbenutzer ein

Jetzt sind wir bereit, den Kubernetes-Master zu initialisieren. Zuvor müssen Sie jedoch den Swap deaktivieren, um den Befehl „kubeadm init“ auszuführen.

swapoff -a

Die Initialisierung des Kubernetes-Masters ist ein vollständig automatisierter Prozess, der durch den von Ihnen ausgeführten Befehl „kubeadm init“ verwaltet wird.

kubeadm init

Möglicherweise möchten Sie die letzte Zeile kopieren und irgendwo speichern, da Sie sie auf den Worker-Knoten ausführen müssen.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Tipp: Manchmal beschwert sich dieser Befehl möglicherweise über die übergebenen Argumente (args). Bearbeiten Sie ihn daher, um solche zu vermeiden Fehler. Sie löschen also das Zeichen ‘\’, das dem --token beiliegt, und Ihr endgültiger Befehl sieht folgendermaßen aus.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41

Nachdem Sie Kubernetes erfolgreich initialisiert haben, müssen Sie Ihrem Benutzer erlauben, mit der Nutzung des Clusters zu beginnen. In unserem Fall möchten wir diese Installation als Root-Benutzer ausführen, daher werden wir diese Befehle als Root ausführen. Sie können zu einem Sudo-aktivierten Benutzer Ihrer Wahl wechseln und das Folgende mit Sudo ausführen.

Um root zu verwenden, führen Sie Folgendes aus:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

Um einen sudo-aktivierten Benutzer zu verwenden, führen Sie Folgendes aus:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Überprüfen Sie nun, ob der Befehl kubectl aktiviert ist.

kubectl get nodes

An dieser Stelle werden Sie auch feststellen, dass der Status des Master-KnotensNotReady“ ist. Dies liegt daran, dass wir das Pod-Netzwerk noch nicht im Cluster bereitgestellt haben.

Das Pod-Netzwerk ist das Overlay-Netzwerk für den Cluster, das über dem aktuellen Knotennetzwerk bereitgestellt wird. Es ist so konzipiert, dass es Konnektivität im gesamten Pod ermöglicht.

Schritt 5: Richten Sie Ihr Pod-Netzwerk ein

Die Bereitstellung des Netzwerkclusters ist je nach Ihren Anforderungen ein äußerst flexibler Prozess und es stehen viele Optionen zur Verfügung. Da wir unsere Installation so einfach wie möglich halten möchten, verwenden wir das Weavenet-Plugin, das keine Konfiguration oder zusätzlichen Code erfordert und eine IP-Adresse pro Pod bereitstellt, was für uns großartig ist. Wenn Sie weitere Optionen sehen möchten, schauen Sie bitte hier nach.

Diese Befehle sind wichtig, um das Pod-Netzwerk einzurichten.

export kubever=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

Wenn Sie nun den Status Ihres Master-Knotens überprüfen, sollte dieser „Bereit“ sein.

kubectl get nodes

Als nächstes fügen wir die Worker-Knoten zum Cluster hinzu.

Einrichten von Worker-Knoten für den Beitritt zum Kubernetes-Cluster

Die folgenden Schritte werden auf den Worker-Knoten ausgeführt. Diese Schritte sollten auf jedem Worker-Knoten ausgeführt werden, wenn Sie dem Kubernetes-Cluster beitreten.

Schritt 1: Bereiten Sie Hostnamen, Firewall und SELinux vor

Legen Sie auf Ihrem Worker-Knoten-1 und Worker-Knoten-2 den Hostnamen fest und falls Sie keinen DNS-Server haben, aktualisieren Sie auch Ihren Master und Worker Knoten in der Datei /etc/hosts.

hostnamectl set-hostname 'node-1'
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Sie können master-node anpingen, um zu testen, ob Ihre aktualisierte Hostdatei in Ordnung ist.

Deaktivieren Sie als Nächstes SElinux und aktualisieren Sie Ihre Firewall-Regeln.

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

Legen Sie die folgenden Firewall-Regeln für Ports fest. Stellen Sie sicher, dass alle Firewall-CMD-Befehle erfolgreich sind.

firewall-cmd --permanent --add-port=6783/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd  --reload
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Schritt 2: Richten Sie das Kubernetes-Repo ein

Sie müssen Kubernetes-Repositorys manuell hinzufügen, da diese auf CentOS 7 nicht vorinstalliert sind.

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

Schritt 3: Installieren Sie Kubeadm und Docker

Da das Paket-Repository nun fertig ist, können Sie mit der Installation der Pakete kubeadm und docker beginnen.

yum install kubeadm docker -y 

Starten und aktivieren Sie beide Dienste.

systemctl enable docker
systemctl start docker
systemctl enable kubelet
systemctl start kubelet

Schritt 4: Verbinden Sie den Worker-Knoten mit dem Kubernetes-Cluster

Wir benötigen nun das von kubeadm init generierte Token, um dem Cluster beizutreten. Sie können es kopieren und in Ihren node-1 und node-2 einfügen, wenn Sie es irgendwo kopiert haben.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Gehen Sie, wie in der letzten Zeile vorgeschlagen, zurück zu Ihrem Master-Knoten und prüfen Sie, ob Worker-Knoten-1 und Worker-Knoten-2 beigetreten sind Cluster mit dem folgenden Befehl.

kubectl get nodes

Wenn alle Schritte erfolgreich ausgeführt wurden, sollten node-1 und node-2 auf dem master-node im Bereitschaftsstatus angezeigt werden.

Empfohlene Lektüre: So stellen Sie Nginx auf einem Kubernetes-Cluster bereit

Zu diesem Zeitpunkt haben wir die Installation eines Kubernetes-Clusters auf Centos 7 erfolgreich abgeschlossen und zwei Worker-Knoten erfolgreich integriert. Sie können jetzt mit der Erstellung Ihrer Pods und der Bereitstellung Ihrer Dienste beginnen.