Creatie van een Kubernetes cluster en Docker images - lab9k/Orga GitHub Wiki

Creatie van een Kubernetes cluster en Docker images

Op deze pagina wordt uitgelegd hoe een Kubernetes cluster gecreëerd kan worden op Azure Cloud Platform. Dit platform is een 'online platform as a service' (PaaS) dat op lange termijn zal gebruikt worden om alle applicaties gecentraliseerd te hosten door middel van AKS en Docker containers.

Wat zijn Docker containers ?

Een Docker container is in principe een afzonderlijk proces dat op een Docker Engine draait, dit in tegenstelling tot virtuele machines die draaien op een Guest OS. Dat wilt dus zeggen dat Docker processen niet op een host operating system runnen maar wel samen op een engine dat op een centraal operating systeem staat.

Kortom, aangezien containers afzonderlijke processen zijn, levert dat tal van voordelen op ten opzichte van het gebruik van stand alone servers en virtuele machines. In eerste instantie creëert en host men geïsoleerde applicaties, wat wilt zeggen dat deze niet geïnterfereerd worden door het verkeerd lopen van een ander proces. Op die manier zijn containers een stuk robuuster en performanter dan wanneer met meerdere processen op één VM zou draaien. Aangezien containers niet op een Guest OS draaien, nemen deze ook veel minder geheugen in beslag dan een VM. Bovendien is een container ook zeer flexibel en exporteerbaar: waar men een container ook host, men mag er altijd vanuit gaan dat dit werkt en een autonoom proces is zonder veel platform afhankelijke configuraties.

Wat is AKS ?

Azure Kubernetes Cluster is een Kubernetes management tool die ondersteuning biedt aan een cluster van containers. AKS is een productnaam van Microsoft. Eigenlijk is het beter om te leren begrijpen wat Kubernetes is. Containers op zich kunnen enkel - door middel van DockerHub bijvoorbeeld - geüpload en gehost worden. Als er aanpassingen moeten gebeuren aan deze container is dit meestal een vrij ingewikkeld proces en als deze down zou gaan, is het heel moeilijk om dit te monitoren. Bovendien moet deze daarna opnieuw manueel worden herstart. Hier komt Kubernetes aan te pas: Kubernetes is een COC (Cluster Orchestration Tool) dat instaat voor deployment, scaling, logging, monitoring en load-balancing van applicaties omvat in een container.

Prerequisites

  • Men moet kunnen aanmelden via het Azure Cloud Portal en toegang hebben tot het Azure Dashboard.
  • Azure CLI ter beschikking hebben op het hostsysteem, ofwel gebruik maken van Cloud Shell in het Azure Dashboard.

Workflow

  • Creatie van een resource group:
az group create --name Lab9K-Group --location europewest
  • Creatie van een AKS cluster m.b.v. Kubernetes:
az acs create --orchestrator-type kubernetes --resource-group Lab9K-Group --name Lab9K-Group-AKS --generate-ssh-keys
  • Installeer kubetcl (lokale CLI om te connecteren met de Kubernetes cluster):
az aks install-cli

Koppeling / Routering naar Kubernetes Cluster

  • Configureeer kubectl om te connecteren met de Kubernetes cluster:
az acs kubernetes get-credentials --resource-group Lab9K-Group --name Lab9K-AKS

Testing

  • Controleer of de namespaces etc. online bereikbaar zijn:
kubectl get all --all-namespaces

Creatie van images & containers

  • Optioneel: als men gebruik zou maken van Visual Core, installeer de Docker plug-in.

  • Run Docker:

systemctl start docker.service
  • Install the dependencies in the local node_modules folder:
npm install --save-dev nodemon
  • Build docker image:
docker build -t <username>/<projectname>:<tag> .

(Als <tag> niet ingevuld is, wordt dit automatisch vervangen door latest)

  • Start docker container:
docker run -p 49160:3200 -d <username>/<image>

Nu zou het normaal mogelijk moeten zijn om de applicatie lokaal te runnen in een Docker container onder localhost:3200. Een Docker image zou dus ook beschikbaar moeten zijn. Op deze pagina kan men terugvinden hoe een applicatie kan geïntegreerd worden in een Kubernetes cluster.

⚠️ **GitHub.com Fallback** ⚠️