> For the complete documentation index, see [llms.txt](https://gitbook.pludo.org/k3s/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://gitbook.pludo.org/k3s/oversikt-av-prosjektet.md).

# Oversikt av Prosjektet

Dette prosjektet demonstrerer oppsett og implementering av en Kubernetes-cluster ved hjelp av 5 Raspberry Pi-enheter. Hovedmålet er å etablere en fungerende cluster hvor en Raspberry Pi 4 fungerer som både brannmur og Kubernetes master, mens de resterende enhetene opererer som worker nodes.

### Hovedmål

* Etablere en funksjonell Kubernetes-cluster
* Implementere lastbalansering for en webtjeneste
* Utføre ytelsestesting under høy belastning

## Systemarkitektur

* **Master Node (Raspberry Pi 4)**
  * Fungerer som brannmur
  * Kubernetes control plane
  * Håndterer cluster-orchestrering
* **Worker Nodes (2x Raspberry Pi)**
  * Kjører containers
  * Håndterer applikasjonsbelastning
  * Skalerer etter behov

## Teknisk Spesifikasjon

#### Maskinvare

* 1x Raspberry Pi 4 (Master)
* 2x Raspberry Pi (Workers)
* Nettverksswitch
* Ethernet-kabler
* Strømforsyninger

#### Programvare

* Raspberry Pi OS
* Kubernetes (K3S)
* SSH for fjernadministrasjon
* Ytelsestestverktøy (oha)

## Implementeringsplan

#### Fase 1: Grunnoppsett

1. Installasjon av operativsystemer
2. SSH-konfigurasjon
3. Nettverksoppsett med statiske IP-er

#### Fase 2: Kubernetes Implementering

1. Installasjon av valgt Kubernetes-distribusjon
2. Konfigurasjon av master node
3. Tilkobling av worker nodes

#### Fase 3: Applikasjonsdeployment

1. Oppsett av test-webapplikasjon
2. Konfigurasjon av lastbalansering
3. Ytelsestesting og optimalisering

## Risikovurdering

| Risiko              | Beskrivelse                               | Tiltak                                              |
| ------------------- | ----------------------------------------- | --------------------------------------------------- |
| Utstyrsmangel       | Begrenset tilgang på Raspberry Pi-enheter | Forhåndsbestille/reservere utstyr                   |
| Konfigurasjonsfeil  | Feil i nettverks- eller brannmuroppsett   | Grundig testing og dokumentasjon av konfigurasjoner |
| Ytelsesutfordringer | Begrensninger i håndtering av høy last    | Implementere god overvåking og skalering            |

## Ytelsestesting

#### Testmetodikk

* Bruk av oha for belastningstesting
* Måling av responstider
* Analyse av ressursbruk
* Evaluering av lastbalansering

#### Målepunkter

* Responstid under normal last
* Maksimal samtidig belastning
* Skaleringseffektivitet
* Ressursforbruk per node

## Milepæler

{% stepper %}
{% step %}

#### Undersøkelse av teknologier

Jeg vil undersøke ulike måter å utføre prosjektet på, inkludert å se YouTube-videoer som omhandler lignende prosjekter, og lese relevante artikler som gir veiledning for oppsett av Kubernetes på Raspberry Pi.
{% endstep %}

{% step %}

#### Låne utstyr

Låne Raspberry Pi-er, switch, kabler og annet nødvendig utstyr.
{% endstep %}

{% step %}

#### Operativsystem og SSH-oppsett

Installere operativsystemet på Raspberry Pi-ene og sette opp SSH for å jobbe hjemmefra.
{% endstep %}

{% step %}

#### Nettverksoppsett

Koble til switch og kabler, og sette opp en brannmur på Pi4-enheten som skal fungere som master i clusteret.
{% endstep %}

{% step %}

#### Programvareinstallasjon

Installere nødvendig programvare på både master og slave enhetene. Dette inkluderer valg av Kubernetes-løsning som kan være Microk8s, K3s eller vanlig Kubernetes (K8s).
{% endstep %}

{% step %}

#### Implementering av prosjekt

Legge til et enkelt prosjekt på serveren, enten en eksisterende applikasjon eller utvikle en egen API eller nettside for Pi-racken.
{% endstep %}

{% step %}

#### Testing av ytelse

Jeg vil bruke verktøy som oha eller lignende for å sende tusenvis av forespørsler til serveren, og analysere ytelsen for å se hvordan systemet håndterer belastning og fordeling av forespørsler.
{% endstep %}
{% endstepper %}
