LINUX

Cómo instalar el clúster de Kubernetes con Kubespray

instalar kubernetes 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.

Arquitectura de implementación de clúster de Kube con kubespray

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:

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar