In diesem Artikel erfahren wir mehr über die Kubernetes-Cluster-Installation mit Kubeadm in RHEL 8 und seinen Klonen wie AlmaLinux 8, CentOS 8 und Rocky Linux 8.
Bevor Sie sich darauf einlassen, müssen Sie ein Grundwissen über Kubernetes-Konzepte und -Architektur haben . In diesem Artikel werden wir Cluster mit zwei Knoten demonstrieren.
Um mit der Installation fortzufahren, benötigen wir die unten aufgeführten Grundvoraussetzungen.
- Mindestens 2 Hosts.
- 2 CPUs.
- 2 GB physischer Arbeitsspeicher (RAM).
- 20 GB Speicherplatz.
- Internetverbindung zum Herunterladen von Paketen.
1. Hostnamen und IP-Adresse konfigurieren
Legen Sie den Hostnamen fest und konfigurieren Sie Hosts in Master und Workers. Die Betriebssystemdatei hosts wird verwendet, um Hostnamen oder Domänennamen in IP-Adressen umzuwandeln.
Hier haben wir zwei Hosts:
- ostechmaster - Meister
- ostechworker – Arbeiter
Verwenden Sie den folgenden Befehl, um den Hostnamen festzulegen. Nach dem Festlegen des Hostnamens ist ein Neustart erforderlich.
# hostnamectl set-hostname ostechmaster
Bearbeiten Sie /etc/hosts
Datei:
# vi /etc/hosts
Fügen Sie sowohl den Server- als auch den Client-Hostnamen und die IP-Adresse in /etc/hosts
hinzu Datei:
Führen Sie einen Ping-Test durch, um die Konnektivität sicherzustellen:
[[email protected] ~]# ping ostechworkerPING ostechworker (172.31.5.141) 56(84) Bytes an Daten.64 Bytes von ostechworker (172.31.5.141):icmp_seq=1 ttl=64 time=0.472 ms64 Bytes von ostechworker (172.31.5.141):icmp_seq=2 ttl=64 time=0.492 ms64 bytes von ostechworker (172.31.5.141):icmp_seq=3 ttl=64 time=1.43 ms64 bytes von ostechworker (172.31.5.141):icmp_seq=4 ttl=64 Zeit=0,425 ms
2. SElinux deaktivieren
Deaktivieren Sie SElinux in Master und Workers, sodass alle Container problemlos auf das Host-Dateisystem zugreifen können, wenn SElinux deaktiviert ist.
Machen Sie 'SELINUX=disabled
' in der Konfigurationsdatei /etc/selinux/config
mit dem vi-Editor. Ein Neustart ist erforderlich, um die SElinux-Änderung widerzuspiegeln.
[[email protected] ~]# vi /etc/selinux/config
Stellen Sie den SElinux-Status mit dem folgenden Befehl sicher.
[[email protected] ~]# sestatusSELinux-Status:deaktiviert
3. Swap in Master und Worker deaktivieren
Swap muss auf allen Kubernetes-Hosts (Master &Workers) deaktiviert werden. Dies ist die bevorzugte Bereitstellungsmethode der Kubernetes-Community. Der Kubelet-Dienst wird auf dem Master und den Workern nicht gestartet, wenn Swap nicht deaktiviert ist.
Führen Sie den folgenden Befehl aus, um SWAP zu deaktivieren:
[[email protected] ~]# swapoff -a &&sed -i '/swap/d' /etc/fstab
4. Erlauben Sie die erforderlichen Ports in der Firewall
Damit Kubernetes-Komponenten miteinander interagieren können, müssen bestimmte wichtige Ports verfügbar sein. Unten sind die Ports aufgeführt, die geöffnet werden müssen, um die Konnektivität zwischen Kubernetes-Komponenten zu nutzen.
Steuerungsebene/Masterserver:
Protokoll | Richtung | Portbereich | Zweck | Verwendet von |
TCP | Eingehend | 6443 | Kubernetes-API-Server | Alle |
TCP | Eingehend | 2379-2380 | etcd-Server-Client-API | kube-apiserver, etcd |
TCP | Eingehend | 10250 | Kubelet-API | Selbst, Kontrollebene |
TCP | Eingehend | 10259 | kube-scheduler | Selbst |
TCP | Eingehend | 10257 | kube-controller-manager | Selbst |
Worker-Knoten:
Protokoll | Richtung | Portbereich | Zweck | Verwendet von |
TCP | Eingehend | 10250 | Kubelet-API | Selbst, Kontrollebene |
TCP | Eingehend | 30000-32767 | NodePort-Dienste | Alle |
Führen Sie die folgenden Befehle aus, um die erforderlichen Ports durch die Firewall zuzulassen.
Master-Knoten:
[[email protected] ~]# firewall-cmd --permanent --add-port=6443/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=2379-2380/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10250/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10251/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10259/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=10257/tcp
[[email protected] ~]# firewall-cmd --reload
Worker-Knoten:
[[email protected] ~]# firewall-cmd --permanent --add-port=10250/tcp
[[email protected] ~]# firewall-cmd --permanent --add-port=30000-32767/tcp
[[email protected] ~]# firewall-cmd --reload
Wir deaktivieren die Firewall sowohl im Master als auch im Worker, da sie zu Demonstrationszwecken dient. Es wird jedoch nicht für die Echtzeit-Produktionspraxis empfohlen.
Verwenden Sie die folgenden Befehle, um die Firewall zu stoppen und zu deaktivieren.
[[email protected] ~]# systemctl stop firewalld
[[email protected] ~]# systemctl disable firewalld
5. Installieren Sie Docker
Docker erleichtert das „Bauen“ von Containern, während Kubernetes es ermöglicht, sie in Echtzeit zu „verwalten“. Verwenden Sie Docker, um die Software zu verpacken und zu versenden. Verwenden Sie Kubernetes, um Ihre App zu starten und zu skalieren.
Docker-Repository auf allen Computern im Cluster hinzufügen.
Erstellen Sie die Datei mit dem Namen docker.repo
unter /etc/yum.repos.d/
Verzeichnis:
[[email protected] ~]# vi /etc/yum.repos.d/docker.repo
Fügen Sie darin die folgenden Zeilen hinzu:
[docker]baseurl=https://download.docker.com/linux/centos/8/x86_64/stable/gpgcheck=0
Drücken Sie die ESC-Taste und geben Sie :wq
ein um die Datei zu speichern und zu schließen.
Installieren Sie Docker sowohl im Master- als auch im Worker-Knoten:
# yum -y docker-ce installieren
Aktivieren und starten Sie Docker nach der Installation auf beiden Knoten:
# systemctl Docker aktivieren
# systemctl docker starten
Überprüfen Sie und stellen Sie sicher, dass Docker auf beiden Maschinen ausgeführt wird.
# systemctl status docker
6. Installieren Sie Kubernetes
Kubernetes-Repository in Master und Worker hinzufügen.
Erstellen Sie die Datei kubernetes.repo
sowohl im Master als auch im Worker unter /etc/yum.repos.d/
Verzeichnis:
# vi /etc/yum.repos.d/kubernetes.repo
Fügen Sie die folgenden Zeilen hinzu:
[kubernetes]name=Kubernetesbaseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://packages.cloud.google.com/ yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
Drücken Sie ESC und geben Sie :wq
ein um die Datei zu speichern und zu schließen.
Installieren Sie kubeadm, kubelet, kubectl in Master- und Worker-Knoten mit dem folgenden Befehl:
# yum install -y kubelet kubeadm kubectl --disableexcludes=Kubernetes
Aktivieren und starten Sie das kubelet
Service in beiden Maschinen:
# systemctl aktiviert kubelet
# systemctl kubelet starten
Überprüfen Sie den Status des Kubelet-Dienstes und vergewissern Sie sich, dass er auf beiden Maschinen einwandfrei läuft.
# systemctl status kubelet
7. Kubernetes initialisieren
Verwenden Sie den folgenden Befehl, um Kubernetes im Master Server zu initialisieren
[[email protected] ~]# kubeadm init
Sie erhalten die folgende Ausgabe, die besagt, dass die Kubernetes-Steuerungsebene erfolgreich initialisiert wurde. Und bestimmte Schritte werden erwähnt, um mit der Verwendung des Clusters zu beginnen, folgen Sie diesen.
Kopieren und speichern Sie auch den 'kubeadm join'
Befehl aus der Ausgabe, wird er verwendet, um dem Worker-Knoten im Cluster beizutreten.
Beispielausgabe:
Ihre Kubernetes-Steuerungsebene wurde erfolgreich initialisiert! Um Ihren Cluster zu verwenden, müssen Sie Folgendes als normaler Benutzer ausführen:mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id - u):$(id -g) $HOME/.kube/configWenn Sie der Root-Benutzer sind, können Sie alternativ Folgendes ausführen: export KUBECONFIG=/etc/kubernetes/admin.conf Sie sollten jetzt ein Pod-Netzwerk im Cluster bereitstellen. Führen Sie „kubectl apply -f [podnetwork].yaml“ mit einer der unter https://kubernetes.io/docs/concepts/cluster-administration/addons/Then aufgeführten Optionen aus kubeadm beitreten 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r \ --discovery-Token-ca-cert-Hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d3d381ab37e1cb8b1d05e86f2
Da wir mit root
fortfahren Benutzer, führen Sie den folgenden Befehl auf dem Master-Server aus, wie in der obigen Ausgabe erwähnt.
[[email protected] ~]# export KUBECONFIG=/etc/kubernetes/admin.conf
8. POD-Netzwerk konfigurieren
Ein Kubernetes-Pod-Netzwerk ist ein Netzwerk miteinander verbundener Komponenten in Kubernetes. Dieses Netzwerkkonzept kann auf verschiedene Arten implementiert werden. In unserer Demonstration verwenden wir 'Weave Net' .
Führen Sie die folgenden Befehle auf dem Master-Server aus, um das POD-Netzwerk einzurichten.
[[email protected] ~]# export kubever=$(kubectl version | base64 | tr -d '\n')
[[email protected] ~]# kubectl apply -f https://cloud.weave.works/k8s/net?k8s-version=$kubever
Beispielausgabe:
Dienstkonto/weave-net createdclusterrole.rbac.authorization.k8s.io/weave-net createdclusterrolebinding.rbac.authorization.k8s.io/weave-net createdrole.rbac.authorization.k8s.io/weave-net createdrolebinding.rbac .authorization.k8s.io/weave-net createddaemonset.apps/weave-net created[[email protected] ~]#
9. Treten Sie dem Worker-Knoten bei
Führen Sie den 'kubeadm join
aus ' Befehl, um den Worker-Knoten dem Cluster beizutreten. Dies ist der Befehl, den wir aus „kubeadm init
“ kopiert haben ' Ausgabe.
[[email protected] ~]# kubeadm join 172.31.10.29:6443 --token 220tvj.051bkeyj5tg6v55r --discovery-token-ca-cert-hash sha256:434c49c7969256a7fae3880b340202cadd4fd29d381predc0f5eb81predc0f5eb81predc0f5eb81pre>Sie können den Knoten im Master-Server mit dem folgenden Befehl verifizieren
# kubectl-Get-KnotenBeispielausgabe:
NAME STATUS ROLLEN ALTER VERSIONostechmaster Ready control-plane,master 32m v1.23.1ostechworker Ready30m v1.23.1 Schlussfolgerung
In diesem Artikel haben wir die detaillierten Schritte zum Einrichten und Konfigurieren von Kubernetes Cluster mit Kubeadm gesehen. Sehen Sie sich unsere vorherige Kubernetes-Reihe an Artikel, um ein detailliertes Verständnis der Kubernetes-Architektur und -Konzepte zu erhalten. Wir werden Kubernetes-Vorgänge in den kommenden Artikeln sehen.
Weiterlesen:
- So erstellen und verwalten Sie Kubernetes-Pods unter Linux
Quelle:
- https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/