Aller au contenu

Kubernetes

Introduction

Nous allons installer kubernetes

Serveurs

Hostname

Sur le cplan1

sudo hostnamectl set-hostname kcp1.gmolab.net

Sur le worker1

sudo hostnamectl set-hostname kwr1.gmolab.net

Sur le worker2

sudo hostnamectl set-hostname kwr2.gmolab.net

Sur tous

cat << EOF | sudo tee -a /etc/hosts
172.31.10.10 kcp1 kcp1.gmolab.net
172.31.10.11 kwr1 kwr1.gmolab.net
172.31.10.12 kwr2 kwr2.gmolab.net
172.31.10.13 kminio kminio.gmolab.net
EOF

Désactiver SELinux

sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sudo setenforce Permissive

Firewall

sudo systemctl stop firewalld
sudo systemctl disable firewalld

IPV6

IPV6 doit être activé pour certain déplyement

Check if ipv6 is enbled

ip a | grep inet6;if [ $? == 0 ]; then echo "ipv6 ACTIVE"; else echo "ipv6 PAS ACTIVE";fi

Danger

Si la commande ci-dessus retourne ipv6 PAS ACTIVE, il faut activé ipv6 en exécutant la procédure décrite ci-dessous (Activé IPV6)

Activé IPV6

sudo grubby --update-kernel ALL --args 'ipv6.disable=0'
sudo nmcli connection modify eth0 ipv6.method "auto"
sudo nmcli connection up eth0
sudo reboot

Docker

Installation

sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y containerd.io

Configuration

containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i "s/SystemdCgroup = false/SystemdCgroup = true/" /etc/containerd/config.toml
sudo systemctl start containerd
sudo systemctl enable containerd

Prérequis kubernetes

Désactiver le swap

sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

Chargement des modules requis

sudo cat << EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
sudo cat << EOF | sudo tee /etc/modules-load.d/iscsi_tcp.conf
iscsi_tcp
EOF
sudo modprobe br_netfilter overlay iscsi_tcp

Paramètres du kernel

sudo cat << EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.conf.all.rp_filter = 2
EOF
sudo sysctl --system

Installation de kubernetes

sudo cat << EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/repodata/repomd.xml.key
EOF
sudo dnf install -y tar iproute-tc kubelet kubeadm kubectl nfs-utils iscsi-initiator-utils cryptsetup
sudo systemctl start kubelet
sudo systemctl enable kubelet

Notes

Les packages nfs-utils, iscsi-initiator-utils et cryptsetup sont nécessaires pour longhorn

Configurer le cluster

Danger

A faire uniquement sur kcp1

sudo kubeadm config print init-defaults | tee /tmp/ClusterConfiguration.yaml
sudo sed -i '/name/d' /tmp/ClusterConfiguration.yaml

Remplacer 172.31.10.10 par l'adresse ip de votre serveur kcp1

sudo sed -i 's/ advertiseAddress: 1.2.3.4/ advertiseAddress: 172.31.10.10/' /tmp/ClusterConfiguration.yaml
sudo sed -i 's/ criSocket: \/var\/run\/dockershim\.sock/ criSocket: \/run\/containerd\/containerd\.sock/' /tmp/ClusterConfiguration.yaml

Remplacer gmo-cluster-lab par le nom que vous souhaitez donner à votre cluster

sudo sed -i 's/clusterName: kubernetes/clusterName: gmo-cluster-lab/' /tmp/ClusterConfiguration.yaml
cat << EOF | sudo tee -a >> /tmp/ClusterConfiguration.yaml
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
EOF

Créer le cluster

sudo kubeadm init --config=/tmp/ClusterConfiguration.yaml

L'opération prend quelques minutes

Copier le fichier de config

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes

Install calico

kubectl create -f https://raw.githubusercontent.com/projectcalico/calico/v3.27.3/manifests/calico.yaml

Joindre les worker au cluster

Pour connaitre la commande join à saisir, taper la commande ci-dessous

kubeadm token create --print-join-command

Copier et exécuter la commande kubeadm join sur les workers uniquement. N'oubliez pas d'ajouter un sudo devant la commande

Vérifications

kubectl get nodes
NAME              STATUS   ROLES           AGE     VERSION
kcp1.gmolab.net   Ready    control-plane   4m57s   v1.28.3
kwr1.gmolab.net   Ready    <none>          65s     v1.28.3
kwr2.gmolab.net   Ready    <none>          52s     v1.28.3
kubectl get pods -A
NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-558d465845-h42xw   1/1     Running   0          2m8s
kube-system   calico-node-c4twr                          1/1     Running   0          83s
kube-system   calico-node-pbw7s                          1/1     Running   0          96s
kube-system   calico-node-ztrm9                          1/1     Running   0          2m8s
kube-system   coredns-5dd5756b68-fp46z                   1/1     Running   0          5m20s
kube-system   coredns-5dd5756b68-s8f8q                   1/1     Running   0          5m20s
kube-system   etcd-kcp1.gmolab.net                       1/1     Running   0          5m25s
kube-system   kube-apiserver-kcp1.gmolab.net             1/1     Running   0          5m26s
kube-system   kube-controller-manager-kcp1.gmolab.net    1/1     Running   0          5m27s
kube-system   kube-proxy-5xxhf                           1/1     Running   0          83s
kube-system   kube-proxy-cw7m2                           1/1     Running   0          96s
kube-system   kube-proxy-zjrcf                           1/1     Running   0          5m20s
kube-system   kube-scheduler-kcp1.gmolab.net             1/1     Running   0          5m25s

Sources

How to Install Kubernetes Cluster on Rocky Linux
Kubernetes on Rocky 8
Kubernetes on Rocky 9
Install Calico
Kubernetes service


Version Date Change Auteur
1.2 15.12.2024 Updated kube repos (v1.32.0) and calico version (v3.27.3) GMo
1.1 21.10.2023 Updated kube repos and calico version (v3.26.3) GMo
1.0 24.11.2022 Création GMo