Skip to content

Awirbl/kind-cluster

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Cluster Kubernetes WSL2

Prérequis

  • Une distribution linux avec cgroup v2 ( obligatoire )
  • 2 VCpu - 4Go de RAM
  • VSCode / Codium ou un éditeur de texte
  • helm, kubectl, kind, clusterctl, docker

Préparatifs

( Le tuto est réalisé avec ubuntu mais pour l'être avec une autre distribution, debian, fedora, alma, rocky etc ... )

  • il faut de manière impérative utiliser les cgroup v2.

cgroupv2

C'est une fonctionnalité qui permet la compartimentation des différentes appels au noyau de la machine

  • cpu/ram/disque ( notamment les limites et la segmentation des process dans des lsns )
  • droits d'accès
  • utilisation du réseau

La version 2 permet une gestion plus fine et avancée, il est recommandé en tout temps désormais pour kubernetes et docker, notamment pour la gestion cpu et ram

Lancez la commande suivante dans votre wsl :

grep cgroup /proc/filesystems

si cgroupv2 est activé vous aurez le retour suivant :

grep cgroup /proc/filesystems
nodev cgroup
nodev cgroup2

dans le cas contraire :

nodev cgroup

pour l'activer il suffit de modifier la configuration de la machine wsl

notepad %UserProfile%\.wslconfig

ajouter les lignes suivante :

[wsl2]
kernelCommandLine = cgroup_no_v1=all

fermez et redémarrer la machine wsl :

wsl --shutdown

Pour monter cgroupv2 il faut modifier le fstab :

sudo echo -e "cgroup2 /sys/fs/cgroup cgroup2 rw,nosuid,nodev,noexec,relatime,nsdelegate 0 0" | sudo tee -a /etc/fstab
sudo mount -a
grep cgroup /proc/filesystems

Le cgroup2 doit apparaitre une fois cette étape passée et docker pourra se lancer.

installation des binaires requis

  • Docker :
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
 "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
 "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
 sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  • Kubectl :
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client
### Autocomplete pour bash
sudo apt install bash-completion
echo 'source <(kubectl completion bash)' >>~/.bashrc
source ~/.bashrc
rm kubectl
  • Kind :
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
  • Helm :
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
helm version
## Autocomplete pour bash
echo 'source <(helm completion bash)' >>~/.bashrc
source ~/.bashrc
  • Clusterctl :
curl -L https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.5.1/clusterctl-linux-amd64 -o clusterctl
sudo install -o root -g root -m 0755 clusterctl /usr/local/bin/clusterctl
clusterctl version
## Autocomplete pour bash
echo 'source <(clusterctl completion bash)' >>~/.bashrc
source ~/.bashrc
rm clusterctl

Lancer et intialiser CAPI

# Enable the experimental Cluster topology feature.
kind create cluster --config kind-cluster-with-extramounts.yaml
export CLUSTER_TOPOLOGY=true
clusterctl init --infrastructure docker --addon helm

Attendre que tout soit en running

Cluster CAPI avec Cilium

kubectl apply -f capi-docker-helm.yaml
clusterctl get kubeconfig capi-docker > capi-docker.kubeconfig

utiliser kubecm pour merge le kubeconfig ou directement le faire depuis vscode

brew install kubecm
kubecm add --file capi-docker-helm.yaml
kubectx kind-capi-docker

et voila

Documents de référence

About

Quick kind cluster with cilium to test

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published