Alfred Sabitzer

K8s Applications mit MicroK8S auf Raspberry PI


Скачать книгу

p>

      mit MicroK8S

      auf Raspberry PI

      Beispiele für das Entwickeln und Betreiben von Anwendungen auf einem MicroK8s Kubernetes Cluster auf Raspberry PI Basis.

      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 werden aufbauend auf dem Hardwareaufbau im Buch "Bau einer K8s bare-metal-cloud mit RaspberryPI" ISBN 978-3-7534-9851-4 unterschiedliche Konzepte und Ideen beschrieben. Der Bau von Microservices, das Einrichten einer CI/CD-Strecke, kpt, kustomize, Servicemesh usw, wird anhand von Beispielen soweit möglich erklärt.

      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 [email protected] erreichbar.

      Die in diesem Buch angeführten Programmteile gibt es online auf https://gitlab.com/Alfred-Sabitzer/k8sapp sowie auf https://gitlab.com/Alfred-Sabitzer/ldap .

      Einleitung

      Nach dem Aufsetzen des microK8s-Cluster auf RaspberryPI und prinzipiellem Einrichten der Infrastruktur (siehe „Bau einer K8s bare-metal-cloud mit RaspberryPI“), dient diese Beschreibung um die Schritte, Versuche und Fehlversuche zu dokumentieren, die ich beim Entwicklen, Einrichten und Betreiben von Anwendungen im k8s-Cluster unternommen habe. Es werden die folgenden Teile beschrieben

      Infrastrukturservices

      Repository

      NTP

      LDAP

      Secretmanagement

      Monitoringservices

      Prometheus

      Grafana

      Alert-Agent

      Storage und Backup

      Longhorn

      Externe Storage

      Webservice – Stateful

      Joomla

      PostgresDB

      Gitlab

      Build-Pipelines

      GitRunner

      Buildautomatisierung

      Eigene einfache Buildpipeline

      kpt

      kustomize

      Servicemesh Linkerd

      Alle Services werden als yaml-File beschrieben. Die Sourcen befinden sich auf https://gitlab.com/Alfred-Sabitzer/ldap sowie auf https://gitlab.com/Alfred-Sabitzer/k8sapp

      Leider ist nicht alles am Raspberry mit arm-Architekture verfügbar. Somit kann ein K8S-Cluster auf Raspberry Basis nicht wirklich mit einem Cluster auf Intel-Basis (oder noch besser in einer wirklichen Cloud wie Google oder Amazon) verglichen werden. Es ist dennoch eine gute und kostengünstige Basis um die Prinzipien kennen zu lernen, und Hands-On einen Cluster vom Scratch aufzubauen.

      Der hier beschriebene Cluster baut auf dem Buch

      "Bau einer K8s bare-metal-cloud mit RaspberryPI" ISBN 978-3-7534-9851-4 auf.

      Gutes Gelingen!

      Architektur des Clusters

      Inspiration:

       https://de.wikipedia.org/wiki/Raspberry_Pi

      https://www.picocluster.com/

      Das System besteht aus einem RaspberryPI-Cluster mit microk8s. Die Raspberry-Version ist 4 mit 8GB RAM und einer 64GB SDRAM. Der Cluster besteht aus 5 Nodes. Jeder Node hat zusätzlich noch eine externe 110GB USB-SSD-Platte die als Clusterstorage konfiguriert ist.

      

Abbildung 1: k8s-Cluster

      PC ist die Abkürzung für "pico-cluster". Es gibt pc1 bis pc5.

      Die SSD-Disken werden mit Longhorn verwaltet. Es steht folgender Speicherplatz für PVC'S (permanent volume claims) zur Verfügung:

      

Abbildung 2: Longhorn Clusterstorage

      Physikalisch sieht das aus wie folgt:

      

Abbildung 3: pico-Cluster von vorne

      Man sieht hier den Cluster von vorne mit der Stromversorgung und dem Nway-Switch.

      OEBPS/images/image0005.jpg Abbildung 4: pico-Cluster von der Seite

      Hier erkennt man den Cluster mit dem eingebauten Lüfter.

      OEBPS/images/image0006.jpg Abbildung 5: pico-Cluster von hinten

      Hier kann man gut die Cluster-Storage erkennen. Aus thermischen Gründen befinden sich die SSD-Platten ausserhalb des Pico-Clusters.

      Der Aufbau wird in „Bau einer K8s bare-metal-cloud mit RaspberryPI“ beschrieben.

      Ein Übersicht gibt folgendes Bild:

      OEBPS/images/image0007.jpg Abbildung 6: MicroK8S Cluster - Gesamtsystem

      Namespaces

      Inspiration: