So installieren Sie Kubernetes unter Ubuntu 20.04

Container sind eine gute Wahl, um unsere eigenen Anwendungen zu bündeln und auszuführen. Wenn die Anzahl der Container schnell ansteigt und diese bequem verwaltet werden müssen. Aus diesem Grund kommt Kubernetes. Kubernetes (K8s) ist ein Open-Source-System zur Automatisierung der Bereitstellung, Skalierung und Verwaltung von containerisierten Anwendungen und Diensten.

Der Kubernetes-Cluster enthält Master- und Worker-Knoten. Der Master-Knoten steuert und verwaltet eine Gruppe von Worker-Knoten. Sie können mehrere Masterknoten für Hochverfügbarkeitscluster haben.

Dieses Tutorial zeigt, wie man a . installiert Kubernetes-Cluster mit kubeadm an Ubuntu 20.04.

Umgebung vorbereiten

  • Verwenden Sie 2 Linux-Hosts mit Ubuntu 20.04

Festlegen statischer IP-Adressen für Master-Knoten und Worker-Knoten

– Masterknoten: 192.168.1.11
– Worker-Knoten: 192.168.1.12

  • Konfigurieren Sie den Hostnamen für jede Maschine

Wir verwenden Knoten-1 als Master und Knoten-2 als Worker-Knoten.

$ sudo hostnamectl set-hostname node-1
$ sudo hostnamectl set-hostname node-2

  • Deaktivieren Sie den Auslagerungsspeicher auf jedem Ubuntu-Knoten

$ sudo swapoff -a

Kubernetes-Repository hinzufügen

Kubernetes ist im Standard-Repository von Ubuntu nicht verfügbar, muss also manuell hinzugefügt werden.

Sowohl auf dem Master- als auch auf dem Worker-Knoten führe folgendes aus:

Kubernetes-Signaturschlüssel wie folgt hinzufügen:

$ sudo -i
# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

Fügen Sie dann das Kubernetes-Repository hinzu und führen Sie Folgendes aus:

$ echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" >> ~/kubernetes.list
$ sudo mv ~/kubernetes.list /etc/apt/sources.list.d
$ sudo apt update

Kubernetes-Tools installieren

In diesem Abschnitt werden wir Kubeadm, cri-o, Kubelet und Kubernetes-cni installieren. Alle diese Tools müssen installiert werden auf sowohl Master- als auch Worker-Knoten.

Stellen Sie sicher, dass Sie die empfohlene und unterstützte Version installieren. Hier installieren wir Version 1.18 von Kubernetes und crio.

Kubeadm . installieren

Kubeadm ist ein Tool, das Teil des Kubernetes-Projekts ist und bei der Initialisierung des Kubernetes-Clusters hilft.

In diesem Tutorial installieren wir kubeadm Version 1.18.0-00, geben Sie Folgendes ein:

$ sudo apt install -y kubeadm=1.18.0-00 --allow-unauthenticated

Notiz: Sie können die spezifische Version mit dem folgenden Befehl finden:

$ curl -s https://packages.cloud.google.com/apt/dists/kubernetes-xenial/main/binary-amd64/Packages | grep Version | awk '{print $2}'

Kubectl installieren

Kubectl ist das Kubernetes-Befehlszeilentool. Es ermöglicht Ihnen, Befehle in den Kubernetes-Clustern auszuführen. Sie können kubectl verwenden, um Anwendungen bereitzustellen, Clusterressourcen zu verwalten und Protokolle anzuzeigen.

Installieren Sie kubectl v1.18.0-00 mit dem folgenden Befehl:

$ sudo apt install -y kubectl=1.18.0-00 --allow-unauthenticated

CRI-O . installieren

CRI-O ist ein OCI-kompatibles Container Runtime Interface (CRI). Die am häufigsten verwendete Laufzeit ist Docker. Ab der Veröffentlichung von Kubernetes 1.20 ist das Container Runtime Interface (CRI)-Shim für Docker veraltet. Docker erstellt Images, die kein OCI-Image (Open Container Initiative) sind.

