Desplegando Kubernetes 1.13 con RKE

By on

Introducción

En los próximos posts hablaremos sobre Kubernetes, el orquestador de aplicaciones contenerizadas que anda en boca de todos.

Prerrequisitos

Partimos de un conjunto de tres máquinas virtuales basadas en Ubuntu 16.04 en las que debemos instalar Docker. Las versiones compatibles de Docker las puedes consultar aquí.

Una de las máquinas tendrá el rol de Master del cluster, es decir, acogerá el servicio etcd y el controlplane. Esta máquina la hemos desplegado con 1vcpu y 1Gb de ram. En esta instalación no dispondremos de alta disponibilidad del cluster puesto que harían falta al menos 3 nodos con el rol Master para que el cluster pudiese funcionar en HA.

Las otras dos máquinas tendrán el rol de Worker, es decir, serán las encargadas de correr nuestras aplicaciones. Estas máquinas se han desplegado con 2vcpu y 4Gb de ram cada una. Es importante que los nodos worker no tengan activada la swap. Así que sólo para estos dos nodos la desactivaremos.

A continuación, el proceso de instalación de los requisitos para las tres máquinas:

Por último, y muy importante, tenemos que copiar nuestra clave pública a los distintos nodos del cluster para poder operarlo sin contraseña. Esto lo realizaremos de la siguiente forma:

Ya estamos listos para instalar el cluster.

Instalación de RKE

RKE son las siglas de Rancher Kubernetes Engine, una herramienta libre para desplegar clusters de Kubernetes certificados de la compañía Rancher. RKE nos permitirá instalar versiones 1.11, 1.12 y 1.13 de Kubernetes de forma fácil y cómoda. En próximos posts hablaremos de otras herramientas como Kubespray o kops, esta última específica para AWS.

Procedemos a instalar el binario de rke de la siguiente forma:

Ya disponemos del binario para poder instalar el cluster, ahora configuraremos las características del mismo mediante el comando rke config:

Después de este wizard que nos permite configurar el cluster a nuestro gusto, podemos revisar la configuración que ha generado antes de provisionarlo en el fichero YAML cluster.yml generado en el directorio desde donde lanzamos el comando de configuración.

Una vez revisado el fichero y comprobado que todo está bajo control procederemos a lanzar el provisionamiento:

Y con esto hemos desplegado el cluster al que aún no podemos acceder, porque nos falta una herramienta por instalar: kubectl

Kubectl

Kubectl es el cli para correr comandos contra un cluster Kubernetes. Esta herramienta busca en tu directorio de usuario en la ruta ~/.kube/ un fichero config con las credenciales de acceso al cluster. Nosotros al instalar mediante rke tenemos este fichero en nuestro directorio de trabajo bajo el nombre de kube_config_cluster.yml.

Podemos instalar kubectl de la siguiente forma:

Una vez instalado el cli de Kubernetes, podemos revisar el estado del cluster:

Como veis, nos aparece el nombre, estado, roles, tiempo de uptime y versión de nuestro cluster recién desplegado. Tenemos una cheat sheet de kubectl aquí.

Si queremos utilizar el comando kubectl sin el modificador –kubeconfig kube_config_cluster.yml basta con mover este archivo y renombrarlo como config al directorio ~/.kube/ y se utilizaría esta configuración de acceso por defecto.

En el siguiente post desplegaremos una par de aplicaciones en nuestro cluster, tanto stateless como stateful y revisaremos las distintas formas de desplegar, escalar y gestionar nuestras aplicaciones contenerizadas en un cluster Kubernetes 1.13.5.