Multipass

For å kunne starte, må du ha tilgang til et kubernetes kluster. Et av de enklere verktøy for å få til dette er multipass som oppretter en VM der man installerer microk8s. Det finnes mange gode alternativer som er mye mer lettvektere, men dette er valgt fordi multipass kan brukes til andre formål, og microk8s er et godt alternativ for å kjøre kubernetes på low-end IoT enheter som Raspberry Pi.

For å installere multipass følg den offisielle installasjons guiden på installasjons guide

Alternativer til multipass og microk8s

  • minikube kanskje det enkleste verktøyet for å kjøre opp et kubernetes miljø? Med mulighet for forskjellig vm tilbydere.
  • k3s produksjonsklart kubernetes med kun de nødvendigste kubernetes funksjonene. Minimalt og god på ytelse.
  • k3d k3s in docker. Nedstrippet versjon av k3s som kjører i docker.
  • kind fullverdig verktøy for å kjøre opp kubernetes i docker.
  • k0s minimalt kubernetes system som er enkelt å installere og provsjonere.

Provisjon ny virtuell maskin med Multipass

multipass launch --name microk8s-vm --memory 8G --disk 40G --cpus 4
multipass shell microk8s-vm

Installer microk8s

Linux

# installer microk8s
sudo snap install microk8s --classic --channel=1.27/stable

# legg bruker til microk8s gruppen
sudo usermod -a -G microk8s $USER
mkdir ~/.kube
sudo chown -f -R $USER ~/.kube
newgrp microk8s

# Test at det fungerer
microk8s status

# Installer addons
microk8s enable ingress dns cert-manager hostpath-storage host-access
  • ingress: Dette oppretter en ingress (reverse-proxy) som videresender trafikk for et FQDN (example.com) til tilhørende service som så svarer på responsen.
  • dns: Dette oppretter en DNS tilbyder i klusteret så vi kan kalle på tjenestene ved å bruke FQDN til klusteret (example.svc.cluster.local)
  • cert-manager: Cert-manager er en tilbyder for å utstede sertifikater, enten selvsignerte eller gjennom eksterne tjenester som Let’s Encrypt
  • hostpath-storage: Dette er en enkel tilbyder for å tilby lagring inn i noden ved å lagre data på selve ubuntu hosten.
  • host-access: Dette tilgjengeliggjør host maskinenens ressurser inn i klusteret. Vi bruker dette kun for å forenkle bruken av DNS oppslag mot drone.local og git.local inne i klusteret.

Windows

For å få microk8s til å fungere på Windows ved å bruke WSL må man aktivere versjon 2 av WSL og skru på systemd.

  1. Oppdaterer WSL til å kjøre på versjon 2
wsl --update
wsl --set-default-version 2
  1. Etter installering av ubuntu, logg inn i WSL og aktiver systemd
echo -e "[boot]\nsystemd=true" | sudo tee /etc/wsl.conf
  1. Logg ut av ubuntu og restart WSL fra powershell
wsl --shutdown
wsl
  1. Følg veiledning for Linux

hosts

Kjør følgende kommando og legg resultatet i hosts filen på egen maskin og multipass. På MacOSX og Linux er den rette plasseringen /etc/hosts.

Det er viktig at du gjør dette på multipass VM instansen din. Og dessverre vil denne filen resettes etter hver restart av maskinen

IP=$(hostname -I | awk '{print $1}' )
cat << EOF | sudo tee -a /etc/hosts
  $IP git.local
  $IP drone.local
  $IP nyan.local
  $IP argocd.local
  $IP vault.local
  $IP ctf.local
EOF

TIPS

Microk8s

Status

microk8s status

Config

Konfigfilen kan eksponeres til fil på følgende måte, slik at man kan bruke egen kubectl, eller andre verktøy som k9s.

microk8s config > ~/.kube/config

Kubectl

Alias

Alias for enklere kommandoer

alias kubectl="microk8s kubectl"
alias k=kubectl

For å persistere kommandoene over, må de legges inn i .-rc fil som .bashrc eller .zshrc.

cat << EOF >> ~/.bashrc
  alias kubectl="microk8s kubectl"
  alias k=kubectl
EOF
source ~/.bashrc

Interaksjon med klusteret

Sjekk noder og pod tilstander

kubectl get nodes
kubectl get pods -A

Completion

Auto completion gir deg automatisk utfylling ved bruk av [tab] slik at det er enkelt å gjøre handlinger mot klusteret. Ler mer

source <(kubectl completion bash) # set up autocomplete in bash into the current shell, bash-completion package should be installed first.
echo "source <(kubectl completion bash)" >> ~/.bashrc # add autocomplete permanently to your bash shell.

alias k=kubectl
complete -o default -F __start_kubectl k

Smarte kubernetes kommandoer

Liste ut alle oversikter over ressurser i et kluster

kubectl api-resources

List ut spesifikasjonen for ressurser i klusteret

kubectl explain application.spec

k9s

k9s er et visuelt CLI verktøy for å lett få en oversikt over ressurser i klusteret, blant annet loggin, shell, metrikler osv.

ARCH=$(dpkg --print-architecture)
wget https://github.com/derailed/k9s/releases/latest/download/k9s_Linux_$ARCH.tar.gz
tar xvf k9s_Linux_$ARCH.tar.gz
sudo mv k9s /usr/local/bin/k9s
rm README.md LICENSE k9s_Linux_$ARCH.tar.gz

Husk å hente ut kubernetes config for at k9s skal fungere, her er veiledning

jq

Installere jq

sudo apt install jq -y

Multipass

Shell

Opprett shell til VM

multipass shell microk8s-vm

Stopping

Stopp VM

multipass stop microk8s-vm

Sletting

Slett VM og rydd opp

multipass delete microk8s-vm
multipass purge