Discover millions of ebooks, audiobooks, and so much more with a free trial

Only $11.99/month after trial. Cancel anytime.

Bau einer K8s bare-metal-cloud mit RaspberryPI: Von einem, der auszog das Fürchten zu lernen.
Bau einer K8s bare-metal-cloud mit RaspberryPI: Von einem, der auszog das Fürchten zu lernen.
Bau einer K8s bare-metal-cloud mit RaspberryPI: Von einem, der auszog das Fürchten zu lernen.
Ebook409 pages2 hours

Bau einer K8s bare-metal-cloud mit RaspberryPI: Von einem, der auszog das Fürchten zu lernen.

Rating: 0 out of 5 stars

()

Read preview

About this ebook

Die Idee eine "Cloud" zu bauen entstand während der Corona-Zeit. Anstatt "Fernsehen" könnte man doch was Sinnvolles ausprobieren. Außerdem ist der vorhandene Raspberry 4 bereits überlastet, und kann schwerlich neue Dienste anbieten. Da wäre doch ein System, das skalierbar ist, beliebig viele Services anbieten kann usw. doch genau das Richtige. Außerdem sind Microservices leichter auf neue Hardware portierbar! Ich erinnere mich noch genau, wie aufwändig der Umstieg vom Raspberry 2 auf den Raspberry 3 und dann auf den Raspberry 4 war. Ich musste jedes mal aufs Neue nachdenken, wie den die Installation genau geht, habe viel Zeit investiert und erreichte am Ende bestenfalls, dass ich nachher dieselben Dienste nutzen konnte wie vorher:)
Darum: eine Cloud muss her.
LanguageDeutsch
Publisherneobooks
Release dateSep 9, 2021
ISBN9783753198514
Bau einer K8s bare-metal-cloud mit RaspberryPI: Von einem, der auszog das Fürchten zu lernen.

Related to Bau einer K8s bare-metal-cloud mit RaspberryPI

Related ebooks

Computers For You

View More

Related articles

Reviews for Bau einer K8s bare-metal-cloud mit RaspberryPI

Rating: 0 out of 5 stars
0 ratings

0 ratings0 reviews

What did you think?

Tap to rate

Review must be at least 10 words

    Book preview

    Bau einer K8s bare-metal-cloud mit RaspberryPI - Alfred Sabitzer

    Bau einer K8s bare-metal-cloud mit RaspberryPI

    Ein Kubernetes-Cluster auf Basis RaspberryPi 4 und Microk8s.

    Integration der notwendigen EDV-Umgebung.

    „Von einem der auszog, das Fürchten zu lernen".

    Alfred Sabitzer

    https://www.linkedin.com/in/alfred-sabitzer-805312183/

    https://www.xing.com/profile/Alfred_Sabitzer/cv

    Vorwort

    Die Idee eine „Cloud zu bauen entstand während der Corona-Zeit. Anstatt „Fernsehen könnte man doch was Sinnvolles ausprobieren. Außerdem ist der vorhandene Raspberry 4 bereits überlastet, und kann schwerlich neue Dienste anbieten. Da wäre doch ein System, das skalierbar ist, beliebig viele Services anbieten kann usw. doch genau das Richtige. Außerdem sind Microservices leichter auf neue Hardware portierbar! Ich erinnere mich noch genau, wie aufwändig der Umstieg vom Raspberry 2 auf den Raspberry 3 und dann auf den Raspberry 4 war. Ich musste jedes mal aufs Neue nachdenken, wie den die Installation genau geht, habe viel Zeit investiert und  erreichte am Ende bestenfalls, dass ich nachher dieselben Dienste nutzen konnte wie vorher:)

    Darum: eine Cloud muss her.

    Generell: Der Bau einer Cloud ist ein komplexes Unternehmen (am einfachsten ist es, wenn man sich in einer bereits existenten Cloud einmietet – da gibt es genug Anbieter am Markt).

    Dieses Buch beschreibt die einzelnen Schritte, die ich durchgeführt habe um mir meine eigene Cloud zu bauen. Hier wird nur der Hardwareaufbau sowie die Basiseinrichtung beschrieben. Der Bau von Microservices, das Einrichten einer CI/CD-Strecke, ja selbst das konfigurieren von Prometheus und Grafana überschreitet den Rahmen dieses Buches. Hier werden wirklich nur die Basisfunktionen (HA-Cluster, Cluster-Storage, Ingress, Zertifikate, Dashboard …) gestreift.

    Hier finden sich viele Codefragmente, die eine Idee geben können, wie jemand das bei sich zu Hause selbst tun könnte. Diese Codeteile erheben keinen Anspruch auf Funktionalität oder dergleichen. Die Verwendung erfolgt auf eigenes Risiko.

    Generell würde mich der Austausch mit anderen „Cloud"-Bauern interessieren. Ideen, Verbesserungen, Anregungen udglm. sind herzlich willkommen. Der Auto ist erreichbar unter microk8s.raspberry@slainte.at erreichbar. Teile des Buches gibt es online auf https://whttps://www.slainte.at/index.php/k8s/cloudww.slainte.at/index.php/k8s/cloud.

    Unzmarkt, im Mai 2021.

    Prinzipieller Aufbau einer Cloud

    OEBPS/images/image0001.jpg

    Schaubild 1: Cloud Struktur

    Diese Abbildung beschreibt den Aufbau meiner „On-Premise-Cloud mit allen vorhanden Komponenten. Die „Cloud selbst wird durch die Umrandung für Infrastruktur, Dämonset und Service dargestellt. Alles innerhalb dieser Umrandung ist in der Cloud bzw. Teil der Cloud.

    Eine allgemeine Cloud besteht im wesentlichen aus den folgenden Kernkomponenten:

    Infrastruktur – Alles was physikalisch vorhanden sein muss

    Dämonsets – Alle Softwarekomponenten zum Betrieb eines Clusters

    Service – Alle Infrastruktservices, die notwendig sind um Business-Services anzubieten bzw. zu betreiben

    Konfiguration – Alle Konventionen/Konfiguration die zum Betrieb der Business-Services notwendig sind

    Umsysteme – Alle Systeme, die aus verschiedenen Gründen nicht (nur) im Cluster vorhanden sind (z.b. Internet-Router)

    Entwicklungssysteme – Alle System- und Softwarekomponenten die notwendig sind, um Business-Services zu entwickeln.

    Die nachfolgenden Kapitel versuchen diesen prinzipiellen Cloud-Aufbau auf einer privaten „On-Premise"-Cloud nachzubilden und zu beschreiben.

    Die CNCF Cloud Native Interactive Landscape auf https://www.cncf.io/ nennt derzeit folgende Applikationen:

    OEBPS/images/image0002.jpg

    Schaubild 2: Cloud Native Landscape

    Prinzipiell sollte der Aufbau einer Cloud nicht unterschätzt werden. Auf humorige Weise ist das im folgenden Bild dargestellt.

    OEBPS/images/image0003.jpg

    Schaubild 3: Cloud Eisberg

    Aufbau des Gesamtsystemes

    OEBPS/images/image0004.png

    Schaubild 4: Gesamtsystem

    Ein Raspberry Steuernode (für Monitoring, Backup, ansible, Entwicklung …) sowie ein Raspberry-Cluster mit fünf Raspberry’s.

    Auf dem Cluster werden die folgenden K8s installiert.

    Kustomize  # k8s native configuration management

    linkerd  # Linkerd is a service mesh for Kubernetes

    Webservice  # einfacher Webservice

    cert-manager  # Zertifikatsmanager

    portainer  # Portainer UI for your Kubernetes cluster

    prometheus  # Prometheus operator for monitoring and logging

    registry  # Private image registry

    dashboard  # The Kubernetes dashboard

    metrics-server  # K8s Metrics Server for API access to service metrics

    ingress  # Ingress controller for external access

    longhorn   # ClusterStorage

    helm3  # Helm 3 - Kubernetes package manager

    metallb  # Loadbalancer for your Kubernetes cluster

    ha-cluster  # Configure high availability on the current node

    rbac  # Role-Based Access Control for authorisation

    dns  # CoreDNS

    storage  # Storage class; allocates storage from host directory

    disabled:

    helm  # Helm 2 - the package manager for Kubernetes

    host-access  # Allow Pods connecting to Host services smoothly

    Die Installationsreihenfolge ist von unten nach oben.

    Der Raspberry-Steuernode wird für Monitoring, Backup, dhcp, ntp usw. benutzt. Weiters ist dieser Raspberry auch der Entwicklungsrechner. Dh. Dort wird neben Docker, Arkade, Ansible usw. auch ein separates microk8s installiert.

    Hier werden dann alle Komponenten getestet, bevor die Konfiguration am Cluster installiert wird. Ziel ist es ein versioniertes Deployment mit einer integrierten CI/CD-Strecke zu haben.

    Aufbau der Hardware

    Inspiration:

    https://www.picocluster.com/blogs/picocluster-assembly-instructions/assemble-pico-5h-rpi4

    https://www.reichelt.at/at/de/raspberry-pi-fan-tower-4-stoeckig-rpi-fan-tower-4-p299268.html?PROVID=2807&gclid=EAIaIQobChMItIXp4e_N8AIVBigYCh1V6QINEAYYBiABEgKeRPD_BwE

    https://www.amazon.de/GeeekPi-6-Layers-Raspberry-K%C3%BChlk%C3%B6rper-Stapelbares/dp/B085ZJQMXF/ref=sr_1_5?adgrpid=70647801065&dchild=1&gclid=EAIaIQobChMItIXp4e_N8AIVBigYCh1V6QINEAAYAyAAEgI5Z_D_BwE&hvadid=391629950630&hvdev=c&hvlocphy=20047&hvnetw=g&hvqmt=e&hvrand=8703768946581253209&hvtargid=kwd-296167140860&hydadcr=27956_1978103&keywords=raspberry+pi+cluster&qid=1621156967&sr=8-5

    https://www.reichelt.at/at/de/gehaeuse-fuer-raspberry-pi-4-alu-schwarz-rpi-case-alu07-p261677.html?PROVID=2807&gclid=EAIaIQobChMI54DQs_HN8AIV0gCiAx2dYQPpEAQYBiABEgLjHfD_BwE

    https://www.amazon.de/Geekworm-Raspberry-Aluminum-Passive-Dissaption/dp/B07ZVJDRF3

    https://magpi.raspberrypi.org/articles/group-test-best-raspberry-pi-4-thermal-cases-tested-and-ranked

    https://raspberrytips.com/raspberry-pi-4-passive-cooling/

    Ich habe mir einen Pico-Cluster bestellt. Diese Hardware hat ein sympathisches Gehäuse, in dem alle Komponenten ihren Platz haben. Diese Hardware kommt aus den USA, was zu folgenden Problemen führt

    Der Stromstecker ist aus den USA. Für Europa braucht man einen eigenen. Ein altes PC-Stromkabel reicht

    Es wird Zoll fällig. Die Höhe des Zolls berechnet sich an der Höhe des Einkaufwertes.

    Dh. nur das Notwendigste aus den USA kaufen. Die Raspberrys und die SD-Speicherkarten gibt es auch in Europa (und sind teilweises sogar billiger).

    Es gibt aber auch noch andere Hardwareanbieter (siehe Links).

    Prinzipiell braucht man ein paar Raspberrys, SD-Karten, einen Nway-Switch, Netzwerkkabel, passendes Power-Supply, Kühlung. Ob es ein aktiver Lüfter sein muß, oder ob man mit passiven Kühlteilen das Auslangen findet muß jeder selbst entscheiden. Ich persönlich glaube mittlerweile, wenn man meine aktive Kühlung mit Lüfter braucht, dann sollte man stärkere Hardware nehmen:). Dh. Es gibt gute passive Kühlsysteme, die ihren Zweck erfüllen.

    Meine Lieferung sieht aus wie folgt:

    OEBPS/images/image0005.jpg

    Schaubild 5: Pico Cluster 1

    Es kommt alles in einer Box. Das Pico-Gehäuse aus Acryl hat eine Schutzfolie. Es sind alle Schrauben, passiven und aktiven Elemente gut verpackt.

    OEBPS/images/image0006.jpg

    Schaubild 6: Pico Cluster 2

    Meine Raspberrys haben auch ein passives Kühlteil (das große Schwarze) aus Aluminium.

    OEBPS/images/image0007.jpg

    Schaubild 7: Pico Cluster 3

    Hier kann man den zusammengebauten Tower plus der Stromverteilung sehen. Die Stromkabel sind bereits an den einzelnen Raspberrys angeschlossen. Der Tower ist bereits mit der Grundplatte verbunden.

    OEBPS/images/image0008.jpg

    Schaubild 8: Pico Cluster 4

    Hier kann man die Stromversorgung sehen. Diese Stromversorgung reicht für alle fünf Raspberrys.

    OEBPS/images/image0009.jpg

    Schaubild 9: Pico Cluster 5

    Hier sieht man den Nway-Switch, bereits mit dem Pico-Seitenteil verbunden.

    OEBPS/images/image0010.jpg

    Schaubild 10: Pico Cluster 6

    Ansicht „von links" mit dem aktiven Lüfter (der nicht leise ist).

    OEBPS/images/image0011.jpg

    Schaubild 11: Pico Cluster 7

    Ansicht „von rechts" mit dem nway-Switch und der Stromversorgung im Hintergrund.

    Sehr elegant gelöst ist bei Pico die Verbindung der einzelnen Seitenteile. Das ist bei jeder Seitenkante eine Schraube mit Mutter. Dh. jede einzelne Seite kann mit vier Schrauben gelöst und entnommen werden. Das ist praktisch, wenn man die SSD-Karten wieder mal neu aufsetzen will / muß.

    Ab nun kann der Cluster mit einem richtigen Betriebssystem und den Softwarekomponenten versorgt werden.

    Bisher erreicht:

    Hardware zusammengebaut

    Installieren der Raspberrys

    Inspiration:

    https://www.raspberry-pi-geek.de/ausgaben/rpg/2018/04/raspberry-pi-farm-mit-ansible-automatisieren/

    https://www.raspberrypi.org/blog/raspberry-pi-imager-update/

    Wir wählen das richtige Betriebssystem, und initialiseren alle SD-Karten.

    OEBPS/images/image0012.jpg

    Schaubild 12: Raspberry Pi Imager

    Alle Karten mit dem Raspberry-Imager https://www.raspberrypi.org/blog/raspberry-pi-imager-update/ initialisieren.

    Für jeden Node merken wir uns die MAC-Adresse. Am DHCP-Server müssen die richtigen Einträge konfiguriert werden.

    alfred@monitoring:~$ sudo tail -f /var/log/syslog | grep -i dhcp

    Apr 14 07:28:44 monitoring dhcpd[2264]: DHCPACK on 192.168.0.24 to dc:a6:32:ed:09:68 (ubuntu) via eth0

    Apr 14 07:28:44 monitoring dhcpd[2264]: DHCPOFFER on 192.168.0.25 to dc:a6:32:ee:f2:15 (ubuntu) via eth0

    Apr 14 07:28:44 monitoring dhcpd[2264]: DHCPREQUEST for 192.168.0.25 (192.168.0.2) from dc:a6:32:ee:f2:15 (ubuntu) via eth0

    Apr 14 07:28:44 monitoring dhcpd[2264]: DHCPACK on 192.168.0.25 to dc:a6:32:ee:f2:15 (ubuntu) via eth0

    alfred@monitoring:~$ sudo nano /etc/dhcp/dhcpd.conf

    # unterster

    host pc1 {

    hardware ethernet dc:a6:32:ee:f1:94;

    fixed-address 192.168.0.201;

    server-name pc1;

    }

    # vierter

    host pc2 {

    hardware ethernet dc:a6:32:ee:f1:c4;

    fixed-address 192.168.0.202;

    server-name pc2;

    }

    # dritter

    host pc3 {

    hardware ethernet dc:a6:32:ee:f2:15;

    fixed-address 192.168.0.203;

    server-name pc3;

    }

    # zweiter

    host pc4 {

    hardware ethernet dc:a6:32:ee:f2:21;

    fixed-address 192.168.0.204;

    server-name pc4;

    }

    # oberster

    host pc5 {

    hardware ethernet dc:a6:32:ed:09:68;

    fixed-address 192.168.0.205;

    server-name pc5;

    }

    alfred@monitoring:~$ sudo systemctl restart isc-dhcp-server

    alfred@monitoring:~$ sudo systemctl status isc-dhcp-server

    ● isc-dhcp-server.service - ISC DHCP IPv4 server

    Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; enabled; vendor preset: enabled)

    Active: active (running) since Wed 2021-04-14 07:42:54 CEST; 8s ago

    Docs: man:dhcpd(8)

    Main PID: 22045 (dhcpd)

    Tasks: 4 (limit: 9257)

    CGroup: /system.slice/isc-dhcp-server.service

    └─22045 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dh>

    Apr 14 07:42:54 monitoring.slainte.at sh[22045]: Wrote 0 new dynamic host decls to leases file.

    Apr 14 07:42:54 monitoring.slainte.at sh[22045]: Wrote 20 leases to leases file.

    Apr 14 07:42:54 monitoring.slainte.at dhcpd[22045]: Wrote 20 leases to leases file.

    Apr 14 07:42:54 monitoring.slainte.at dhcpd[22045]: Listening on LPF/eth0/dc:a6:32:d3:aa:3e/192.168.0.0/24

    Apr 14 07:42:54 monitoring.slainte.at dhcpd[22045]: Sending on  LPF/eth0/dc:a6:32:d3:aa:3e/192.168.0.0/24

    Apr 14 07:42:54 monitoring.slainte.at sh[22045]: Listening on LPF/eth0/dc:a6:32:d3:aa:3e/192.168.0.0/24

    Apr 14 07:42:54 monitoring.slainte.at sh[22045]: Sending on  LPF/eth0/dc:a6:32:d3:aa:3e/192.168.0.0/24

    Apr 14 07:42:54 monitoring.slainte.at sh[22045]: Sending on  Socket/fallback/fallback-net

    Apr 14 07:42:54 monitoring.slainte.at dhcpd[22045]: Sending on  Socket/fallback/fallback-net

    Apr 14 07:42:54 monitoring.slainte.at dhcpd[22045]: Server starting service.

    Bisher erreicht:

    Speicherkarten installiert

    Bootfähige Nodes

    Reservierung der MAC-Adressen am DHCP-Server

    Lokale Konfiguration

    Diese Konfiguration muß händisch auf jedem Node gemacht werden. Dazu loggt man sich auf jedem Node ein. Die Beispiele hier beziehen sich auf den pc1. Der Standard User für die erstmalige Anmeldung ist ubuntu mit dem Passwort ubuntu.

    alfred@bureau:~$ ssh ubuntu@pc1

    The authenticity of host 'pc1 (192.168.0.201)' can't be established.

    ECDSA key fingerprint is SHA256:3AtqqBeZQjedxbb3f1c2Amw2VECVS3R3IF47c3xUZSo.

    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

    Warning: Permanently added 'pc1,192.168.0.201' (ECDSA) to the list of known hosts.

    ubuntu@pc1's password:

    You are required to change your password immediately (administrator enforced)

    Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-1033-raspi aarch64)

    * Documentation:  https://help.ubuntu.com

    * Management:  https://landscape.canonical.com

    * Support:  https://ubuntu.com/advantage

    System information as of Wed Apr 14 09:12:44 UTC 2021

    System load:  0.25  Temperature:  37.0 C

    Usage of /:  4.2% of 58.26GB  Processes:  132

    Memory usage: 3%  Users logged in:  0

    Swap usage:  0%  IPv4 address for eth0: 192.168.0.201

    * Introducing self-healing high availability clusters in

    Enjoying the preview?
    Page 1 of 1