Instale Kubernetes con kubespray

Instrucciones paso a paso

Índice

Cómo: instalar Kubernetes usando Kubespray, incluyendo la configuración del entorno, la configuración del inventario y la ejecución de los playbooks de Ansible.

los trabajadores están rociando el cubo en el antiguo edificio de fábrica

Requisitos previos

Requisitos de hardware y software

  • Asegúrate de tener varias máquinas (al menos 3 nodos: 1 maestro y 2 trabajadores) con las siguientes especificaciones:
    • Ubuntu 16.04/18.04 o CentOS 7 instalado.
    • Al menos 2 GB de RAM por máquina (se recomienda más RAM para clústeres más grandes).
    • Conectividad de red y acceso SSH desde la máquina de control de Kubespray a cada nodo.
    • Para alta disponibilidad, considera nodos con 16 GB de RAM, 100 GB de disco y 6 núcleos de CPU.

Configuración de la máquina de control

  • Instala Git si aún no está presente:

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

    sudo apt update
    sudo apt install python3 python3-pip
    
  • Instala Ansible y otras dependencias. Kubespray proporciona un script para manejar esto:

    git clone https://github.com/kubernetes-sigs/kubespray.git
    cd kubespray
    git checkout release-2.20  # Opcional: revisa una versión estable
    python3 -m venv venv  # Crea un entorno virtual de Python
    source venv/bin/activate  # Activa el entorno virtual
    pip install -r requirements.txt  # Instala Ansible y otras dependencias
    

Configurar el inventario

  • Copia el ejemplo de inventario:

    cp -r inventory/sample inventory/mycluster
    
  • Edita el archivo inventory/mycluster/hosts.ini para agregar tus nodos:

    [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 tienes un usuario diferente, reemplaza ubuntu con tu usuario.

  • También puedes usar el script inventory_builder para generar el archivo de 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[@]}
    

Personalizar la configuración

  • Personaliza la configuración del clúster de Kubernetes en el archivo inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml. Por ejemplo:

    kube_network_plugin: flannel
    kubeconfig_localhost: true
    
  • Para alta disponibilidad, configura un VIP y un balanceador de carga:

    # En 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  # Actualiza con el VIP correcto
    kube_vip_interface: eno1  # Actualiza con la interfaz correcta
    

Implementar el clúster

  • Ejecuta el playbook de Ansible para implementar Kubernetes:
    ansible-playbook -i inventory/mycluster/hosts.yaml cluster.yml -b -v --become --become-user=root --private-key=~/.ssh/private_key
    

Después de la implementación

  • Una vez completada la implementación, encontrarás un archivo kubeconfig en el directorio inventory/mycluster/artifacts. Este archivo es necesario para interactuar con tu clúster de Kubernetes usando kubectl.
    export KUBECONFIG=inventory/mycluster/artifacts/admin.conf
    kubectl get nodes
    

Solución de problemas y acceso

  • Para solucionar problemas o acceder a tu clúster, asegúrate de tener el binario kubectl instalado en tu máquina de control o en cualquier máquina desde la cual planeas gestionar el clúster.
  • Si encuentras problemas como nodos trabajadores que no están listos u otros problemas de programación de pods, revisa los registros y ajusta las configuraciones según sea necesario.

Enlaces útiles