Implementierung der Wiederaufnahme des K8S-Knotens in den Master-Cluster

Implementierung der Wiederaufnahme des K8S-Knotens in den Master-Cluster

1. Knoten löschen

Führen Sie kubectl delete node node01 aus.

2. Wenn Sie den Join zu diesem Zeitpunkt direkt ausführen, wird ein Fehler gemeldet. wie folgt:

[root@k8s-node02 pki]# kubeadm join 192.168.140.128:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:a3d9827be411208258aea7f3ee9aa396956c0a77c8b570503dd677aa3b6eb6d8 
[preflight] Ausführen von Pre-Flight-Checks
 [WARNUNG SystemVerification]: Diese Docker-Version ist nicht auf der Liste der validierten Versionen: 19.03.12. Neueste validierte Version: 18.09
Fehler bei der Ausführungsphase Preflight: [preflight] Es sind einige schwerwiegende Fehler aufgetreten:
 [FEHLER FileAvailable--etc-kubernetes-kubelet.conf]: /etc/kubernetes/kubelet.conf existiert bereits
 [FEHLER FileAvailable--etc-kubernetes-bootstrap-kubelet.conf]: /etc/kubernetes/bootstrap-kubelet.conf existiert bereits
 [ERROR Port-10250]: Port 10250 wird verwendet
 [FEHLER FileAvailable--etc-kubernetes-pki-ca.crt]: /etc/kubernetes/pki/ca.crt existiert bereits
[Preflight] Wenn Sie wissen, was Sie tun, können Sie mit `--ignore-preflight-errors=...` eine Prüfung ohne schwerwiegende Fehler durchführen.

Lösung:

Dem Fehlerbericht zufolge können Sie sehen, dass der Port belegt ist und die Konfigurationsdatei und das CA-Zertifikat generiert wurden. Daher müssen Sie diese Konfigurationsdateien und Zertifikate löschen und den belegten Port beenden. Es wird empfohlen, vor dem Löschen eine Sicherungskopie zu erstellen.

[root@k8s-node02 pki]# lsof -i:10250
BEFEHL PID BENUTZER FD TYP GERÄTEGRÖSSE/AUS KNOTENNAME
kubelet 694 root 30u IPv6 26021 0t0 TCP *:10250 (HÖREN)
[root@k8s-node02 pki]# kill -9 694
[root@k8s-node02 pki]# cd /etc/kubernetes/
[root@k8s-node02 kubernetes]# ls
bootstrap-kubelet.conf kubelet.conf manifestiert pki
[root@k8s-node02 kubernetes]# mv bootstrap-kubelet.conf bootstrap-kubelet.conf_bk
[root@k8s-node02 kubernetes]# mv kubelet.conf kubelet.conf_bk
[root@k8s-node02 kubernetes]# cd pki/
[root@k8s-node02 pki]# ls
ca.crt
[root@k8s-node02 pki]# rm -rf ca.crt 

3. Führen Sie den Join erneut aus und es tritt erneut ein Fehler auf.

[root@k8s-node02 ~]# kubeadm join 192.168.140.128:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:a3d9827be411208258aea7f3ee9aa396956c0a77c8b570503dd677aa3b6eb6d8 
[preflight] Ausführen von Pre-Flight-Checks
 [WARNUNG SystemVerification]: Diese Docker-Version ist nicht auf der Liste der validierten Versionen: 19.03.12. Neueste validierte Version: 18.09
[Preflight] Konfiguration aus dem Cluster wird gelesen …
[preflight] Zu Ihrer Information: Sie können sich diese Konfigurationsdatei mit „kubectl -n kube-system get cm kubeadm-config -oyaml“ ansehen.
[kubelet-start] Herunterladen der Konfiguration für das Kubelet aus der ConfigMap „kubelet-config-1.15“ im Kube-System-Namespace
[kubelet-start] Schreibe die Kubelet-Konfiguration in die Datei „/var/lib/kubelet/config.yaml“
[kubelet-start] Schreibe eine Kubelet-Umgebungsdatei mit Flags in die Datei „/var/lib/kubelet/kubeadm-flags.env“
[kubelet-start] Aktivieren des Kubelet-Dienstes
[kubelet-start] Warten darauf, dass Kubelet den TLS-Bootstrap ausführt …
[kubelet-check] Ursprüngliches Timeout von 40 s abgelaufen.
Fehler in der Ausführungsphase kubelet-start: Fehler beim Hochladen von Crisocket: Zeitüberschreitung beim Warten auf die Bedingung

