Detaillierte Einführung in die Bereitstellung eines K8S-Clusters auf einem CentOS7-System

Detaillierte Einführung in die Bereitstellung eines K8S-Clusters auf einem CentOS7-System

1 Ausführung und Planung

1.1 Versionsinformationen:

Name Versionsnummer
Kernel 3.10.0-1160.el7.x86_64
Betriebssystem CentOS Linux Version 7.9.2009 (Core)
Docker 20.10.11
Abonnieren 1.23.0
kubelet 1.23.0
kubectl 1.23.0

1.2 Clusterplanung

IP Hostname
192.168.0.114 k8s-master
192.168.0.115 k8s-knoten01
192.168.0.116 k8s-knoten02

2. Bereitstellung

veranschaulichen:

Schritt 1 bis Schritt 8, alle Knoten müssen den Masterknoten betreiben: Schritt 9, 10 Knoten Knoten: Schritt 11

1. Schalten Sie die Firewall aus

Zum Herunterfahren: systemctl stop firewalld

Dauerhaft deaktivieren: systemctl disable firewalld

2. Selinux ausschalten

Zum Ausschalten: setenforce 0

3. Swap deaktivieren

Vorübergehendes Herunterfahren: swapoff -a

Dauerhaft deaktivieren: sed -ri 's/.*swap.*/#&/' /etc/fstab , verwenden Sie diesen Befehl, um den Code mit swap Zeile auszukommentieren

Überprüfen: free -m

4. Fügen Sie die Entsprechung zwischen Hostname und IP hinzu

Fügen Sie die Zuordnungsbeziehung in /etc/hosts entsprechend dem Planungsinhalt in 1.2 hinzu

192.168.0.114 k8s-Master
192.168.0.115 k8s-Knoten01
192.168.0.116 k8s-Knoten02

5. Übergeben Sie den überbrückten IPV4-Verkehr an die iptables-Kette

Fügen Sie die Konfiguration mit dem folgenden Befehl hinzu:

Katze > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
Ende der Laufzeit

Führen Sie sysctl --system aus, damit die Konfiguration wirksam wird:

6. Docker-Installation installieren:

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum installiere docker-ce

Automatischen Start einrichten

systemctl starte Docker
systemctl aktiviert Docker

Überprüfen Sie die Version: Mögliche Fallstricke docker version (überspringen Sie diesen Punkt vorerst, kommen Sie zurück und ändern Sie sie später):

Frage: Verwenden Sie den Befehl docker info|grep cgroup um zu überprüfen, ob Cgroup Driver cgroupfs ist. Es kann zu Konflikten mit Kubelet kommen und muss auf konsistentes systemd geändert werden

Lösung 1: vi /etc/docker/daemon.json , fügen Sie der Datei den folgenden Code hinzu und starten Sie Docker neu

{
	"exec-opts": ["native.cgroupdriver=systemd"]
}

Lösung 2: Sie können ExecStart auch im Docker-Startup-Dienst ändern und den Parameter "--exec-opt native.cgroupdriver=systemd" hinzufügen.

#docker.dienst
vi /usr/lib/systemd/system/docker.service
# Fügen Sie ExecStart=/usr/bin/dockerd --exec-opt native.cgroupdriver=systemd hinzu

7. Fügen Sie die Alibaba Cloud Yum-Softwarequelle hinzu

Katze > /etc/yum.repos.d/kubernetes.repo << EOF
[Kubernetes]
Name=Kubernetes
Basis-URL = https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
aktiviert=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
Ende der Laufzeit

Mögliche Fallstricke (überspringen Sie diesen Punkt zunächst und kommen Sie später noch einmal zurück, wenn Sie auf welche stoßen)

Problem: Während des Installationsvorgangs kann es vorkommen, dass xxx.rpm 公鑰尚未安裝

Lösung 1: Nach dem Importieren des öffentlichen Schlüssels diesen erneut installieren

wget https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
wget https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
rpm --import yum-key.gpg
rpm --importieren Sie rpm-package-key.gpg

Lösung 2: Konfigurieren Sie gpgchekc in der Datei kubernetes.repo auf 0 und überprüfen Sie es nicht.

8. Installieren Sie kubeadm, kubelet und kubectl

Installation: yum install -y kubelet-1.23.0 kubectl-1.23.0 kubeadm-1.23.0

Oder installieren Sie die neueste Version: yum install -y kubelet kubectl kubeadm

Auf automatischen Start einstellen: systemctl enable kubelet , hier müssen Sie es nur auf Start beim Booten einstellen. Da die Konfiguration noch nicht abgeschlossen ist, muss sie nicht gestartet werden und der Start schlägt fehl

9. Initialisieren Sie den Masterknoten

Initialisierungsbefehl

kubeadm init \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.23.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16

Parameter Beschreibung

--image-repository string Wählen Sie ein Container-Register aus, aus dem Control Plane-Images abgerufen werden sollen (Standard: „k8s.gcr.io“). Verwenden Sie hier das Register von Alibaba Cloud, da es sonst langsam ist oder sogar fehlschlägt.

Wenn die Installation fehlschlägt, müssen Sie die Umgebung mit dem Befehl kubeadm reset bereinigen und anschließend neu installieren.

Aufgetroffene Fallstricke:

Problem: The HTTP call equal to 'curl -sSL http://localhost:10248/healthz' failed with error: Get "http://localhost:10248/healthz": dial tcp [::1]:10248: connect: connection refused. Lösung: Weitere Informationen finden Sie in Schritt 6.

Einen Fehler melden

Die Initialisierung ist erfolgreich. Wenn das folgende Ergebnis angezeigt wird, bedeutet dies, dass die Initialisierung erfolgreich war

Initialisierung erfolgreich

Führen Sie gemäß der Eingabeaufforderung den folgenden Befehl aus

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

# Der erste Befehl: Gibt die Erstellung eines versteckten Ordners .kube an
# Der zweite Befehl: bedeutet, die Datei admin.conf in diesen Ordner zu kopieren. # Der dritte Befehl: bedeutet, den Benutzer und die Benutzergruppe festzulegen, zu der die Datei gehört.

Nachdem Sie die obigen Befehle ausgeführt haben, können Sie den Befehl kubectl verwenden. The connection to the server localhost:8080 was refused - did you specify the right host or port?

Knoten anzeigen

10. Installieren Sie das Pod Network Plugin (CNI)

GitHub-Adresse: https://github.com/flannel-io/flannel, Sie können die Datei auch direkt herunterladen

Flanell

Installieren Sie das Plugin:

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Aufgetroffene Fallstricke

Problem: Die Verbindung zum Server raw.githubusercontent.com The connection to the server raw.githubusercontent.com was refused - did you specify the right host or port? Lösung: Fügen Sie eine Zuordnung von raw.githubusercontent.com in /etc/hosts hinzu. Die IP-Adresse kann unter https://www.ipaddress.com eingesehen werden.

Gastgeber

/etc/hosts

Überprüfen Sie, ob die Bereitstellung erfolgreich ist: kubectl get pods -n kube-system

Bildbeschreibung hier einfügen

Überprüfen Sie den Knoten erneut und der Status ändert sich auf „Bereit“

Bildbeschreibung hier einfügen

11. Knoten tritt dem Cluster bei

Um dem Cluster einen neuen Knoten hinzuzufügen, kopieren Sie einfach kubeadm join nachdem kubeadm init auf dem Masterknoten erfolgreich ausgeführt haben, in den hinzuzufügenden Knoten.

kubeadm beitreten 192.168.0.114:6443 --token whxbm2.x70y9k1feop2604b \
  --discovery-token-ca-cert-hash sha256:d4306836b7ef32fd802e559cf717bbbe3af6dd75d3cb2fa4d3db7a16cc25a657

Nach dem erfolgreichen Beitritt verwenden Sie den Befehl kubectl get nodes auf dem Masterknoten, um festzustellen, dass der Knoten zum Cluster hinzugefügt wurde und der Status bereit ist (warten Sie hier einen Moment).

Dies ist das Ende dieses Artikels über die detaillierte Einführung in die Bereitstellung des CentOS7-Systems für K8S-Cluster. Weitere relevante Inhalte zur Bereitstellung des CentOS7-Systems für K8S-Cluster finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Schritte zum Installieren und Konfigurieren des K8S-Clusters in CentOS 7

<<:  Zusammenfassung der Verwendung von Datetime und Timestamp in MySQL

>>:  17 hervorragende Webdesigns, sorgfältig von Startups entwickelt

Artikel empfehlen

Diskussion zum Problem verstümmelter Zeichen in Iframe-Seitenparametern

Ich bin auf ein sehr ungewöhnliches Problem mit ve...

Detaillierte Erläuterung der MySQL-Mehrtabellenabfrage

Sich gut zu ernähren und ausreichend zu schlafen,...

CSS3 erstellt eine Webanimation, um einen springenden Balleffekt zu erzielen

Grundlegende Vorbereitung Für diese Implementieru...

So erstellen Sie Ihr eigenes Image mit Dockerfile

1. Erstellen Sie ein leeres Verzeichnis $ cd /hom...

Verwenden Sie vue3, um ein Mensch-Katze-Kommunikations-Applet zu implementieren

Inhaltsverzeichnis Vorwort Initialisieren des Pro...

HTML+CSS zum Erstellen eines geschichteten Pyramidenbeispiels

Dieser Artikel stellt hauptsächlich das Beispiel ...

MySQL erklärt das Prinzip und Beispiel zum Abrufen von Abfrageanweisungen

„explain“ wird verwendet, um Informationen zum Ab...