Skip to content
Snippets Groups Projects
Select Git revision
  • c540423bc41861eddd1e31ccacdedea824202b5a
  • main default protected
2 results

1.kubernetes_installation.md

Blame
  • CLEMENTE Damien's avatar
    CLEMENTE Damien authored
    - /kubernetes_installation.md
    - /1.kubernetes_installation.md
    - /2.worker_node_configuration.md
    adca895b
    History
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.

    Installation et Configuration d'un Cluster Kubernetes sous Debian 12

    Prérequis

    Toutes les commandes dans prerequis sont a fqire sur tous les noeuds

    1. Configuration

    • OS : Debian 12
    • Réseau : 192.168.10.0/24
    • Infrastructure : 3 VMs (1 Master, 2 Workers)
    Nom Rôle Adresse IP
    kube01 Master 192.168.10.10
    worker1 Worker 192.168.10.11
    worker2 Worker 192.168.10.12
    • Configuration de /etc/hosts sur chaque machine : exemple pour kube01
      127.0.0.1       localhost
      127.0.1.1       kube01
      192.168.10.11   worker1
      192.168.10.10   kube01
      192.168.10.12   worker2

    Cela va permettre aux machines de communiquer entre elles dans le cluster.

    2. Installation de Docker

    Sur chaque machine, exécutez :

    curl https://get.docker.com | bash

    3. Désactivation du Swap

    swapoff -a
    sed -i '/ swap / s/^/#/' /etc/fstab

    Vérification :

    free -h

    verifier si la colonne echange est bien a 0.

    4. Configuration Système pour Kubernetes

    Sur toutes les machines, exécutez :

    cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf 
    overlay
    br_netfilter
    EOF
    
    modprobe overlay 
    modprobe br_netfilter
    echo -e overlay\\nbr_netfilter > /etc/modules-load.d/k8s.conf 
    
    cat <<EOF | tee /etc/sysctl.d/99-kubernetes-k8s.conf
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1 
    net.bridge.bridge-nf-call-ip6tables = 1 
    EOF
    
    sysctl --system

    Cela va permettre de charger les modules necessaires au fonctionnement de kubernetes

    5. Installation de Containerd

    apt -y install containerd iptables apt-transport-https gnupg2 curl sudo 
    containerd config default | tee /etc/containerd/config.toml >/dev/null 2>&1
    nano /etc/containerd/config.toml 

    Il faut par la suite modifier le fichier a la ligne 61 :

    sandbox_image = "registry.k8s.io/pause:3.9"

    et ligne 125 :

    SystemdCgroup = true

    Puis redemarrer le service :

    systemctl restart  containerd.service 

    6. passer sur iptables legacy

    • Il faut passer sur la regle iptables-legacy :
    Selection    Path                       Priority   Status
    ------------------------------------------------------------
    * 0            /usr/sbin/iptables-nft      20        auto mode
      1            /usr/sbin/iptables-legacy   10        manual mode
      2            /usr/sbin/iptables-nft      20        manual mode

    6. Installation de Kubernetes (Kubeadm, Kubelet, Kubectl)

    curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
    echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] http://pkgs.k8s.io/core:/stable:/v1.30/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list
    apt update
    apt -y install kubeadm kubelet kubectl
    ln -s /opt/cni/bin /usr/lib/cni

    7. Initialisation du Cluster Kubernetes

    Sur le master (kube01) UNIQUEMENT :

    kubeadm init --control-plane-endpoint=192.168.10.10 --pod-network-cidr=10.244.0.0/16

    Post-initialisation :

    • Apres l'initiation du master, nous avons ce message qu'il faut conserver :
    Your Kubernetes control-plane has initialized successfully!
    
    To start using your cluster, you need to run the following as a regular user:
    
      mkdir -p $HOME/.kube
      sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
      sudo chown $(id -u):$(id -g) $HOME/.kube/config
    
    Alternatively, if you are the root user, you can run:
    
      export KUBECONFIG=/etc/kubernetes/admin.conf
    
    You should now deploy a pod network to the cluster.
    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
      https://kubernetes.io/docs/concepts/cluster-administration/addons/
    
    Then you can join any number of worker nodes by running the following on each as root:
    
    kubeadm join 192.168.10.10:6443 --token 9yu8eq.hluhrzkufar4s07z \
            --discovery-token-ca-cert-hash sha256:21820cff2482dda0ce25e234f5fc2e6a5d2676bd14ca08cf1c457eba2a3583b2
    

    Sur le master (kube01) UNIQUEMENT : Mise en place des droits du cluster pour l'admin :

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

    9. Installation du réseau des Pods

    Sur le master (kube01) UNIQUEMENT : Ces pods reseaux vont permettre aux containers de communiquer entre eux. Nous allons utiliser flannel : Flannel attend une ip 10.244.0.0/16.

    kubectl apply -f kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
    

    9. Ajout des Workers

    Sur chaque worker :

    kubeadm join 192.168.10.10:6443 --token <TOKEN> \
        --discovery-token-ca-cert-hash sha256:<HASH>

    Vérification :

    kubectl get nodes

    et verifier si les pods sont bien lancees :

    root@kube01:~# kubectl get pods -n kube-flannel
    NAME                    READY   STATUS    RESTARTS        AGE
    kube-flannel-ds-7x8dk   1/1     Running   11 (127m ago)   6d
    kube-flannel-ds-jwgkv   1/1     Running   7 (136m ago)    6d
    kube-flannel-ds-vfr4h   1/1     Running   10 (74m ago)    6d
    root@kube01:~#