Lösung:

Führen Sie kubeadm reset aus, um den untergeordneten Knoten zurückzusetzen

[root@k8s-node02 ~]# kubeadm zurücksetzen
[zurücksetzen] WARNUNG: An diesem Host durch „kubeadm init“ oder „kubeadm join“ vorgenommene Änderungen werden rückgängig gemacht.
[Zurücksetzen] Möchten Sie wirklich fortfahren? [j/N]: j
[preflight] Ausführen von Pre-Flight-Checks
W0710 10:22:57.487306 31093 removeetcdmember.go:79] [reset] Keine Kubeadm-Konfiguration, verwende etcd-Pod-Spezifikation, um Datenverzeichnis abzurufen
[reset] Keine etcd-Konfiguration gefunden. Externes etcd wird angenommen
[reset] Bitte setzen Sie etcd manuell zurück, um weitere Probleme zu vermeiden
[reset] Stoppen des Kubelet-Dienstes
[reset] Aushängen gemounteter Verzeichnisse in „/var/lib/kubelet“
[reset] Inhalt der Konfigurationsverzeichnisse löschen: [/etc/kubernetes/manifests /etc/kubernetes/pki]
[reset] Dateien löschen: [/etc/kubernetes/admin.conf /etc/kubernetes/kubelet.conf /etc/kubernetes/bootstrap-kubelet.conf /etc/kubernetes/controller-manager.conf /etc/kubernetes/scheduler.conf]
[reset] Inhalt von Statusverzeichnissen löschen: [/var/lib/kubelet /etc/cni/net.d /var/lib/dockershim /var/run/kubernetes]

Der Zurücksetzungsvorgang führt weder zu einem Zurücksetzen noch zu einer Bereinigung der iptables-Regeln oder IPVS-Tabellen.
Wenn Sie iptables zurücksetzen möchten, müssen Sie dies manuell tun.
Zum Beispiel:
iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X

Wenn Ihr Cluster für die Nutzung von IPVS eingerichtet wurde, führen Sie ipvsadm --clear (oder ähnlich) aus.
um die IPVS-Tabellen Ihres Systems zurückzusetzen.

Der Zurücksetzungsvorgang bereinigt Ihre Kubeconfig-Dateien nicht und Sie müssen sie manuell entfernen.
Bitte überprüfen Sie den Inhalt der Datei $HOME/.kube/config.

4. Führen Sie abschließend den Join aus und das Problem ist gelöst.

[root@k8s-node02 ~]# kubeadm join 192.168.140.128:6443 --token abcdef.0123456789abcdef --discovery-token-ca-cert-hash sha256:a3d9827be411208258aea7f3ee9aa396956c0a77c8b570503dd677aa3b6eb6d8 
[preflight] Ausführen von Pre-Flight-Checks
 [WARNUNG SystemVerification]: Diese Docker-Version ist nicht auf der Liste der validierten Versionen: 19.03.12. Neueste validierte Version: 18.09
[Preflight] Konfiguration aus dem Cluster wird gelesen …
[preflight] Zu Ihrer Information: Sie können sich diese Konfigurationsdatei mit „kubectl -n kube-system get cm kubeadm-config -oyaml“ ansehen.
[kubelet-start] Herunterladen der Konfiguration für das Kubelet aus der ConfigMap „kubelet-config-1.15“ im Kube-System-Namespace
[kubelet-start] Schreibe die Kubelet-Konfiguration in die Datei „/var/lib/kubelet/config.yaml“
[kubelet-start] Schreibe eine Kubelet-Umgebungsdatei mit Flags in die Datei „/var/lib/kubelet/kubeadm-flags.env“
[kubelet-start] Aktivieren des Kubelet-Dienstes
[kubelet-start] Warten darauf, dass Kubelet den TLS-Bootstrap ausführt …

