So installieren Sie einen Kubernetes -Cluster auf CentOS 8

So installieren Sie einen Kubernetes -Cluster auf CentOS 8

Der Prozess der Installation a Kubernetes Cluster An Centos 8 ist fast ähnlich wie bei Centos 7 (was Sie hier durchmachen können), aber der Prozess hier hat einige Änderungen. Diese Veränderungen drehen sich meistens um die Installation von Docker.

Ab Centos 8 (und im weiteren Sinne Rhel 8), Docker wurde nun nativ durch ersetzt durch Podman Und Buildah welche Werkzeuge von sind Roter Hut. Tatsächlich wurde das Docker -Paket nun aus dem Standardpaket -Repository entfernt.

Mit dieser Bewegung die Roter Hut Das Team zielt darauf ab, den Prozess des Erstellens und der Verwendung von Containern zu vereinfachen, ohne spezielle Berechtigungen zu benötigen, während gleichzeitig die Kompatibilität mit Docker -Bildern aufrechterhalten und sie betrieben werden, ohne einen Daemon zu benötigen. Podman verspricht, beim Laufen mehr Flexibilität zu bieten Kubernetes Umgebungen, aber die Jury bleibt da draußen.

Für diesen Artikel werden wir den Installationsprozess durchlaufen Kubernetes auf einen Centos 8 Plattform, laufen auf Docker-CE (Gemeinschaftsausgabe). In einem späteren Artikel werden wir auch eine ähnliche Installation durchführen, indem wir verwenden Podman Für unsere Behälter.

Voraussetzungen

  1. Drei Server, die CentOS 8 läuft - 1 Masterknoten Und 2 Arbeiterknoten.
  2. Es wird empfohlen, dass Ihre Knoten mindestens 2 CPUs mit 2 GB RAM oder mehr pro Maschine haben sollten. Dies ist keine strenge Anforderung, wird jedoch weitgehend auf die Anforderungen der Anwendung bestimmt, die Sie ausführen möchten.
  3. Internet -Konnektivität auf all Ihren Knoten. Wir werden holen Kubernetes Und Docker Pakete aus dem Repository. Ebenso müssen Sie sicherstellen, dass der DNF -Paket -Manager standardmäßig installiert ist und Pakete remote abrufen kann.
  4. Alle Ihre Knoten sollten auch in einem privaten oder öffentlichen Netzwerk eine Verbindung zueinander herstellen können, je nachdem, was auch immer verfügbar ist.
  5. Sie benötigen auch Zugriff auf ein Konto mit Sudo- oder Root -Privilegien. In diesem Tutorial werde ich mein Root -Konto verwenden.

Vorsicht

Die meisten Knoten kommen im Allgemeinen mit einzigartigen MAC adressiert jedoch in einigen einzigartigen Fällen einige Virtuelle Maschinen kann identische MAC -Adressen haben. Es wird daher empfohlen, dass Sie bestätigen, dass die Product_uuid und das MAC Die Adresse ist in keinem der Knoten identisch.

Kubernetes Verwendet diese Werte, um die Knoten im Cluster eindeutig zu identifizieren. Wenn diese Werte nicht für jeden Knoten eindeutig sind, kann der Installationsprozess fehlschlagen.

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

# IP -Link 

Um die zu überprüfen product_uuid und vergleichen Sie den folgenden Befehl aus.

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

Logische Architektur

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

Meisterknoten - Diese Maschine fungiert im Allgemeinen als Steuerebene und führt die Cluster -Datenbank und den API -Server aus (mit dem die Kubectl CLI kommuniziert).

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

Kubernetes -Cluster -Diagramm

Installation von Kubernetes-Cluster auf dem Master-Knoten

Für Kubernetes Um zu arbeiten, benötigen Sie eine Containerisierungsmotor. Wie bereits erwähnt, werden wir verwenden Docker-CE.

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

Schritt 1: Bereiten Sie Hostname, Firewall und Selinux vor

Auf Ihrem CentOS 8 Master-Knoten, Legen Sie den System -Hostnamen 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 Arbeiterknoten-1 Und Arbeiterknoten-2 Um zu überprüfen, ob Ihre aktualisierte Hostdatei mit dem Befehl ping korrekt funktioniert.

# Ping 192.168.0.48 # Ping 192.168.0.49 

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

# SetEnforce 0 

Einstellung SetEnforce Zu 0 Setzt Selinux effektiv auf zulässige, was Selinux bis zum nächsten Neustart effektiv deaktiviert. Um es vollständig zu deaktivieren, verwenden Sie den folgenden Befehl und starten Sie neu.

# sed -i --Follow -symlinks 's/selinux = Enforcing/selinux = deaktiviert/g'/etc/sysconfig/selinux # Neustart 

Kubernetes nutzt verschiedene Ports für Kommunikation und Zugriff, und diese Ports müssen für Kubernetes zugänglich sein und nicht durch die Firewall eingeschränkt werden.

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-exptables 

