GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

So installieren Sie Kubernetes (k8s) auf einem Ubuntu 20.04 LTS-Server

Kubernetes (k8s) ist ein kostenloses Open-Source-Container-Orchestrierungstool. Es wird zum Bereitstellen, Skalieren und Verwalten containerbasierter Anwendungen verwendet. In diesem Artikel zeigen wir, wie Sie Kubernetes Cluster auf Ubuntu 20.04 LTS Server (Focal Fossa) mit kubeadm installieren . In meinem Laboraufbau habe ich drei Ubuntu 20.04 LTS-Servermaschinen verwendet. Im Folgenden sind die Systemanforderungen für jedes Ubuntu-System aufgeführt.

  • Mindestens 2 GB RAM
  • 2 Kerne (2 vCPUs)
  • 15 GB freier Speicherplatz auf /var
  • Privilegierter Benutzer mit sudo-Rechten
  • Stabile Internetverbindung

Im Folgenden sind die Details meines Laboraufbaus aufgeführt:

  • Maschine 1 (Ubuntu 20.04 LTS-Server) – K8s-Master – 192.168.1.40
  • Maschine 2 (Ubuntu 20.04 LTS-Server) – K8s-Knoten-0 – 192.168.1.41
  • Maschine 3 (Ubuntu 20.04 LTS-Server) – K8s-Knoten-1 – 192.168.1.42

Kommen wir nun zu den Kubernetes-Installationsschritten

Schritt 1) ​​Legen Sie den Hostnamen fest und fügen Sie Einträge in der Datei /etc/hosts hinzu

Verwenden Sie den Befehl hostnamectl, um den Hostnamen auf jedem Knoten festzulegen, das Beispiel ist unten gezeigt:

$ sudo hostnamectl set-hostname "k8s-master"     // Führen Sie diesen Befehl auf dem Master-Knoten aus$ sudo hostnamectl set-hostname "k8s-node-0"     // Führen Sie diesen Befehl auf dem Knoten-0 aus$ sudo hostnamectl set-hostname "k8s-node-1"     // Führen Sie diesen Befehl auf Knoten-1 aus

Fügen Sie die folgenden Einträge in /etc/hosts-Dateien auf jedem Knoten hinzu,

192.168.1.40    k8s-master192.168.1.41    k8s-node-0192.168.1.42    k8s-node-1

Schritt 2) Installieren Sie Docker (Container Runtime) auf allen 3 Knoten

Melden Sie sich bei jedem Knoten an und führen Sie die folgenden Befehle aus, um Docker zu installieren,

$ sudo apt update$ sudo apt install -y docker.io

Starten und aktivieren Sie nun den Docker-Dienst auf jedem Knoten mit dem folgenden systemctl-Befehl,

$ sudo systemctl enable docker.service --now

Führen Sie den folgenden Befehl aus, um den Status des Docker-Dienstes und seiner Version zu überprüfen,

$ systemctl status docker$ docker --version

Schritt 3) Swap deaktivieren und IP-Weiterleitung auf allen Knoten aktivieren

Um Swap zu deaktivieren, bearbeiten Sie die Datei /etc/fstab und kommentieren Sie die Zeile aus, die entweder den Eintrag Swap-Partition oder Swap-Datei enthält.

$ sudo vi /etc/fstab

Speichern und beenden Sie die Datei

Führen Sie den Befehl swapoff aus, um den Austausch im laufenden Betrieb zu deaktivieren

$ sudo swapoff -a

Um die IP-Weiterleitung dauerhaft zu aktivieren, bearbeiten Sie die Datei „/etc/sysctl.conf“ und suchen Sie nach der Zeile „net.ipv4.ip_forward=1 “ und kommentieren Sie es aus. Nachdem Sie die Änderungen in der Datei vorgenommen haben, führen Sie den folgenden Befehl aus

$ sudo sysctl -pnet.ipv4.ip_forward =1$

Schritt 4) Kubectl, kubelet und kubeadm auf allen Knoten installieren

Führen Sie die folgenden Befehle auf allen 3 Knoten aus, um die Dienstprogramme kubectl , kubelet und kubeadm zu installieren

$ sudo apt install -y apt-transport-https curl$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add$ sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"$ sudo apt update$ sudo apt install -y kubelet kubeadm kubectl

Hinweis: Zum Zeitpunkt des Schreibens dieses Artikels war das Kubernetes-Repository von Ubuntu 16.04 (Xenial Xerus) verfügbar, aber in Zukunft, wenn das Kubernetes-Repository für Ubuntu 20.04 verfügbar ist, ersetzen Sie xenial durch das Fokuswort im obigen Befehl „apt-add-repository“.

