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 |