Schritt 2: Installieren Sie Docker-CE auf CentOS 8

Sie müssen die hinzufügen Docker Repository zuerst, da es nicht mehr in der Standardpaketliste mit den folgenden liegt DNF Config-Manager Befehl.

# DNF Config-Manager --add-Repo = https: // herunterladen.Docker.com/linux/centos/docker-ce.Repo 

Auch installieren Container.io Paket, das als Daemon erhältlich ist, der den gesamten Container-Lebenszyklus seines Hostsystems verwaltet, von Bildübertragung und Speicher bis hin zur Ausführung und Überwachung von Container bis hin zu Speicher auf niedrigem Niveau bis hin zu Netzwerkanhängen und darüber hinaus.

# DNF Installieren Sie https: // herunterladen.Docker.com/linux/centos/7/x86_64/stabil/pakete/containerd.IO-1.2.6-3.3.EL7.x86_64.Drehzahl 

Installieren Sie nun die neueste Version von a Docker-CE Paket.

# DNF Installieren Sie Docker-CE 

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

# SystemCTL aktivieren Docker # systemctl start docker 

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

Als nächstes müssen Sie hinzufügen Kubernetes Repositories manuell, da sie standardmäßig nicht installiert werden Centos 8.

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

Kubeadm Hilft Ihnen, einen minimal lebensfähigen Kubernetes -Cluster zu starten, der den Best Practices entspricht. Mit Kubeadm, Ihr Cluster sollte die Kubernetes -Konformitätstests bestehen.

Kubeadm Unterstützt auch andere Cluster -Lebenszyklusfunktionen wie Upgrades, Downgrade und 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 fortfahren und installieren Kubeadm Paket.

# DNF installieren kubeadm -y 

Wenn die Installation erfolgreich abgeschlossen ist, aktivieren und starten Sie den Service.

# SystemCTL Aktivieren Sie Kuberelet # Systemctl Start Kuberetel 

Schritt 4: Erstellen Sie einen Steuermeister mit Kubeadm

Der Kubernetes -Meister, der als der fungiert Kontrollebene Für den Cluster wird einige kritische Dienste ausgeführt, die für den Cluster erforderlich sind. Aus diesem Grund wird der Initialisierungsprozess eine Reihe von Pregencks durchführen, um sicherzustellen, dass die Maschine zum Ausführen von Kubernetes bereit ist. Diese Pregencks entlarvt Warnungen und beenden die Fehler. Kubeadm init Download und installiert dann die Cluster -Steuerebenekomponenten.

Jetzt ist es Zeit, den Kubernetes -Master zu initialisieren, aber vorher müssen Sie den Tausch deaktivieren, um zu laufen. “Kubeadm init" Befehl.

# Swapoff -a 

Initialisierung Kubernetes Master ist ein vollständig automatisierter Prozess, der von dem gesteuert wirdKubeadm init„Befehl wie gezeigt.

# Kubeadm init 
Initialisieren Sie Kubernetes Master

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

Kubeadm Mach mit 192.168.0.47: 6443 -TOOKE NU06LU.XRSUX0SS0IXTNMS5 \-Discovery-Token-Ca-Cert-Hash HA256: F996EA35R4353D342FDEA2997A1CF8CAEDDAFD6D4360D606DBC82314683478HJMF7

Spitze: Manchmal kann der obige Befehl Fehler über die bestandenen Argumente werfen. Um Fehler zu vermeiden, müssen Sie die entfernen '\' Charakter und Ihr endgültiger Befehl sehen so aus.

# Kubeadm Mach 192 bei.168.0.47: 6443 -TOOKE NU06LU.XRSUX0SS0IXTNMS5 -Discovery Token-Ca-Cert-Hash SHA256: F996EA35R4353D342FDEA2997A1CF8CAEDDAFD6D4360D606DBC8231463478HJMF7 

Einmal Kubernetes Initialisiert erfolgreich, müssen Sie Ihrem Benutzer ermöglichen, mit dem Cluster zu beginnen. In unserem Szenario werden wir den Root -Benutzer verwenden. Sie können den Cluster auch mit dem Sudo -Benutzer wie gezeigt starten.

Benutzen Wurzel, laufen:

# MKDIR -P $ HOME/.kube # cp -i/etc/kubernetes/admin.Conf $ Home/.kube/config # chown $ (id -u): $ (id -g) $ home/.kube/config 

Zu verwenden a sudo fähiger Benutzer, laufen:

$ 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 Holen Sie sich Knoten 
Überprüfen Sie den Status von Knoten

In diesem Moment werden Sie sehen, dass der Status des Masterknotens 'ist' 'Nicht bereit''. Dies liegt daran, dass wir das POD -Netzwerk noch nicht im Cluster bereitstellen müssen.

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

