So installieren Sie einen Kubernetes-Cluster unter CentOS 8

Der Prozess der Installation eines Kubernetes Cluster auf CentOS 8 ist fast ähnlich zu dem von CentOS 7 (was Sie hier durchgehen können), aber der Prozess hier hat ein paar Änderungen. Diese Änderungen drehen sich hauptsächlich um die Installation von Docker.

Ab CentOS 8 (und im weiteren Sinne RHEL 8), Docker wurde nun nativ durch ersetzt Podman und Buildah Welches sind Werkzeuge aus Roter Hut. Tatsächlich wurde das Docker-Paket jetzt aus dem Standardpaket-Repository entfernt.

Mit diesem Schritt wird die Roter Hut Das Team ist bestrebt, das Erstellen und Verwenden von Containern ohne spezielle Berechtigungen zu vereinfachen und gleichzeitig die Kompatibilität mit Docker-Images aufrechtzuerhalten und diese ohne Daemon zu betreiben. Podman verspricht mehr Flexibilität beim Laufen Gouverneure Umgebungen, aber die Jury bleibt da draußen.

In diesem Artikel werden wir den Installationsprozess durchlaufen Gouverneure auf einen CentOS 8 Plattform, läuft auf Docker-CE ((Gemeinschaftsausgabe). In einem späteren Artikel werden wir auch eine ähnliche Installation mit ausführen Podman für unsere Container.

Voraussetzungen

  1. Drei Server mit CentOS 8 – 1 Hauptknoten und 2 Arbeiterknoten.
  2. Es wird empfohlen, dass Ihre Knoten mindestens 2 CPUs mit 2 GB RAM oder mehr pro Computer haben. Dies ist keine strenge Anforderung, sondern hängt weitgehend von den Anforderungen der Anwendung ab, die Sie ausführen möchten.
  3. Internetverbindung auf allen Ihren Knoten. Wir werden holen Gouverneure und Docker Pakete aus dem Repository. Ebenso müssen Sie sicherstellen, dass der DNF-Paketmanager standardmäßig installiert ist und Pakete remote abrufen kann.
  4. Alle Ihre Knoten sollten auch in der Lage sein, eine Verbindung miteinander herzustellen, entweder in einem privaten oder einem öffentlichen Netzwerk, je nachdem, was verfügbar ist.
  5. Sie benötigen außerdem Zugriff auf ein Konto mit Sudo- oder Root-Rechten. In diesem Tutorial verwende ich mein Root-Konto.

Vorsicht

Die meisten Knoten werden im Allgemeinen mit Unique geliefert MAC Adressen jedoch in einigen Einzelfällen, einige Virtuelle Maschinen kann identische MAC-Adressen haben. Es wird daher empfohlen, dass Sie bestätigen, dass die Product_UUID und das MAC Adresse sind in keinem der Knoten identisch.


Gouverneure verwendet diese Werte, um die Knoten im Cluster eindeutig zu identifizieren. Wenn diese Werte nicht für jeden Knoten eindeutig sind, schlägt der Installationsprozess möglicherweise fehl.

So überprüfen Sie die MAC-Adresse der Netzwerkschnittstelle und vergleichen sie.

# ip link

Um das zu überprüfen product_uuid Führen Sie zum Vergleichen den folgenden Befehl aus.

# cat /sys/class/dmi/id/product_uuid 

Logische Architektur

Unsere Installation ist so konzipiert, dass sie die Master-Node Kontrolle der Arbeiterknoten. Am Ende dieser Installation sieht unsere logische Architektur ungefähr so ​​aus.

Hauptknoten – Dieser Computer fungiert im Allgemeinen als Steuerebene und führt die Clusterdatenbank und den API-Server aus (mit dem die kubectl-CLI kommuniziert).

Unser 3-Knoten Kubernetes Cluster wird ungefähr so ​​aussehen:

Kubernetes-Clusterdiagramm
Kubernetes-Clusterdiagramm

Installation von Kubernetes Cluster auf Master-Node

Zum Gouverneure Um zu arbeiten, benötigen Sie eine Containerisierungs-Engine. Wie bereits erwähnt, werden wir verwenden Docker-CE.

Die folgenden Institutionen werden am durchgeführt CentOS 8 Master-Node.

Schritt 1: Bereiten Sie Hostname, Firewall und SELinux vor

Auf Ihrem CentOS 8 Master-NodeLegen Sie den Systemhostnamen fest und aktualisieren Sie DNS in Ihrem / etc / hosts Datei.

# hostnamectl set-hostname master-node
# cat <> /etc/hosts
192.168.0.47 master-node
192.168.0.48 node-1 worker-node-1
192.168.0.49 node-2 worker-node-2
EOF

Als nächstes pingen Sie Ihre Worker-Node-1 und Worker-Node-2 Überprüfen Sie mit dem Befehl ping, ob Ihre aktualisierte Hostdatei ordnungsgemäß funktioniert.

# ping 192.168.0.48
# ping 192.168.0.49

Als nächstes deaktivieren SelinuxDies ist erforderlich, damit Container auf das Host-Dateisystem zugreifen können, das von Pod-Netzwerken und anderen Diensten benötigt wird.

# setenforce 0

Rahmen setenforce zu 0 SELinux wird effektiv auf “zulässig” gesetzt, wodurch SELinux bis zum nächsten Neustart effektiv deaktiviert wird. Um es vollständig zu deaktivieren, verwenden Sie den folgenden Befehl und starten Sie neu.

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

Kubernetes verwendet verschiedene Ports für die Kommunikation und den Zugriff. Diese Ports müssen für Kubernetes zugänglich sein und dürfen nicht durch die Firewall eingeschränkt sein.

Kubernetes-Ports
Kubernetes-Ports

Konfigurieren Sie die Firewall-Regeln für die Ports.

# 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: Installieren Sie Docker-CE unter CentOS 8

Sie müssen das hinzufügen Docker Repository zuerst, da es nicht mehr in der Standardpaketliste enthalten ist dnf config-manager Befehl.

# dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Installieren Sie auch containerd.io Paket, das als Daemon verfügbar ist und den gesamten Container-Lebenszyklus seines Host-Systems verwaltet, von der Image-Übertragung und -Speicherung über die Container-Ausführung und -Überwachung bis hin zur Speicherung auf niedriger Ebene und zu Netzwerkanhängen und darüber hinaus.

# dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

Installieren Sie nun die neueste Version von a Hafenarbeiter Paket.

# dnf install docker-ce

Sie können jetzt den Docker-Dienst aktivieren und starten.

# systemctl enable docker
# systemctl start docker

Schritt 3: Installieren Sie Kubernetes (Kubeadm) unter CentOS 8

Als nächstes müssen Sie hinzufügen Gouverneure Repositorys manuell, da sie standardmäßig nicht installiert sind CentOS 8.

# cat < /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

Es war schon hilft Ihnen beim Booten eines minimal lebensfähigen Kubernetes-Clusters, der den Best Practices entspricht. Mit Beadmsollte Ihr Cluster die Kubernetes-Konformitätstests bestehen.

Es war schon Unterstützt auch andere Cluster-Lebenszyklusfunktionen wie Upgrades, Downgrades und die Verwaltung von Bootstrap-Token. Kubeadm ist auch integrationsfreundlich mit anderen Orchestrierungswerkzeugen wie Ansible und Terraform.

Wenn das Paket-Repo jetzt fertig ist, können Sie es installieren Beadm Paket.

# dnf install kubeadm -y 

Wenn die Installation erfolgreich abgeschlossen wurde, aktivieren und starten Sie den Dienst.

# systemctl enable kubelet
# systemctl start kubelet

Schritt 4: Erstellen Sie mit kubeadm einen Steuerebenen-Master

Der Kubernetes-Meister, der als der fungiert Steuerebene Für den Cluster werden einige wichtige Dienste ausgeführt, die für den Cluster erforderlich sind. Daher führt der Initialisierungsprozess eine Reihe von Vorprüfungen durch, um sicherzustellen, dass der Computer für die Ausführung von Kubernetes bereit ist. Diese Vorprüfungen legen Warnungen offen und werden bei Fehlern beendet. Kubeadm Hitze Lädt dann die Komponenten der Cluster-Steuerebene herunter und installiert sie.

Jetzt ist es Zeit, Kubernetes Master zu initialisieren, aber vorher müssen Sie Swap deaktivieren, um „Kubeadm Hitze” Befehl.

# swapoff -a

Initialisieren Gouverneure master ist ein vollständig automatisierter prozess, der vom „Kubeadm HitzeBefehl wie gezeigt.

# kubeadm init
Initialisieren Sie Kubernetes Master
Initialisieren Sie Kubernetes Master

Kopieren Sie als Nächstes den folgenden Befehl und speichern Sie ihn irgendwo, da wir diesen Befehl später auf den Arbeitsknoten ausführen müssen.

kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5   --discovery-token-ca-cert-hash ha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf7

Trinkgeld: Manchmal kann der obige Befehl Fehler über die übergebenen Argumente auslösen. Um Fehler zu vermeiden, müssen Sie die entfernen ‘’ Charakter und Ihr letzter Befehl werden so aussehen.

# kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 –discovery token-ca-cert-hash sha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf7

Einmal Gouverneure Wenn Sie erfolgreich initialisiert haben, müssen Sie Ihrem Benutzer ermöglichen, den Cluster zu verwenden. In unserem Szenario verwenden wir den Root-Benutzer. Sie können den Cluster auch wie gezeigt mit sudo user starten.

Benutzen Wurzel, Lauf:

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

So verwenden Sie a Sudo-fähiger Benutzer, Lauf:

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

Bestätigen Sie nun, dass die kubectl Befehl ist aktiviert.

# kubectl get nodes
Überprüfen Sie den Status der Knoten
Überprüfen Sie den Status der Knoten

In diesem Moment sehen Sie, dass der Status des Master-Knotens ‘ist.Nicht bereit‘. Dies liegt daran, dass wir das Pod-Netzwerk noch nicht für den Cluster bereitgestellt haben.

Das Pod-Netzwerk ist das Overlay-Netzwerk für den Cluster, das über dem aktuellen Knotennetzwerk bereitgestellt wird. Es wurde entwickelt, um die Konnektivität über den Pod hinweg zu ermöglichen.

Schritt 5: Richten Sie Ihr Pod-Netzwerk ein

Die Bereitstellung des Netzwerkclusters ist je nach Ihren Anforderungen ein sehr flexibler Prozess, und es stehen viele Optionen zur Verfügung. Da wir unsere Installation so einfach wie möglich halten möchten, werden wir verwenden 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, überprüfen Sie bitte Hier.

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
Pod-Netzwerk einrichten
Pod-Netzwerk einrichten

Wenn Sie nun den Status Ihres Master-Knotens überprüfen, sollte er ‘Bereit‘.

# kubectl get nodes
Überprüfen Sie den Status der Masterknoten
Überprüfen Sie den Status der Masterknoten

Als nächstes fügen wir die Arbeiterknoten zum Cluster.

Hinzufügen von Arbeiterknoten zum Kubernetes-Cluster

Die folgenden Anweisungen werden jeweils ausgeführt Arbeiterknoten beim Beitritt zum Kubernetes-Cluster.

Schritt 1: Bereiten Sie Hostname, Firewall und SELinux vor

Stellen Sie zuerst den Hostnamen auf Ihrem ein Worker-Node-1 und Worker-Node-2und fügen Sie dann die Host-Einträge zum hinzu / etc / hosts Datei.

# hostnamectl set-hostname 'node-1'
# cat <> /etc/hosts
192.168.0.47 master-node
192.168.0.48 node-1 worker-node-1
192.168.0.49 node-2 worker-node-2
EOF

Als nächstes pingen Sie Ihre Hauptknoten von deiner Arbeiterknoten um mit dem Befehl ping zu bestätigen, dass Ihre aktualisierte Hostdatei ordnungsgemäß funktioniert.

# 192.168.0.47

Als nächstes deaktivieren SElinux und aktualisieren Sie Ihre Firewall-Regeln.

# setenforce 0
# sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
# 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 Docker-CE und Kubernetes Repo ein

Fügen Sie das Docker-Repository zuerst mit dem DNF-Konfigurationsmanager hinzu.

# dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Als nächstes fügen Sie die containerd.io Paket.

# dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

Installieren Sie mit diesen beiden installierten Paketen die neueste Version von Hafenarbeiter.

# dnf install docker-ce

Aktivieren und starten Sie den Docker-Dienst.

# systemctl enable docker
# systemctl start docker

Sie müssen hinzufügen Gouverneure Repositorys manuell, da sie nicht vorinstalliert sind CentOS 8.

# cat < /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 unter CentOS 8

Wenn das Paket-Repo jetzt fertig ist, können Sie es installieren Beadm.

# dnf install kubeadm -y 

Starten und aktivieren Sie den Dienst.

# systemctl enable kubelet
# systemctl start kubelet

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

Wir benötigen jetzt das Token dafür Kubeadm Hitze generiert, um dem Cluster beizutreten. Sie können es kopieren und in Ihre einfügen Knoten-1 und Knoten-2 wenn du es irgendwo kopiert hättest.

# kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc82314683478hjmf78

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

# kubectl get nodes
Überprüfen Sie den Status aller Knoten im Kubernetes-Cluster
Überprüfen Sie den Status aller Knoten im Kubernetes-Cluster

Wenn alle Schritte erfolgreich ausgeführt wurden, sollten Sie sehen Knoten-1 und Knoten-2 im Bereitschaftsstatus auf der Master-Knoten. Zu diesem Zeitpunkt haben Sie nun erfolgreich einen Kubernetes-Cluster auf bereitgestellt CentOS 8.

Empfohlene Lektüre: Bereitstellen von Nginx in einem Kubernetes-Cluster

Einige Einschränkungen

Der Cluster, den wir hier erstellt haben, hat einen einzigen Hauptknotenund als solche, wenn die Hauptknoten Wenn dies fehlschlägt, verliert Ihr Cluster möglicherweise Daten und muss möglicherweise von Grund auf neu erstellt werden.

Aus diesem Grund empfehle ich ein hochverfügbares Setup.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *