Commit cf37fe0e authored by Nane Kratzke's avatar Nane Kratzke
Browse files

Lab Beschreibung

parent be35545d
# Lab 07: Kubernetes
# Lab 06: Kubernetes
In diesem Lab lernen Sie, wie Sie containerisierte Workloads automatisiert mittels einer Deployment Pipeline in Kubernetes deployen können.
In diesem Lab lernen Sie, wie Sie containerisierte Workloads automatisiert mittels einer Deployment Pipeline in Kubernetes deployen und skalieren können.
Sie erhalten ferner einen ersten Einblick in horizontale Skalierungstechniken und Self-Healing Fähigkeiten der Kubernetes-Plattform (z.B. durch Konzepte wie Deployment-Controller).
Die Inhalte dieses Labs machen wir an einem einfachen Web-Dienst deutlich, der prüft, ob es sich bei einer gegebenen Zahl, um eine Primzahl handelt oder nicht. Dieser ist grundsätzlich wie folgt aufgebaut.
Die Inhalte dieses Labs machen wir an einem sehr einfachen Web-Dienst deutlich, der prüft, ob es sich bei einer gegebenen Zahl, um eine Primzahl handelt oder nicht. Dieser Service ist grundsätzlich wie folgt aus folgenden Kubernetes Konzepten aufgebaut.
- Der Primzahl-Dienst kann über einen [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/)-Controller von außen erreicht werden.
- Der Dienst wird Cluster-intern als [Service](https://kubernetes.io/docs/concepts/services-networking/service/) exponiert.
- Dieser Service fasst über ein [Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) ausgebrachte Pods unter einer Netzwerkadresse zusammen. Über das Deployment kann die Primzahllast horizontal skaliert werden.
- Die Pods selber prüfen die Primzahlen. Zahlen, die in vorhergehenden Aufrufen bereits als Primzahlen verworfen wurden, können in einem In-Memory Key-Value Cache ([Redis](https://redis.io)) gespeichert werden, um wiederholte Prüfungen zu vermeiden und die Primzahlprüfung zu beschleunigen.
- Der Redis Cache wird als Deployment mit vorgelagertem Service ausgebracht, so dass die Primzahl-prüfenden Pods nur den Service Namen, nicht aber die IP-Adresse des Redis-Pods kennen müssen.
- Durch ein Persistent Volume Claim ([PVC](https://kubernetes.io/docs/concepts/storage/persistent-volumes)) kann dem Redis Pod ein Volume gemountet werden, und der Cache verliert auch über Redis Restarts nicht seinen Zustand.
```
|----------------- Übung 01 -----------------|----------- Übung 02 ----------|
---------
/- Prime Pod -\
| --------- |
|- Prime Pod -|
------- ------------- | --------- | ------------- ---------
Ingress --- Prime Service ---|- Prime Pod -|--- Redis Service --- Redis Pod
------- ------------- | --------- | ------------- ---------
|- ... -| |
| --------- | ---------
\- Prime Pod -/ Redis PVC
--------- ---------
|
---------
Volume
---------
------- ------------- | --------- | ------------- --------- ---
|- ... -| | |
| --------- | --------- |
\- Prime Pod -/ Redis PVC |
--------- --------- Übung 03
| |
--------- |
Volume |
--------- ---
```
## Inhalt
- [Lab 07: Kubernetes](#lab-07-kubernetes)
- [Lab 06: Kubernetes](#lab-06-kubernetes)
- [Inhalt](#inhalt)
- [Vorbereitung](#vorbereitung)
- [Übung 01:](#übung-01)
- [Übung 01: Deployment eines Prime Service](#übung-01-deployment-eines-prime-service)
- [Übung 02: Ergänzung eines Stateless Caches](#übung-02-ergänzung-eines-stateless-caches)
- [Übung 03: Erweiterung zu einem Stateful Cache](#übung-03-erweiterung-zu-einem-stateful-cache)
- [Übung 04: Skalierung und Chaos Engineering](#übung-04-skalierung-und-chaos-engineering)
- [Übung 05: Deployment des Prime Service in GKE](#übung-05-deployment-des-prime-service-in-gke)
## Vorbereitung
## Übung 01:
[Forken](https://git.mylab.th-luebeck.de/cloud-native/lab-k8s/-/forks/new) Sie bitte dieses GitLab-Repository in Ihren GitLab-Namensraum.
## Übung 01: Deployment eines Prime Service
## Übung 02: Ergänzung eines Stateless Caches
## Übung 03: Erweiterung zu einem Stateful Cache
## Übung 04: Skalierung und Chaos Engineering
## Übung 05: Deployment des Prime Service in GKE
In diesem Schritt passen wir das in den Übungen 1 bis 3 entwickelte Deployment so an, dass es in [GKE](https://cloud.google.com/kubernetes-engine) (Google Kubernetes Engine, also einem Public Cloud Service Provider) automatisiert ausgebracht werden kann. Dies soll Ihnen zeigen, dass Kubernetes grundsätzlich eine recht standardisierte Plattform ist, die sowohl Self-Hosted in einer Private Cloud als Plain-Vanilla Kubernetes oder als Managed-Service in einer Public Cloud nutzbar ist. Tatsächlich bieten mittlerweile fast alle großen Public Cloud Service Provider Kubernetes-basierte Dienste an. Kubernetes hat es so eine Art de-facto Standard etabliert und die ehemals sehr heterogene PaaS Landschaft bis zu einem gewissen Grad vereinheitlicht.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment