Installa Kubernetes con kubespray

Istruzioni passo per passo

Indice

Howto: installare Kubernetes utilizzando Kubespray, inclusi l’impostazione dell’ambiente, la configurazione dell’inventario e l’esecuzione dei playbook Ansible.

i lavoratori spruzzano il cubo nell’edificio dell’antica fabbrica

Prerequisiti

Requisiti hardware e software

  • Assicurati di disporre di più macchine (almeno 3 nodi: 1 master e 2 worker) con le seguenti specifiche:
    • Installato Ubuntu 16.04/18.04 o CentOS 7.
    • Almeno 2 GB di RAM per macchina (si consiglia una quantità maggiore per cluster più grandi).
    • Connessione di rete e accesso SSH dalla macchina di controllo Kubespray a ciascun nodo.
    • Per la disponibilità elevata, considera nodi con 16 GB di RAM, 100 GB di disco e 6 core CPU.

Configurazione della macchina di controllo

  • Installa Git se non è già presente:

    sudo apt install git-all
    
  • Installa Python (2.7 o 3.5+) e pip:

    sudo apt update
    sudo apt install python3 python3-pip
    
  • Installa Ansible e altre dipendenze. Kubespray fornisce uno script per gestire questa operazione:

    git clone https://github.com/kubernetes-sigs/kubespray.git
    cd kubespray
    git checkout release-2.20  # Opzionale: checkout di una versione stabile
    python3 -m venv venv  # Crea un ambiente virtuale Python
    source venv/bin/activate  # Attiva l'ambiente virtuale
    pip install -r requirements.txt  # Installa Ansible e altre dipendenze
    

Configura l’inventario

  • Copia l’esempio dell’inventario:

    cp -r inventory/sample inventory/mycluster
    
  • Modifica il file inventory/mycluster/hosts.ini per aggiungere i tuoi nodi:

    [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
    
  • Se hai un utente diverso, sostituisci ubuntu con il tuo utente.

  • Puoi anche utilizzare lo script inventory_builder per generare il file dell’inventario:

    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[@]}
    

Personalizza la configurazione

  • Personalizza le impostazioni del cluster Kubernetes nel file inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml. Ad esempio:

    kube_network_plugin: flannel
    kubeconfig_localhost: true
    
  • Per la disponibilità elevata, configura un VIP e un load balancer:

    # In 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  # Aggiorna con l'indirizzo VIP corretto
    kube_vip_interface: eno1  # Aggiorna con l'interfaccia corretta
    

Distribuisci il cluster

  • Esegui il playbook Ansible per distribuire Kubernetes:
    ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml -b -v --become --become-user=root --private-key=~/.ssh/private_key
    

Post-distribuzione

  • Una volta completata la distribuzione, troverai un file kubeconfig nella directory inventory/mycluster/artifacts. Questo file è necessario per interagire con il tuo cluster Kubernetes utilizzando kubectl.
    export KUBECONFIG=inventory/mycluster/artifacts/admin.conf
    kubectl get nodes
    

Risoluzione dei problemi e accesso

  • Per risolvere problemi o accedere al cluster, assicurati di avere il binario kubectl installato sulla tua macchina di controllo o su qualsiasi altra macchina da cui pianifichi di gestire il cluster.
  • Se incontri problemi come nodi worker non pronti o problemi di pianificazione dei pod, controlla i log e modifica le configurazioni necessarie.