So installieren Sie einen Kubernetes-Cluster unter CentOS 8
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
- Drei Server mit CentOS 8 – 1 Hauptknoten und 2 Arbeiterknoten.
- 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.
- 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.
- 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.
- 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:
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.
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
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
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
Wenn Sie nun den Status Ihres Master-Knotens überprüfen, sollte er ‘Bereit‘.
# kubectl get nodes
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
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.