Installer Kubernetes avec Kubespray

Instructions étape par étape

Sommaire

Comment installer Kubernetes avec Kubespray : installer Kubernetes avec Kubespray, y compris la configuration de l’environnement, la configuration de l’inventaire et l’exécution des playbooks Ansible.

les ouvriers pulvérisent le cube dans l’ancien bâtiment d’usine

Prérequis

Exigences matérielles et logicielles

  • Assurez-vous d’avoir plusieurs machines (au moins 3 nœuds : 1 maître et 2 travailleurs) avec les spécifications suivantes :
    • Ubuntu 16.04/18.04 ou CentOS 7 installé.
    • Au moins 2 Go de RAM par machine (plus de RAM est recommandé pour les clusters plus importants).
    • Une connectivité réseau et un accès SSH depuis la machine de contrôle Kubespray vers chaque nœud.
    • Pour la haute disponibilité, envisagez des nœuds avec 16 Go de RAM, 100 Go de disque et 6 cœurs de processeur.

Configuration de la machine de contrôle

  • Installez Git si ce n’est pas déjà fait :

    sudo apt install git-all
    
  • Installez Python (2.7 ou 3.5+) et pip :

    sudo apt update
    sudo apt install python3 python3-pip
    
  • Installez Ansible et autres dépendances. Kubespray fournit un script pour gérer cela :

    git clone https://github.com/kubernetes-sigs/kubespray.git
    cd kubespray
    git checkout release-2.20  # Optionnel : passer à une version stable
    python3 -m venv venv  # Créer un environnement virtuel Python
    source venv/bin/activate  # Activer l'environnement virtuel
    pip install -r requirements.txt  # Installer Ansible et autres dépendances
    

Configurer l’inventaire

  • Copiez l’exemple d’inventaire :

    cp -r inventory/sample inventory/mycluster
    
  • Éditez le fichier inventory/mycluster/hosts.ini pour ajouter vos nœuds :

    [all]
    node1 ansible_host=10.10.1.3 ansible_user=ubuntu
    node2 ansible_host=10.10.1.4 ansible_user=ubuntu
    node3 ansible_host=10.10.1.5 ansible_user=ubuntu
    
    [kube-master]
    node1
    
    [kube-node]
    node2
    node3
    
  • Si vous utilisez un autre utilisateur, remplacez ubuntu par votre utilisateur.

  • Vous pouvez également utiliser le script inventory_builder pour générer le fichier d’inventaire :

    declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
    HOST_PREFIX=dcm-cp- KUBE_CONTROL_HOSTS=3 CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
    

Personnaliser la configuration

  • Personnalisez les paramètres du cluster Kubernetes dans le fichier inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml. Par exemple :

    kube_network_plugin: flannel
    kubeconfig_localhost: true
    
  • Pour la haute disponibilité, configurez un VIP et un équilibreur de charge :

    # Dans inventory/mycluster/group_vars/all/all.yml
    kube_vip_arp_enabled: true
    kube_vip_enabled: true
    kube_vip_controlplane_enabled: true
    kube_vip_address: 10.7.12.250  # Mettez à jour avec l'adresse VIP correcte
    kube_vip_interface: eno1  # Mettez à jour avec l'interface correcte
    

Déployer le cluster

  • Exécutez le playbook Ansible pour déployer Kubernetes :
    ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml -b -v --become --become-user=root --private-key=~/.ssh/private_key
    

Après le déploiement

  • Une fois le déploiement terminé, vous trouverez un fichier kubeconfig dans le répertoire inventory/mycluster/artifacts. Ce fichier est nécessaire pour interagir avec votre cluster Kubernetes à l’aide de kubectl.
    export KUBECONFIG=inventory/mycluster/artifacts/admin.conf
    kubectl get nodes
    

Dépannage et accès

  • Pour dépanner ou accéder à votre cluster, assurez-vous que le binaire kubectl est installé sur votre machine de contrôle ou sur toute autre machine depuis laquelle vous prévoyez de gérer le cluster.
  • Si vous rencontrez des problèmes tels que des nœuds travailleurs non prêts ou d’autres problèmes de planification de pods, vérifiez les journaux et ajustez les configurations si nécessaire.

Liens utiles

S'abonner

Recevez de nouveaux articles sur les systèmes, l'infrastructure et l'ingénierie IA.