Skip to content

Administration Avancée

Table des Matières

  1. Gestion des Utilisateurs
  2. Installation de Cluster
  3. Architectures HA et Non-HA
  4. Procédure d'Installation
  5. Maintenance des Nœuds
  6. Mises à Jour de Cluster
  7. Gestion d'ETCD
  8. Récupération d'un Membre Corrompu
  9. Sauvegarde et Restauration

Gestion des Utilisateurs

Création d'un Utilisateur avec Certificat

  1. Génération du CSR :

    openssl req -new -newkey rsa:4096 -nodes -keyout user.key -out user.csr -subj "/CN=username/O=group"
    

  2. Création de la CSR Kubernetes :

    apiVersion: certificates.k8s.io/v1
    kind: CertificateSigningRequest
    metadata:
      name: user-access
    spec:
      request: $(cat user.csr | base64 | tr -d '\n')
      signerName: kubernetes.io/kube-apiserver-client
      expirationSeconds: 86400
      usages:
      - client auth
    

  3. Approbation et Récupération du Certificat :

    kubectl certificate approve user-access
    kubectl get csr user-access -o jsonpath='{.status.certificate}' | base64 -d > user.crt
    

  4. Configuration RBAC :

    kubectl create role dev --verb=create,list,update,delete --resource=pods
    kubectl create rolebinding dev-binding --role=dev --user=username
    

  5. Création du Kubeconfig :

    kubectl config set-credentials username --client-key=user.key --client-certificate=user.crt --embed-certs=true
    kubectl config set-context username --cluster=cluster-name --user=username
    


Installation de Cluster

Architectures HA et Non-HA

  • Non-HA : Single control plane
  • HA : Multiple control planes avec load balancer (VIP)

Procédure d'Installation

  1. Prérequis Communs :

    swapoff -a
    apt-get update && apt-get install -y containerd kubelet kubeadm kubectl
    

  2. Initialisation du Control Plane :

    kubeadm init --control-plane-endpoint "VIP:6443" --upload-certs
    

  3. Configuration du Réseau :

    kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
    

  4. Joindre les Workers :

    kubeadm join VIP:6443 --token <token> --discovery-token-ca-cert-hash <hash>
    


Maintenance des Nœuds

Drain d'un Nœud

kubectl drain <node> --ignore-daemonsets --delete-emptydir-data

Réintégration

kubectl uncordon <node>

Mises à Jour de Cluster

Processus de Mise à Jour

  1. Mise à Jour de kubeadm :

    apt-get update && apt-get install -y kubeadm=1.26.0-00
    

  2. Planification et Application :

    kubeadm upgrade plan
    kubeadm upgrade apply v1.26.0
    

  3. Mise à Jour des Composants :

    apt-get install -y kubelet=1.26.0-00 kubectl=1.26.0-00
    systemctl daemon-reload
    systemctl restart kubelet
    


Gestion d'ETCD

Récupération d'un Membre Corrompu

  1. Sauvegarde :

    ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 snapshot save snapshot.db
    

  2. Réinitialisation :

    mv /etc/kubernetes/manifests/etcd.yaml /tmp
    rm -rf /var/lib/etcd/member
    

  3. Réintégration :

    kubeadm join phase control-plane-join etcd
    

Sauvegarde et Restauration

  • Sauvegarde Régulière :

    etcdctl snapshot save /backup/etcd-snapshot-$(date +%F).db
    

  • Restauration :

    etcdctl snapshot restore /backup/etcd-snapshot.db --data-dir /var/lib/etcd-new
    chown -R etcd:etcd /var/lib/etcd-new
    


Bonnes Pratiques

  • Sécurité : Rotation régulière des certificats
  • Sauvegarde : Planification de sauvegardes ETCD quotidiennes
  • Monitoring : Surveillance des ressources et des nœuds
  • Documentation : Maintien d'un journal des changements

Documentation Officielle Kubernetes
Guide de Sauvegarde ETCD