Schritt 5: Richten Sie Ihr POD -Netzwerk ein

Die Bereitstellung des Netzwerkclusters ist abhängig von Ihren Anforderungen ein hochflexibler 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, für das keine Konfiguration oder zusätzlichen Code erforderlich ist und eine IP -Adresse pro Pod bietet, die für uns hervorragend ist. Wenn Sie weitere Optionen sehen möchten, lesen Sie bitte hier.

Diese Befehle sind wichtig, um das POD -Netzwerk -Setup zu erhalten.

# Export kubever = $ (kubectl Version | Base64 | Tr -D '\ n') # kubectl anwenden -f "https: // cloud.weben.Arbeiten/K8S/Netz?K8S-Version = $ kubever " 
Setup POD -Netzwerk

Wenn Sie nun den Status Ihres Master-Knotens überprüfen, sollte es seinBereit''.

# kubectl Holen Sie sich Knoten 
Überprüfen Sie den Status von Master -Knoten

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

Hinzufügen von Arbeiterknoten zu Kubernetes Cluster

Die folgenden Anweisungen werden jeweils durchgeführt Arbeiterknoten Beim Beitritt zum Kubernetes -Cluster.

Schritt 1: Bereiten Sie Hostname, Firewall und Selinux vor

Setzen Sie zuerst den Hostnamen auf Ihrem Arbeiterknoten-1 Und Arbeiterknoten-2, und fügen Sie dann die Host -Einträge zu dem 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 Meisterknoten von deiner Arbeiterknoten Um zu bestätigen, dass Ihre aktualisierte Hostdatei mit dem Befehl ping gut funktioniert.

# 192.168.0.47 

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

# setEnforce 0 # sed -i--Follow-symlinks 's/selinux = Enforcing/selinux = deaktiviert/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-OptiPables 

Schritt 2: Setup Docker-CE und Kubernetes Repo

Fügen Sie zuerst das Docker-Repository mit DNF Config-Manager hinzu.

# DNF Config-Manager --add-Repo = https: // herunterladen.Docker.com/linux/centos/docker-ce.Repo 

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

# DNF Installieren Sie https: // herunterladen.Docker.com/linux/centos/7/x86_64/stabil/pakete/containerd.IO-1.2.6-3.3.EL7.x86_64.Drehzahl 

Installieren Sie mit installierten Paketen die neueste Version von Docker-CE.

# DNF Installieren Sie Docker-CE 

Aktivieren und starten Sie den Docker -Service.

# SystemCTL aktivieren Docker # systemctl start docker 

Sie müssen hinzufügen Kubernetes Repositories manuell, da sie nicht vorinstalliert sind Centos 8.

# Katze < /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 auf CentOS 8

Wenn das Paket -Repo jetzt fertig ist, können Sie fortfahren und installieren Kubeadm.

# DNF installieren kubeadm -y 

Starten Sie und aktivieren Sie den Service.

# SystemCTL Aktivieren Sie Kuberelet # Systemctl Start Kuberetel 

Schritt 4: Verbinden Sie den Arbeiterknoten mit dem Kubernetes -Cluster

Wir benötigen jetzt das Token, das Kubeadm init generiert, um sich dem Cluster anzuschließen. Sie können es kopieren und in Ihr einfügen Knoten-1 Und Knoten-2 Wenn Sie es irgendwo kopiert hätten.

# Kubeadm Mach 192 bei.168.0.47: 6443 -TOOKE NU06LU.XRSUX0SS0IXTNMS5-DISCOVERY-TOOKEN-CA-CERT-HASH SHA256: F996EA35R4353D342FDEA2997A1CF8CAEDDAFD6D4360D606DBC82314683478HJMF788 

Wie in der letzten Zeile vorgeschlagen, kehren Sie zu Ihrem zurück Masterknoten und überprüfen Sie, ob Arbeiter Knoten-1 Und Arbeiterknoten-2 haben sich dem Cluster mit dem folgenden Befehl angeschlossen.

# kubectl Holen Sie sich Knoten 
Überprüfen Sie den Status aller Knoten im Kubernetes -Cluster

Wenn alle Schritte erfolgreich ausgeführt werden, sollten Sie sehen Knoten-1 Und Knoten-2 im readiumstatus auf der Masterknoten. Zu diesem Zeitpunkt haben Sie jetzt erfolgreich einen Kubernetes -Cluster eingesetzt Centos 8.

Empfohlen zu lesen: So bereitstellen Sie Nginx auf einem Kubernetes -Cluster bereit

Einige Einschränkungen

Der Cluster, den wir hier erstellt haben Meisterknoten, und als solche, wenn die Meisterknoten Fehlschlägt Ihr Cluster kann Daten verlieren und muss möglicherweise von Grund auf neu nachgebildet werden.

Aus diesem Grund empfehle ich ein gut verfügbares Setup.