Installation cluster k3s

Docs install cluster k3s

Docs install kube-vip On optera finalement pour un MetalLB, le vip mettant en carafe l'ensemble du cluster

Utils Stephane Robert

Préparation

BASH
firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=8472/udp
firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16 #pods
firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16 #services
firewall-cmd --reload

Sur le 1er nœud : curl -sfL https://get.k3s.io | sh -s - server --cluster-init !!! --cluster-init nous permet d'initialiser k3s avec un db etcd qui sera partagé par les autres nodes. Par défaut c'est une base locale SQLite

On copie le token présent dans cat /var/lib/rancher/k3s/server/node-token

Sur les autres nœuds :

BASH
MY_TOKEN=*****
curl -sfL https://get.k3s.io | K3S_TOKEN=$MY_TOKEN sh -s - server \
    --server https://192.168.1.150:6443 

Rancher

On va installer rancher via helm qui est compris dans l'installation de k3s : https://ranchermanager.docs.rancher.com/getting-started/installation-and-upgrade/install-upgrade-on-a-kubernetes-cluster

Il manque parfois ce lien entre k3s et helm -> export KUBECONFIG=/etc/rancher/k3s/k3s.yaml

  1. On ajoute le dépôt : helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
  2. On crée le namespace : kubectl create namespace cattle-system
  3. Et on installe le helm, sans génération de certificats (c'est notre reverse proxy caddy qui s'en occupe)
    TXT
    helm install rancher rancher-latest/rancher \
    --namespace cattle-system \
    --set hostname=rancher.dsvs.ddns.net \
    --set privateCA=false \
    --set tls=external 
    

! Si on vérifie l'état du déploiement du helm : kubectl get pods -A

!! L'initialisation du mot de passe n'avait pas fonctionné, on retrouve notre mot de passe pas défaut avec !!- kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}{{"\n"}}' !!- kubectl -n cattle-system exec $(kubectl -n cattle-system get pods -l app=rancher | grep '1/1' | head -1 | awk '{ print $1 }') -- reset-password

!!! A partir de ce moment, fini le ssh sur les hotes, on utilisera exclusivement

 Longhorn

C'est le stockage partagé par les nodes, on a un disque dur de 500G sur chaque node On va l'initialiser sur chaque node

BASH
lsblk 
fdisk /dev/sda
mkfs -t ext4 /dev/sda1 
mkdir -p /mnt/longhorn
blkid 
nano /etc/fstab 
dnf install -y iscsi-initiator-utils nfs-utils

On crée le projet Longhorn et on installe l'app. Il faut définir les Values / Longhorn Default Settings / Default Data Path