Wir sollten OCI-kompatible Container-Laufzeit verwenden, um OCI-Images abzurufen und auszuführen, insbesondere wenn Sie Kubernetes-Dienste wie GKE, EKS oder AKS verwenden.

Sie können Docker weiterhin verwenden und dann mit installieren sudo apt-get install docker.io

Hier werde ich verwenden erstelle es das ist eine kompatible Laufzeit. Achten Sie darauf, dass die Cri-O-Version mit der Kubernetes-Version übereinstimmt.

Stellen Sie sicher, dass Sie das installieren unterstützte Version.

Erste Benutzung modprobe Befehl zum Laden der überlagern und br_netfilter Module sowohl auf dem Master- als auch auf dem Worker-Knoten:

$ sudo modprobe overlay
$ sudo modprobe br_netfilter

Erstellen Sie dann eine sysctl-Konfigurationsdatei, um die IP-Weiterleitung und die Netfilter-Einstellungen während der Neustarts zu aktivieren, indem Sie die folgenden Zeilen in einfügen /etc/sysctl.d/99-kubernetes-cri.conf Datei auf Master- und Worker-Knoten:

net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1

Wenden Sie die Konfigurationsdatei an, indem Sie Folgendes ausführen:

$ sudo sysctl --system

Nun spezifizieren wir das Ubuntu OS und die Cri-O-Version wie folgt:

$ sudo -i
# export OS=xUbuntu_20.04
# export VERSION=1.18

Führen Sie dann die folgenden Befehle aus als root Nutzer:

# echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
# echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable:/cri-o:/$VERSION/$OS/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.list

# curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/Release.key | apt-key add -
# curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/Release.key | apt-key add -

# apt update
# apt install cri-o cri-o-runc

Sobald die Installation abgeschlossen ist, conmon Das Dienstprogramm (Container Monitoring) wurde installiert. Finden Sie den Pfad von Conmon:

$ which conmon

/usr/bin/conmon

Bearbeiten Sie die /etc/crio/crio.conf Datei wie folgt:

...
# Path to the conmon binary, used for monitoring the OCI runtime.
conmon = "/usr/bin/conmon" #<-- Edit this line. Around line 108

...

registries = [ #<-- Edit and add registries. Around line 351
"docker.io",
"quay.io",
]
....

Aktivieren Sie das Cri-o und stellen Sie sicher, dass es läuft:

$ sudo systemctl daemon-reload
$ sudo systemctl enable crio
$ sudo systemctl start crio
$ sudo systemctl status crio

Ausgabe:

● crio.service - Container Runtime Interface for OCI (CRI-O)
Loaded: loaded (/usr/lib/systemd/system/crio.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-12-10 15:46:37 UTC; 3 days ago
Docs: https://github.com/cri-o/cri-o
...

Kubelet installieren

Kubelet ist ein Agent, der auf jedem Knoten ausgeführt wird und dafür verantwortlich ist, mit dem API-Server auf dem Master-Knoten zu kommunizieren und die Container-Laufzeit zum Starten von Workloads zu steuern.

Konfigurieren kubelet um zu verstehen, wie man mit cri-o interagiert, indem Sie die folgende Zeile in einfügen /etc/default/kubelet Datei:

KUBELET_EXTRA_ARGS=--feature-gates="AllAlpha=false,RunAsGroup=true" --container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint="unix:///var/run/crio/crio.sock" --runtime-request-timeout=5m

Führen Sie sowohl auf dem Master- als auch auf dem Worker-Knoten den folgenden Befehl aus, um zu installieren kubelet:

$ sudo apt install -y kubelet=1.18.0-00 --allow-unauthenticated

Kubernetes-cni . installieren

Um Container-Netzwerke im Cluster zu aktivieren, müssen wir installieren kubernetes-cni.

Führen Sie den folgenden Befehl aus:

$ sudo apt-get install -y kubernetes-cni --allow-unauthenticated

Kubernetes-Cluster bereitstellen

Die Bereitstellung des Kubernetes-Clusters umfasst zwei Schritte. Der erste Schritt besteht darin, den Master-Knoten zu initialisieren, und der zweite Schritt besteht darin, den Worker-Knoten mit dem Cluster zu verbinden.

Master-Knoten initialisieren

So initialisieren Sie Kubernetes auf Masterknoten, Typ:

$ sudo kubeadm init --apiserver-advertise-address=192.168.1.11 --pod-network-cidr=10.244.0.0/16

kubeadm init

Es dauert einige Minuten, bis es fertig ist. Nach der Initialisierung zeigt das Terminal die Ausgabe wie folgt an:

erfolgreich initialisierterfolgreich initialisiert

Beachten Sie die oben markierte Zeile zum Verbinden des Clusters. Sie wird im nächsten Schritt verwendet, um den Worker-Knoten mit dem Cluster zu verbinden.

Führen Sie nun den folgenden Befehl aus, um das Kubernetes-Konfigurationsverzeichnis auf dem Master-Knoten zu erstellen:

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

Stellen Sie als Nächstes ein Pod-Netzwerk für den Cluster bereit:

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

Überprüfen, ob alle Komponenten der Steuerungsebene erfolgreich installiert wurden:

$ kubectl get pod --all-namespaces

Holen Sie sich pod –all-namespacesHolen Sie sich pod –all-namespaces

Worker-Knoten mit Cluster verbinden

Melden Sie sich nun beim Worker-Knoten an und fügen Sie den Worker-Knoten dem Cluster hinzu.

Führen Sie auf dem Worker-Knoten-Rechner den folgenden Befehl aus:

$ sudo kubeadm join 192.168.1.11:6443 --token 9ii02d.nsmrmu1asascv2yg
--discovery-token-ca-cert-hash sha256:1104bf70b03a2d030ffc0a462f9dbcbcdd9975393e9a9ac2a1f18500f1b6b74e

Gehen Sie nach Abschluss des Beitrittsprozesses zurück zum Master-Knoten und führen Sie Folgendes aus:

$ kubectl get node
NAME STATUS ROLES AGE VERSION
node-1 Ready master 2m37s v1.18.0
node-2 Ready none 22s v1.18.0

Geben Sie Folgendes ein, um weitere Informationen zum Knoten zu erhalten:

$ kubectl get node -owide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
node-1 Ready master 9h v1.18.0 10.2.0.4 Ubuntu 20.04.1 LTS 5.4.0-1029-gcp cri-o://1.18.4
node-2 Ready none 9h v1.18.0 10.2.0.5 Ubuntu 20.04.1 LTS 5.4.0-1029-gcp cri-o://1.18.4

Die Ausgaben zeigen Details zum Master-Knoten und Knoten, die dem Cluster beigetreten sind.

Lesen Sie auch: So installieren Sie Kubernetes lokal mit Vagrant/Minikube

Fazit

Da die Containerisierung immer beliebter wird, macht die Notwendigkeit, containerisierte Workloads und Dienste zu verwalten, Kubernetes so beliebt. Alle großen Cloud-Anbieter haben begonnen, Managed Kubernetes zu unterstützen, was das Leben einfacher macht.

Kubernetes ist völlig kostenlos und kann jederzeit aus seinem Repository heruntergeladen werden. Ich hoffe, Ihnen hat die Installation von Kubernetes unter Ubuntu gefallen. Sie können versuchen, Anwendungen wie MySQL oder WordPress auf dem K8-Cluster bereitzustellen.

Vielen Dank für das Lesen und hinterlassen Sie Ihren Vorschlag bitte im Kommentarbereich unten.