Cómo instalar el clúster de Kubernetes con Kubespray
La implementación manual del clúster de Kubernetes es un proceso muy complejo, tedioso, largo y propenso a errores. La industria exige agilidad y quiere configurar clústeres de Kubernetes lo más rápido posible. Entonces, la Comunidad ha comenzado el proyecto incubado llamado Kubespray (Kargo) bajo el paraguas de la comunidad. KubeSpray es un proyecto comunitario de Kubernetes incubado para implementar clústeres de K8 en las instalaciones o en la nube.
Kubespray se ejecuta en bare metal y la mayoría de las nubes, utilizando Ansible como sustrato para el aprovisionamiento y la orquestación. Por lo tanto, es más flexible que otras herramientas de orquestación de clústeres Kops y Kubeadm en términos de plataformas. Admite versiones de distribución de Linux específicas que son Centos 7, CoreoS (Container Linux), Ubuntu 16 y Debian Jessie. Admite los siguientes tipos de implementación de infraestructura:
- Metal básico
- Openstack
- Máquinas virtuales (KVM, Vmware, VirtualBox)
- Nubes públicas (AWS, Google Cloud, etc.)
Configuraré el clúster Baremetal Kubernetes de 3 nodos. Ya configuré tres nodos que se ejecutan en Centos 7. Ahora implementaremos el clúster de Kubernetes usando Kubespray.
Requisitos previos para Kubespray
Ansible v2.3 (o más reciente)
Para instalar el último ansible en distribuciones basadas en RPM, ejecute:
$ sudo yum install epel-release $ sudo yum install ansible
Para instalar el último ansible en distribuciones basadas en Debian, ejecute:
$ sudo apt-get update $ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa:ansible/ansible $ sudo apt-get update $ sudo apt-get install ansible
Jinja 2.9 (o más reciente)
Para instalar Jinja 2.9 o actualizar Jinja existente a la versión 2.9, ejecute:
$ easy_install pip $ pip2 install jinja2 --upgrade
Permitir el reenvío de IPv4
Puede verificar que el reenvío de IPv4 esté habilitado o deshabilitado ejecutando el siguiente comando:
$ sudo sysctl net.ipv4.ip_forward
Si el valor es 0, el reenvío de IPv4 está deshabilitado. Ejecute el siguiente comando para habilitarlo.
$ sudo sysctl -w net.ipv4.ip_forward=1
Autenticación sin contraseña entre la máquina kubespray y todos los nodos de inventario
La clave ssh de su máquina debe copiarse en todos los servidores que forman parte de su inventario. Si no sabe cómo configurar la autenticación sin contraseña entre máquinas, puede consultar el artículo ssh-login-with-public-key
Los cortafuegos no deben administrarse y los servidores de destino deben tener acceso a Internet.
Instalación de CLI de Kubespray
También puede usar kubespray sin CLI clonando su directorio repositorio de git. Lo usaremos usando CLI.
Para instalar kubespray, ejecute:
$ pip2 install kubespray
Puede verificar la versión de kubespray después de completar con éxito la instalación
$ kubespray -v
Durante la instalación, se crea un nuevo archivo «.kubespray.yml» en $ HOME. Contiene la información sobre sus credenciales de nube y varias otras opciones específicas para diferentes nubes. También se crea un nuevo directorio «.kubespray» en $ HOME. Es una réplica del repositorio kubespray git.
Configuración del archivo de inventario
Cree un nuevo archivo de inventario en ~ / .kubespray / Inventory / Inventory.cfg y agregue el contenido como se muestra a continuación.
$ vi ~/.kubespray/inventory/inventory.cfg machine-01 ansible_ssh_host=192.168.0.144 http_proxy=http://genproxy:8080 machine-02 ansible_ssh_host=192.168.0.145 http_proxy=http://genproxy:8080 machine-03 ansible_ssh_host=192.168.0.146 http_proxy=http://genproxy:8080 [kube-master] machine-01 machine-02 [etcd] machine-01 machine-02 machine-03 [kube-node] machine-02 machine-03 [k8s-cluster:children] kube-node kube-master
Aquí, estoy usando 3 nodos para el clúster. Debe configurar el archivo de inventario según su arquitectura. Cambie las IP de acuerdo con su entorno, estoy usando el servidor proxy para acceder a Internet, por lo que agregué «http_proxy = http: // genproxy: 8080» en la declaración de hosts.
Puede modificar y eliminar según sus necesidades. Estoy tratando machine-01 y machine-02 como master, machine-02 y machine-03 como nodos, mientras que las tres máquinas como servidores etcd.
Comencemos la implementación del clúster.
Implementación de clústeres de Kubernetes con Kubespray
Antes de comenzar la implementación real, veamos qué sucederá entre bastidores y cómo se ejecuta sin problemas la dolorosa tarea de instalación manual. Kubespray instalará kubernetes-api-server, etcd (almacén de valor clave), el controlador, el Programador se instalará en las máquinas maestras y kubelet, kube-proxy y Docker (o rkt) se instalarán en las máquinas nodo (minions). Todos estos componentes serán instalados y configurados por roles ansible en kubespray. Todo lo que tenemos que hacer es ejecutar un comando.
Para iniciar la implementación del clúster de kubernetes, ejecute:
$ kubespray deploy
Según la cantidad de maestros y minions, llevará tiempo implementar el clúster completo. Al final de la ejecución, obtendrá un resultado similar al que se muestra a continuación. Si no hay ninguna tarea fallida, su implementación es exitosa.
PLAY RECAP ******************************************************************** 192.168.0.144 : ok=278 changed=89 unreachable=0 failed=0 192.168.0.145 : ok=287 changed=103 unreachable=0 failed=0 192.168.0.146 : ok=246 changed=78 unreachable=0 failed=0 localhost : ok=3 changed=1 unreachable=0 failed=0
Para verificar que todo salió bien y que la implementación fue exitosa, puede iniciar sesión en el nodo maestro y obtener todo el nodo trabajador.
$ kubectl get nodes machine-02 Ready 4m machine-03 Ready 4m
Enumere los pods en todos los espacios de nombres, escriba:
$ kubectl get pods --all-namespaces NAMESPACE NAME READY STATUS RESTARTS AGE kube-system dnsmasq-7yk3n 1/1 Running 0 5m kube-system dnsmasq-5vfh0j 1/1 Running 0 5m kube-system flannel-machine-02 2/2 Running 0 4m kube-system flannel-machine-03 2/2 Running 0 4m kube-system kube-apiserver-machine-01 1/1 Running 0 5m kube-system kube-controller-manager-machine-01 1/1 Running 0 5m kube-system kube-proxy-machine-02 1/1 Running 0 4m kube-system kube-proxy-machine-03 1/1 Running 0 4m kube-system kube-scheduler-machine-02 1/1 Running 0 5m kube-system kubedns-p8mk7 3/3 Running 0 4m kube-system nginx-proxy-machine-02 1/1 Running 0 2m kube-system nginx-proxy-machine-03 1/1 Running 0 2m
Todo parece estar bien. Por lo tanto, hemos implementado con éxito el clúster de kubernetes de 3 nodos en un servidor bare metal utilizando kubespray. También se puede usar para implementar clústeres en Openstack, Vagrant y en la nube como aws, google, etc. El futuro de Kubespray parece ser muy prometedor debido a su facilidad de uso. Comparta sus pensamientos en la sección de comentarios. ¡Adiós, salud ..!
Leer también: