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

So stellen Sie Nginx Load Balancing auf einem Kubernetes-Cluster unter Ubuntu 18.04 LTS bereit

Kubernetes ist ein kostenloses Open-Source-Container-Orchestrierungssystem, das zum Bereitstellen und Verwalten von Containern verwendet werden kann. Es wurde von Google entwickelt und speziell für Autoscaling und automatisierte Bereitstellungen konzipiert. Kubernetes kann auf jeder Cloud-Infrastruktur und Bare Metal ausgeführt werden. Mit Kubernetes können Sie mehrere Anwendungen über einen Cluster von Knoten verteilen. Kubernetes verfügt über eine Vielzahl von Funktionen, darunter Selbstheilung, automatische Skalierbarkeit, Lastenausgleich, Batch-Ausführung, horizontale Skalierung, Diensterkennung, Speicherorchestrierung und vieles mehr.

In diesem Tutorial lernen wir, wie man Nginx Load Balancing mit Kubernetes unter Ubuntu 18.04 einrichtet.

Anforderungen

  • Zwei Server mit installiertem Ubuntu 18.04.
  • Mindestens 2 GB RAM auf jedem Server installiert.
  • Ein Root-Passwort ist auf beiden Servern konfiguriert.

Erste Schritte

Zuerst müssen Sie beide Server mit der neuesten stabilen Version aktualisieren. Sie können sie aktualisieren, indem Sie den folgenden Befehl ausführen:

apt-get update -y
apt-get upgrade -y

Sobald beide Server aktualisiert sind, starten Sie sie neu, um alle Änderungen zu übernehmen.

Kuberenetes unterstützt standardmäßig keinen Swap-Speicher und funktioniert nicht, wenn Swap aktiv ist. Daher müssen Sie den Auslagerungsspeicher auf beiden Servern deaktivieren.

Führen Sie den folgenden Befehl aus, um den Auslagerungsspeicher vorübergehend zu deaktivieren:

swapoff -a

Um den Auslagerungsspeicher dauerhaft zu deaktivieren, öffnen Sie die Datei /etc/fstab:

nano /etc/fstab

Kommentieren Sie die letzte Zeile aus:

# /etc/fstab:Statische Dateisysteminformationen.
#
# Verwenden Sie 'blkid', um die universell eindeutige Kennung für ein
# Gerät auszugeben; Dies kann mit uuid=als robusterer Weg zum Benennen von Geräten verwendet werden,
# der auch dann funktioniert, wenn Festplatten hinzugefügt und entfernt werden. siehe fstab(5).
#
# <Dateisystem> <Bereitstellungspunkt> <Typ> <Optionen> <dump> <pass>
# / war während der Installation auf /dev/sda1
# swap war während der Installation auf /dev/sda4#UUID=65se21r-1d3t-3263-2198-e564c275e156 none swap sw 0 0

Speichern und schließen Sie die Datei. Führen Sie dann den folgenden Befehl aus, um die Konfigurationsänderungen anzuwenden:

mount -a

Als nächstes müssen Sie die Hostnamenauflösung auf beiden Servern einrichten. So kann jeder Server über den Hostnamen miteinander kommunizieren.

Öffnen Sie dazu die Datei /etc/hosts mit Ihrem bevorzugten Editor:

nano /etc/hosts

Fügen Sie die folgenden Zeilen hinzu:

192.168.0.103 master192.168.0.100 slave

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Fahren Sie dann mit dem nächsten Schritt fort.

Installieren Sie Docker und Kubernetes

Als Nächstes müssen Sie Docker und die Kubernetes-Tools kubelet, kubeadm und kubectl auf beiden Servern installieren.

Installieren Sie zuerst die erforderlichen Pakete und fügen Sie den GPG-Schlüssel mit dem folgenden Befehl hinzu:

apt-get install apt-transport-https ca-certificates curl software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -

Fügen Sie als Nächstes das Docker CE-Repository auf beiden Servern hinzu, indem Sie den folgenden Befehl ausführen:

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Aktualisieren Sie als Nächstes das Repository und installieren Sie Docker CE mit dem folgenden Befehl:

apt-get update -y
apt-get install docker-ce -y

Überprüfen Sie nach Abschluss der Installation den Status von Docker CE mit dem folgenden Befehl:

Systemctl-Status-Docker

Sie sollten die folgende Ausgabe sehen:

? docker.service – Docker Application Container Engine Geladen:geladen (/lib/systemd/system/docker.service; aktiviert; Herstellervoreinstellung:aktiviert) Aktiv:aktiv (läuft) seit Fr. 2019-07-19 07:05:50 UTC; vor 1h 24min Docs:https://docs.docker.com Main PID:3619 (dockerd) Tasks:8 CGroup:/system.slice/docker.service ??3619 /usr/bin/dockerd -H fd:// - -containerd=/run/containerd/containerd.sockJul 19 07:05:48 master dockerd[3619]:time="2019-07-19T07:05:48.574491681Z" level=warning msg="Ihr Kernel unterstützt keinen Swap-Speicher limit"Jul 19 07:05:48 master dockerd[3619]:time="2019-07-19T07:05:48.575196691Z" level=warning msg="Your kernel does not support cgroup rt period"19. Juli 07:05:48 master dockerd[3619]:time="2019-07-19T07:05:48.575733336Z" level=warning msg="Your kernel does not support cgroup rt runtime"Jul 19 07:05:48 master dockerd[3619]:time ="2019-07-19T07:05:48.582517104Z" level=info msg="Loading container:start."Jul 19 07:05:49 master dockerd[3619]:time="2019-07-19T07:05:49.391255541 Z" level=info msg="Standardbrücke (docker0) ist eine IP zugewiesen addJul 19 07:05:49 master dockerd[3619]:time="2019-07-19T07:05:49.681478822Z" level=info msg="Lade con tainers:done."Jul 19 07:05:50 master dockerd[3619]:time="2019-07-19T07:05:50.003776717Z" level=info msg="Docker daemon" commit=0dd43dd graphdriver(s)=overlaJul 19 07:05:50 master dockerd[3619]:time="2019-07-19T07:05:50.009892901Z" level=info msg="Daemon hat die Initialisierung abgeschlossen"19. Juli 07:05:50 master systemd[1]:Docker Application Container Engine gestartet. 19. Juli 07:05:50 master dockerd[3619]:time="2019-07-19T07:05:50.279284258Z" level=info msg="API listen on /var/run/docker.sock "

Kubernetes-Pakete sind im Standard-Repository von Ubuntu 18.04 nicht verfügbar. Daher müssen Sie das Kubernetes-Repository auf beiden Servern hinzufügen.

Sie können es mit den folgenden Befehlen hinzufügen:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
echo 'deb http://apt.kubernetes.io/ kubernetes-xenial main' | tee /etc/apt/sources.list.d/kubernetes.list

Aktualisieren Sie als Nächstes das Repository und installieren Sie Kubernetes-Pakete mit dem folgenden Befehl:

apt-get install kubelet kubeadm kubectl -y

Sobald alle Pakete installiert sind, können Sie mit der Konfiguration des Master-Servers fortfahren.

Kubernetes-Masterserver konfigurieren

Zuerst müssen Sie Ihren Cluster mit seiner privaten IP-Adresse auf dem Master-Server initialisieren:

Sie können dies mit dem kubeadm-Befehl tun:

kubeadm init --pod-network-cidr=192.168.0.0/16 --apiserver-advertise-address=192.168.0.103

Sobald der Cluster erfolgreich initialisiert wurde, sollten Sie die folgende Ausgabe sehen:

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/configSie sollten jetzt ein Pod-Netzwerk im Cluster bereitstellen. Führen Sie „kubectl apply -f [podnetwork].yaml“ aus. mit einer der unter:https://kubernetes.io/docs/concepts/cluster-administration/addons/ aufgelisteten Optionen. Dann können Sie einer beliebigen Anzahl von Worker-Knoten beitreten, indem Sie auf jedem als root Folgendes ausführen:kubeadm join 192.168.0.103:6443 --token zsyq2w.c676bxzjul3upd7u \ --discovery-token-ca-cert-hash sha256:a720ae35d472162177f6ee39de758a5de40043f53e4a3e00aefd6f9832f3436c 

Als nächstes müssen Sie das kubectl-Tool auf Ihrem Master-Server konfigurieren. Sie können dies mit dem folgenden Befehl tun:

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

Als Nächstes müssen Sie ein Container Networking Interface (CNI) auf Ihrem Server bereitstellen. Weil der Cluster kein CNI hat.

Sie können das CNI mit dem folgenden Befehl in Ihrem Cluster bereitstellen:

kubectl apply -f https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yaml

Sie sollten die folgende Ausgabe sehen:

configmap/calico-config createddaemonset.extensions/calico-etcd createdservice/calico-etcd createddaemonset.extensions/calico-node createddeployment.extensions/calico-kube-controllers createddeployment.extensions/calico-policy-controller createdclusterrolebinding.rbac.authorization .k8s.io/calico-cni-plugin createdclusterrole.rbac.authorization.k8s.io/calico-cni-plugin createdserviceaccount/calico-cni-plugin createdclusterrolebinding.rbac.authorization.k8s.io/calico-kube-controllers createdclusterrole.rbac .authorization.k8s.io/calico-kube-controllers createdserviceaccount/calico-kube-controllers created

Sie können jetzt Ihre Namespaces überprüfen, indem Sie den folgenden Befehl ausführen:

kubectl erhält Namespaces

Wenn alles gut geht, sollten Sie die folgende Ausgabe sehen:

NAME STATUS AGEdefault Active 4hkube-public Active 4hkube-system Active 4h

Überprüfen Sie als Nächstes mit dem folgenden Befehl, ob der Master-Knoten jetzt ordnungsgemäß ausgeführt wird:

kubectl erhält Knoten

Sie sollten die folgende Ausgabe sehen:

Name Status Rollen Alter VersionMaster Ready Master 12m v1.15.3

Slave zum Kubernetes-Cluster hinzufügen

Melden Sie sich als Nächstes bei Ihrem Slave-Server an und führen Sie den folgenden Befehl aus, um den Slave zum Kubernetes-Cluster hinzuzufügen:

kubeadm join 192.168.0.103:6443 --token zsyq2w.c676bxzjul3upd7u --discovery-token-ca-cert-hash sha256:a720ae35d472162177f6ee39de758a5de40043f53e4a3e00aefd6f9832 

Gehen Sie als Nächstes zum Master-Server und überprüfen Sie mit dem folgenden Befehl, ob der Slave zu Ihrem Kubernetes-Cluster hinzugefügt wurde:

kubectl erhält Knoten

Sie sollten die folgende Ausgabe sehen:

Name Status Rollen Alter Versionmaster ready master 25m v1.15.3slave ready 2m v1.15.3

Wenn Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.

Stellen Sie NGINX auf dem Kubernetes-Cluster bereit

Der Kubernetes-Cluster ist jetzt installiert, konfiguriert und funktioniert ordnungsgemäß. Es ist an der Zeit, Nginx auf dem Kubernetes-Cluster bereitzustellen.

Gehen Sie zum Master-Server und erstellen Sie mit dem folgenden Befehl eine Nginx-Bereitstellung:

kubectl create deploy nginx --image=nginx

Sie können jetzt die Nginx-Bereitstellung mit dem folgenden Befehl auflisten:

kubectl-Bereitstellungen abrufen

Sie sollten die folgende Ausgabe sehen:

NAME BEREIT AKTUELL VERFÜGBAR AGEnginx 1/1 1 1 99s

Sobald Nginx bereitgestellt wurde, kann die Anwendung mit dem folgenden Befehl verfügbar gemacht werden:

kubectl create service nodeport nginx --tcp=80:80

Sie können jetzt einen neuen Dienst und eine neue ClusterIP-Adresse sehen, die mit dem folgenden Befehl zugewiesen wurden:

kubectl get svc

Sie sollten die folgende Ausgabe sehen:

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.152.183.1  443/TCP 15mnginx ClusterIP 10.152.183.199  80:32456/TCP 60s  

Herzliche Glückwünsche! Sie haben Nginx erfolgreich im Kubernetes-Cluster bereitgestellt. Sie können dem Kubernetes-Cluster auch problemlos einen weiteren Knoten hinzufügen. Weitere Informationen finden Sie im offiziellen Kubernetes-Dokument unter Kubernetes Doc. Fühlen Sie sich frei, mich zu fragen, wenn Sie irgendwelche Fragen haben.


Ubuntu
  1. So stellen Sie NGINX Reverse Proxy auf Docker bereit

  2. So stellen Sie Redis-Cluster auf Kubernetes bereit

  3. So installieren Sie Kubernetes unter Ubuntu 18.04

  4. So stellen Sie Modsecurity mit Nginx auf Ubuntu 20.04 LTS bereit

  5. Stellen Sie Modsecurity mit Nginx auf Ubuntu 20.04 LTS bereit

So installieren Sie Docker unter Ubuntu 18.04 LTS

So installieren Sie Nginx unter Ubuntu 18.04 LTS

So installieren Sie Kubernetes auf Ubuntu 18.04 LTS

So installieren Sie Docker unter Ubuntu 20.04 LTS

So installieren Sie Kubernetes auf Ubuntu 20.04 LTS

So installieren Sie Kitematic unter Ubuntu 20.04 LTS