En esta serie de entradas vamos a instalar y configurar rancher y kubernetes, intentando simular un entorno lo más productivo posible, dentro de nuestras limitaciones. Para ello si nos basamos en las buenas prácticas indicadas por la propia rancher. Necesitaremos lo siguiente:
Tres nodos de linux, también conocidos como virtual machines, en una infraestructura típica como puede ser Amazon EC2, Google Compute Engine o vSphere.
Un balanceador de red, para redirigir el tráfico del frontend entre los tres nodos.
Un registro DNS para mapear la URL por el balanceador, esto mapeará la URL de rancher y los cluster de kubernetes necesitarán llegar a ella.
Para simplificar un poco las cosas utilizaremos otro servidor linux con dnsmasq y NGINX.
Algunos se preguntarán, por qué tres nodos ?
En un cluster RKE, los datos de rancher son guardados en etcd. Esta base de datos es ejecutada en los tres nodos.
La base de datos etcd requiere un número impar de nodos para que siempre pueda elegir un líder con la mayoría del clúster etcd. Si la base de datos etcd no puede elegir un líder, etcd puede sufrir una división del cerebro, lo que requiere que el clúster se restaure de la copia de seguridad. Si uno de los tres nodos etcd falla, los dos nodos restantes pueden elegir un líder porque tienen la mayoría del número total de nodos etcd.
Nuestras tres máquinas de linux contaran con las siguientes características.
Linux nodes: 2vCpu, 8GB RAM, 100GB disk
Deployment Size | Clusters | Nodes | vCPUs | RAM |
---|---|---|---|---|
Small | Up to 150 | Up to 1500 | 2 | 8 GB |
Medium | Up to 300 | Up to 3000 | 4 | 16 GB |
Large | Up to 500 | Up to 5000 | 8 | 32 GB |
X-Large | Up to 1000 | Up to 10,000 | 16 | 64 GB |
XX-Large | Up to 2000 | Up to 20,000 | 32 | 128 GB |
Aquí os dejo la relación que facilita rancher para los nodos del cluster RKE.
Si solamente queréis probar rancher podéis levantar un single node con docker, os dejo más información aquí.
Preparación del DNS y el Load Balancer
Como servidor DNS utilizaremos dnsmasq y como balanceador NGINX, sistema operativo Centos 7.
Instalamos dnsmasq , habilitamos el daemon y arrancamos el servicio
Systemctl enable dnsmasq
service dnsmasq start
Ahora en el fichero /etc/dnsmasq.conf
añadiremos las siguientes entradas al final
strict-order
expand-hosts
domain-needed
domain=sysadm.local
El programa dnsmasq tiene la peculiaridad de leer los ficheros /etc/resolv.conf
y /etc/hosts
, los registros de nuestros DNS los podemos añadir en /etc/hosts
de la siguiente manera:
192.168.1.80 ELBDNS.sysadm.local ELBDNS
192.168.1.81 rancher01.sysadm.local rancher01
192.168.1.82 rancher02.sysadm.local rancher02
192.168.1.83 rancher03.sysadm.local rancher03
Ahora instalaremos nginx, para ello añadiremos epel
yum install -y epel-release && yum -y install nginx
Arrancamos el daemon de nginx y el servicio
systemctl enable nginx && service nginx start
Para configurar NGINX con nuestros nodos de rancher aquí tenemos un fichero de configuración que nos facilita la propia rancher, solamente tendremos que sustituir los parámetros IP_NODE_X por nuestros DNS correspondientes, podéis leer la entrada aquí.
En las siguientes entradas procederemos a instalar y configurar rancher y kubernetes.
- 1-Rancher: El cluster definitivo de Kubernetes EP1
- 2-Rancher: El cluster definitivo de Kubernetes EP2 – Instalando el cluster
- 3-Rancher: El cluster definitivo de Kubernetes EP3 – Instalar rancher
En esta anterior entrada te dejo como instalar ansible, no te la pierdas!
¡Hasta la próxima!