# 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://gitbook.pludo.org/k3s/oversikt-av-prosjektet.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