Schritt 4) Kubernetes-Cluster mit kubeadm (vom Master-Knoten) initialisieren

Melden Sie sich bei Ihrem Master-Knoten (k8s-master) an und führen Sie den folgenden Befehl „kubeadm init“ aus, um den Kubernetes-Cluster zu initialisieren,

$ sudo kubeadm init

Sobald der Cluster erfolgreich initialisiert wurde, erhalten wir die folgende Ausgabe

Um den Cluster als normaler Benutzer zu verwenden, führen Sie die folgenden Befehle aus, Befehle sind bereits in der Ausgabe vorhanden, kopieren Sie sie einfach und fügen Sie sie ein.

[E-Mail-geschützt]:~$  mkdir -p $HOME/.kube[E-Mail-geschützt]:~$  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config[E-Mail-geschützt]:~ $  sudo chown $(id -u):$(id -g) $HOME/.kube/config

Verbinden Sie nun die Worker-Knoten (k8s-node-0/1) mit dem Cluster, der Befehl zum Beitritt zum Cluster ist bereits in der Ausgabe vorhanden. Kopieren Sie den Befehl „kubeadm join“ und fügen Sie ihn auf beiden Knoten (Worker-Knoten) ein.

Melden Sie sich bei Node-0 an und führen Sie den folgenden Befehl aus,

[email protected]:~$ sudo kubeadm join 192.168.1.40:6443 --token b4sfnc.53ifyuncy017cnqq --discovery-token-ca-cert-hash sha256:5078c5b151bf776c7d2395cdae08080faa6f82973b989 

Melden Sie sich bei Node-1 an und führen Sie den folgenden Befehl aus, um dem Cluster beizutreten,

[email protected]:~$ sudo kubeadm join 192.168.1.40:6443 --token b4sfnc.53ifyuncy017cnqq --discovery-token-ca-cert-hash sha256:5078c5b151bf776c7d2395cdae08080faa6f82973b989 

Führen Sie auf dem Master-Knoten den Befehl „kubectl get nodes“ aus, um den Status der Knoten zu überprüfen

[email protected]:~$ kubectl get nodesNAME         STATUS     ROLLEN    AGE     VERSIONk8s-master   NotReady   master   27m     v1.18.3k8s-node-0   NotReady      8m3s     v1.18.3k 8s-node-1  n <1.9 > 18.3[E-Mail-geschützt]:~$

Wie wir sehen können, sind sowohl Worker-Knoten als auch Master-Knoten dem Cluster beigetreten, aber der Status jedes Knotens ist „NotReady “. Um den Status „Bereit“ zu machen „Wir müssen Container Network Interface (CNI)-basierte Pod-Netzwerk-Add-ons wie calico bereitstellen , kube-router und weave-net . Wie der Name schon sagt, ermöglichen Pod-Netzwerk-Add-Ons, dass Pods miteinander kommunizieren.

Schritt 5) Calico Pod Network Add-on bereitstellen (Master-Knoten)

Führen Sie auf dem Master-Knoten den folgenden Befehl aus, um das Calico-Pod-Netzwerk-Add-On zu installieren,

[email protected]:~$ kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml

Sobald es erfolgreich bereitgestellt wurde, wird der Knotenstatus bereit, lassen Sie uns den kubectl-Befehl erneut ausführen, um den Knotenstatus zu überprüfen

[email protected]:~$ kubectl get nodesNAME         STATUS   ROLLEN    ALTER   VERSIONk8s-master   Bereit    master   39m   v1.18.3k8s-node-0   Bereit       19m   v1.18.3k8s-node-1   Bereit    <1m > 18.3[E-Mail-geschützt]:~$

Führen Sie den folgenden Befehl aus, um den Status von Pods aus allen Namespaces zu überprüfen

Perfekt, oben bestätigt, dass alle Pods laufen und sich in einem gesunden Zustand befinden. Lassen Sie uns versuchen, Pods, Dienste und Bereitstellungen bereitzustellen, um zu sehen, ob unser Kubernetes-Cluster gut funktioniert oder nicht.

Hinweis: Führen Sie Folgendes aus, um die Bash-Vervollständigungsfunktion auf Ihrem Master-Knoten zu aktivieren

[email protected]:~$ echo 'source <(kubectl complete bash)'>>~/.bashrc[email protected]:~$ source .bashrc

Schritt 6) Kubernetes-Cluster testen und verifizieren

Lassen Sie uns eine Bereitstellung namens nginx-web mit einem nginx-Container-Image im Standard-Namespace erstellen, führen Sie den folgenden kubectl-Befehl vom Master-Knoten aus,

[email protected]:~$ kubectl create deploy nginx-web --image=nginxdeployment.apps/nginx-web created[email protected]:~$

Führen Sie den folgenden Befehl aus, um den Bereitstellungsstatus zu überprüfen

[email protected]:~$ kubectl get deploys.appsNAME        BEREIT   AKTUELL   VERFÜGBAR   AGEnginx-web   1/1     1            1           41s[email protected]:~$ kubectl get deploys.apps  -o wideNAME     -Date verfügbare Alterscontainer Bilder selectOrnginx-web 1/1 1 1 56S Nginx nginx app =nginx-web [E-Mail geschützt]:~ $ [E-Mail geschützt]:~ $ kubectl Get PodsName Ready Ready Status Neustarts Agenginx-Web-7748f778-Nk8b2 1 1ginx-Web-7748f778-Nk8b2 1 /1     Läuft   0          2m50s[email protected]:~$

Wie wir sehen können, wurde die Bereitstellung erfolgreich mit dem Standardreplikat erstellt.

Lassen Sie uns die Bereitstellung hochskalieren, stellen Sie Replikate auf 4 ein. Führen Sie den folgenden Befehl aus:

[E-Mail-geschützt]:~$ kubectl scale --replicas=4 Bereitstellung nginx-webdeployment.apps/nginx-web scaled[E-Mail-geschützt]:~$

Überprüfen Sie nun den Status Ihrer Bereitstellung mit den folgenden Befehlen,

[email protected]:~$ kubectl get deploys.apps nginx-webNAME        BEREIT   AKTUELL   VERFÜGBAR   AGenginx-web   4/4     4            4           13m[email protected]:~$[email protected]:~$ kubectl deploys.apps nginx-web

Oben wird bestätigt, dass die nginx-basierte Bereitstellung erfolgreich hochskaliert wurde.

Lassen Sie uns einen weiteren Test durchführen, einen Pod namens „http-web“ erstellen und ihn über den Dienst namens „http-service“ mit Port 80 und NodePort als Typ verfügbar machen.

Führen Sie den folgenden Befehl aus, um einen Pod zu erstellen,

[email protected]:~$ kubectl run http-web --image=httpd --port=80pod/http-web created[email protected]:~$

Erstellen Sie einen Dienst mit dem Befehl below und stellen Sie den oben erstellten Pod auf Port 80 bereit,

[E-Mail-geschützt]:~$ kubectl-Expose-Pod http-web --name=http-service --port=80 --type=NodePortservice/http-service exponiert[E-Mail-geschützt]:~$[E-Mail-geschützt]:~$ kubectl get service http-serviceNAME           TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGEhttp-service   NodePort   10.101.152.138           80:31098/TCP   10s[email protected]:~$ 

Rufen Sie die Knoten-IP oder den Hostnamen ab, auf dem der HTTP-Web-Pod bereitgestellt wird, und greifen Sie dann über NodePort (31098) auf den Webserver zu.

 [E-Mail geschützt]:~ $ kubectl erhalten Pods http-web -o widename Ready Status Neustarts Alter IP-Knoten Nominierte Knotenbereitschaft Gateshttp-Web 1>[email protected]:~$[email protected]:~$ curl http://k8s-node-0:31098

Es funktioniert!

[E-Mail-geschützt]:~$

Perfekt, es funktioniert wie erwartet. Damit ist der Artikel abgeschlossen und bestätigt, dass wir den Kubernetes-Cluster erfolgreich auf dem Ubuntu 20.04 LTS-Server eingerichtet haben.

Auch lesen :So richten Sie den NGINX Ingress Controller in Kubernetes ein

Auch lesenSo richten Sie eine private Docker-Registrierung in Kubernetes (k8s) ein


Ubuntu
  1. So installieren Sie RabbitMQ Server auf Ubuntu 18.04 &16.04 LTS

  2. So installieren Sie Gitlab Server auf Ubuntu 18.04 &16.04 LTS

  3. So installieren Sie R unter Ubuntu 18.04 LTS

  4. So installieren Sie Xrdp-Server auf Ubuntu 20.04 LTS

  5. So installieren Sie R unter Ubuntu 20.04 LTS

So installieren Sie Kubernetes auf Ubuntu 18.04 LTS

So installieren Sie Kubernetes auf Ubuntu 20.04 LTS

So installieren Sie den FTP-Server unter Ubuntu 20.04 LTS

So installieren Sie Pritunl VPN Server auf Ubuntu 20.04 LTS

So installieren Sie den CUPS-Druckserver unter Ubuntu 20.04 LTS

So installieren Sie Kubernetes auf Ubuntu 18.04 LTS