Dieser Knoten ist dem Cluster beigetreten:
* Die Anforderung zur Zertifikatsignierung wurde an den API-Server gesendet und eine Antwort wurde empfangen.
* Das Kubelet wurde über die neuen sicheren Verbindungsdetails informiert.

Führen Sie „kubectl get nodes“ auf der Steuerebene aus, um zu sehen, wie dieser Knoten dem Cluster beitritt.

5. Überprüfen Sie den Masterknoten und treten Sie erfolgreich bei.

[root@k8s-master01 ~]# kubectl Knoten abrufen
NAME STATUS ROLLEN ALTER VERSION
k8s-master01 Bereit Master 120m v1.15.1
k8s-node01 Bereit <keine> 100m v1.15.1
k8s-node02 Bereit <keine> 83m v1.15.1

Dies ist das Ende dieses Artikels über die Implementierung des Wiederbeitritts des K8S-Knotens zum Mastercluster. Weitere relevante Inhalte zum K8S-Knoten-Mastercluster finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung zur Bereitstellung des Kafka-Schnittstellenverwaltungstools (kafkamanager) auf K8S
  • Docker-Lernhinweise zur K8S-Bereitstellungsmethode
  • Detaillierte Schritte zum Installieren und Konfigurieren des K8S-Clusters in CentOS 7
  • Aufbau einer Docker+K8S-Clusterumgebung und verteilte Anwendungsbereitstellung
  • Schritte zum Bereitstellen eines Django-Projekts mit k8s
  • Detailliertes Tutorial zum schnellen Bereitstellen von SpringBoot-Anwendungen auf K8S
  • So stellen Sie einen Redis-Cluster auf K8s bereit
  • Detailliertes Tutorial zur vollständigen Bereitstellung der Kubernetes (K8S)-Containercluster-Verwaltungsumgebung – Teil 1

<<:  MySQL-Beispiel für die Konvertierung von Spalten in Zeilen und die Gruppierung nach Jahr und Monat

>>:  Eine kurze Analyse, wie Sie das Root-Passwort in Linux suse11 ändern können, wenn Sie es vergessen haben

Artikel empfehlen

Detailliertes Tutorial zum Kompilieren und Installieren von Python3.6 unter Linux

1. Gehen Sie zunächst auf die offizielle Website ...

Beispiel für die Installation von nginx in einem angegebenen Verzeichnis

Aufgrund von Unternehmensanforderungen müssen zwe...

Vollständige Analyse der MySQL-Datentypen

Datentyp: Die grundlegenden Regeln, die definiere...

js implementiert einen einzigen Klick zum Ändern der Tabelle

Pure js implementiert eine mit einem Klick bearbe...

Detaillierte Erklärung der Vue-Komponenten

<Text> <div id="Wurzel"> &l...

Einführung in die Verwendung gängiger XHTML-Tags

Es gibt viele Tags in XHTML, aber nur wenige werd...

CentOS verwendet expect, um Skripte und Befehle remote in Stapeln auszuführen

Manchmal müssen wir Server stapelweise bedienen, ...

Vergleich der Verwendung von EXISTS und IN in MySQL

1. Verwendung: (1) EXISTS-Nutzung Wählen Sie a.ba...

Vue importiert Echarts, um ein Linienstreudiagramm zu realisieren

In diesem Artikel wird der spezifische Code für d...

Prinzipanalyse des UDP-Verbindungsobjekts und Anwendungsbeispiele

Ich habe zuvor zum Einstieg in UDP ein einfaches ...

So ändern Sie das MySQL-Datenbankdateiverzeichnis in Ubuntu

Vorwort Der Ubuntu-Server des Unternehmens platzi...