Det här steget kan man göra med en anann leverantör
- Beställ konto på Safespring. Hälsa från oss så blir vi glada.
- Skapa en ny security group som du döper tex till 'public' med följande portar öppna:
- Launch Instance - Välj Ubuntu 20.04 och en nod med lokal lagring, t ex lb.large.1d. Skapa tre stycken och glöm inte att att välja din security group.
-
ssh ubuntu@ip-adressen till dina noder
-
sudo snap install microk8s --classic
-
Lägg till din användare i microk8s gruppen så att du slipper köra sudo för varje kommando:
sudo usermod -a -G microk8s ubuntu sudo chown -f -R ubuntu ~/.kube newgrp microk8s
-
Från en av noderna:
microk8s add-node
Nu får du instruktioner att köra på en av de andra noderna. T ex microk8s join xxx:25000
Här kan du välja om du ska ha en master-nod och flera worker noder. Vi brukar välja att varje nod är både worker och master, välj då översta alternativet.
-
Lägg till de add-ons du vill använda:
microk8s enable dns ingress helm3 registry storage
-
Lägg till externa IP som IP.100 i denna så att du kan nå klustret utifrån utan varningar. Upprepa för varje nod.
sudo vim /var/snap/microk8s/current/certs/csr.conf.template sudo /snap/bin/microk8s refresh-certs
-
Nu är du redo att ansluta till dina noder. Så här hämtar du config till servrarna:
microk8s config
Lägg in detta i din lokala ~/kube/config
-
Så ska du nu kunna komma åt noderna:
kubectl get nodes
-
Lägg till nodernas ip i /etc/hosts
Av någon anledning så får man 'dns host resolve' fel när man försöker köra kubectl logs
på en nod som inte är den du ansluter till. Workaround är att lägga till nodernas IP i /etc/hosts - på den maskinen som du ansluter dig till men enklast är att göra det på samtliga noder.
```bash
xx.yy.zz microk8s-1
xx.yy.z2 microk8s-2
xx.yy.z3 microk8s-3
```
För att aktivera automatisk TLS i ditt kluster så kör du cert-manager. Så här installerar du cert-manager:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.7.1/cert-manager.yaml
OBS! Redigera emailadress i k8s/letsencrypt.yaml
kubectl apply -f k8s/letsencrypt.yaml
kubectl apply -f k8s/web.yaml
För att köra något som kräver lagring på noderna så behöver du först installera en distribuerad lagring. Vi använder ofta Longhorn men det finns olika. Longhorn har inbyggd backup till S3 vilket är väldigt praktiskt. Så här installerar du Longhorn:
helm install longhorn longhorn/longhorn --namespace longhorn-system --create-namespace --set csi.kubeletRootDir=/var/snap/microk8s/common/var/lib/kubelet --set defaultSettings.defaultDataPath=/data
För att aktivera IPv6 så behöver man fortfarande pilla en del med interna filer på klustret men följer man den här guiden (hoppa över brandväggsreglerna) så fungerar det: https://discuss.kubernetes.io/t/microk8s-ipv6-dualstack-how-to/14507