Administrando Kubernetes con Rancher

Kubernetes with CCSolutions.io

Rancher es una plataforma para administrar y desplegar clúster de Kubernetes en producción en cualquier proveedor tales como: Amazon, Azure, Google, OpenStack, etc. Kubernetes es el motor perfecto para la organización de contenedores. La plataforma Rancher realiza la distribución completa de Kubernetes, agregando valor en las áreas principales de operaciones y administración de clústeres, administración de workloads y soporte empresarial.

Rancher facilita al equipo de desarrollo la integración de varias herramientas para ejecutar las cargas de trabajo en contenedores, abarcando los desafíos operativos y de seguridad de los diversos clústeres de Kubernetes en cualquier infraestructura. 

En este artículo aprenderás:

  • Lo básico de Kubernetes y Rancher
  • ¿Por qué usar Kubernetes y Rancher?
  • Nuevas características de Rancher
  • Descripción general de Rancher OS
  • ¿Cómo instalar Rancher OS?
  • ¿Cómo crear y administrar Clúster de Kubernetes con Rancher?

Lo básico de Kubernetes y Rancher

Kubernetes coordina diversos grupos de máquinas de alta disponibilidad, conectadas para hacer que funcionen como una sola unidad. Las abstracciones en Kubernetes le permiten desarrollar diversas aplicaciones en contenedores situadas en un clúster sin tener que vincularlas solo a computadoras individuales. 

¿Cómo se hace uso de este nuevo modelo?
Deben estar en contenedores las aplicaciones ya se encuentra empaquetadas de manera que están separadas de los hosts individuales. El soporte y servicios para Kubernetes tienen total disponibilidad.

Rancher está completamente integrado, es muy fácil de usar ya que no solo implementa clústeres de Kubernetes en producción, sino que también los une con autenticación centralizada, control de acceso y observabilidad, permitiendo optimizar la implementación de clústeres en redes privadas o públicas y protegerlas.

¿Por qué usar Kubernetes y Rancher?

Fácil de usar: Rancher facilita la entrega de Kubernetes. Mientras que los operadores pueden establecer fácilmente un control administrativo y una observabilidad completa. 

Rápido despliegue: Su objetivo es ser una completa plataforma para poder construir un ecosistema de componentes y herramientas que hacen más fácil y rápido el despliegue, escalamiento y la administración de aplicaciones.

Conexión fácil de las APIs: Algo que es muy importante las APIs usadas por desarrolladores y usuarios finales. Se puede agregar controladores propios, por ejemplo un planificador usando sus propias APIs desde una herramienta de línea de comandos.

Optimización de Recursos: Kubernetes ofrece los elementos esenciales para construir una plataforma para desarrolladores, preservando la elección del usuario y la flexibilidad en las partes más importantes. El tipo de aplicaciones que soporta es ilimitado.

Nuevas características de Rancher

Una de las nuevas características de Rancher es que le da paso a la autenticación centralizada para todos los clústeres de Kubernetes bajo su control. Así que se puede destacar lo siguiente:

Usa las credenciales de Directorio Activo facilitando la posibilidad de acceder a los clústeres de Kubernetes alojados por los diversos proveedores de la nube, como Google Kubernetes Engine (GKE).

Configuración de las políticas de seguridad y control de acceso en todos los usuarios, grupos, proyectos y nubes. Puedes manejar un usuario de forma generalizada en todos los clústeres. Desde un solo panel de control ver el estatus y la capacidad de los clústeres de Kubernetes.

Incorpora una interfaz de usuario fácil y adaptable para que los diversos equipos de desarrollo administren la workloads de diversas aplicaciones. 

El usuario no necesariamente necesita poseer un conocimiento profundo de los conceptos de Kubernetes para comenzar a usar Rancher. ¡Se encarga de todo!

El catálogo de Rancher contiene un conjunto de útiles herramientas certificadas con una amplia selección de productos de ecosistemas nativos de la nube, por ejemplo, herramientas básicas y avanzadas de seguridad, sistemas de métricas y monitoreo, registros de todos los contenedores y controladores de almacenamiento y redes.

Rancher como fácil intermediario en las organizaciones de TI y Desarrollo se puede ver en la figura. Cada equipo implementa sus aplicaciones en la nube pública o privada. Los administradores de TI al tener mucho mayor visibilidad aplican políticas en todos los usuarios, clústeres y nubes.


Working with team in Rancher

Descripción general de Rancher OS

Infraestructura

La plataforma gestiona de forma visual las máquinas de variados clouds como AWS (Amazon), Azure (Microsoft), DigitalOcean, etc. Es decir presenta una consola visual para la administración de instancias.

La abstracción de cada cloud es una gran ventaja ya que desde un punto de vista del desarrollador ya que no necesita conocimientos avanzados para poder levantar instancias por ejemplo en Amazon o Azure.

Entornos o proyectos

Rancher permite la creación de tantos entornos como se necesite en pocos pasos. Administrar usuarios y roles para los distintos entornos.

 Aplicaciones

Ordena las aplicaciones o servicios de Rancher en Stacks; cada vez que se despliega cada aplicación previamente hay que crear un Stack.

Rancher tiene un variado catálogo de aplicaciones. Este catálogo es público, la comunidad open source puede contribuir a través del tiempo con sus aplicaciones para que todos los usuarios de la comunidad de Rancher puedan mantenerse actualizados. También ofrece la posibilidad de tener un catálogo de aplicaciones privado.

helm-application-on-rancher

¿Cómo instalar Rancher Server?

La instalación es muy fácil se hace permitiendo instalar en un host sin HA o con HA. Por ejemplo se puede instalar un host con Rancher OS sin HA. Previamente se debe de tener instalado Docker en el host.

Posteriormente se tiene un contenedor corriendo con Rancher. Básicamente quedaría ingresar al servidor desde el navegador preferente.

docker run -d --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  --privileged \
  rancher/rancher:latest

Faltaría agregar un host.

Es un proceso fácil de ejecutar. Solo se tiene que agregar los diversos host desde la consola de Rancher, con los siguientes pasos:

  1. Dentro del menú, elegir (Infrastructure > Hosts)
  2. Seguir los pasos que marca el asistente para instalación.
  3. Correr el comando en el host el cual se desea que Rancher OS administre.

¿Cómo crear y administrar clúster de kubernetes con Rancher?

Una vez instalado Docker y verificado que se encuentra el contenedor corriendo, ya debería de aparecer Rancher en el navegador.

Creación de clúster: para este caso a modo de ejemplo se han creado tres máquinas virtuales con el sistema operativo Ubuntu 16.04, donde se encuentra un master y dos nodos Worker. Es necesario tener Docker instalado en las tres máquinas.

# Update the apt package index and install packages to allow apt to use a repository over HTTPS:
$ sudo apt update
$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
# Add Docker’s official GPG key:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Verify that you now have the key with the fingerprint 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88, by searching for the last 8 characters of the fingerprint.

$ sudo apt-key fingerprint 0EBFCD88

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <[email protected]>
sub   rsa4096 2017-02-22 [S]
# Add Repository for Ubuntu x86_64 / amd64
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

Los pasos siguientes a realizar es iniciar Rancher y acceder al panel web, una vez ahí añadir el clúster, seguidamente elegir la opción (custom).

Kubernetes presenta diversos proveedores de red CNI conocido por sus siglas en inglés (Container Network Interfaces), los más conocidos son:

Flannel: es el complemento CNI más popular y sencillo que está disponible. Es uno de los ejemplos más maduros, con el objetivo principal de proveer una mejor interconexión entre contenedores e inter-host.

Calico: destaca por su rendimiento, flexibilidad y potencia. Aplica la conectividad de red entre hosts y pods, también administra la seguridad de la red.

Canal: combina características de Flannel y Calico.

Weave: crea una red de superposición de malla entre cada uno de los nodos del clúster, permitiendo un enrutamiento con mayor flexibilidad entre los que participan.

Para añadir los nodos se tiene que seleccionar cuál rol representará cada nodo y añadir en mismo comando en cada máquina. Cada nodo puede ejecutar varios pods. Con la interfaz de Rancher, facilita la creación de clústeres y nodos en un entorno dentro de Kubernetes.

Por último, empezar con la creación del clúster y al transcurrir unos minutos estará disponible, presentando la pantalla de monitoreo también permite actualizar la versión de Kubernetes.

rancher-cluster-overview

Implementación de workloads: una vez que el clúster y el nodo se encuentran listos, habilitar el primer pod en una workloads. ¿En qué consiste un pod de Kubernetes? Destaca por ser la unidad de trabajo más pequeña aplicada para Kubernetes y Rancher. 

Los pods se integran en un grupo único para las cargas de trabajo que implementan en conjunto. Es posible la ejecución de varios pods en el servidor web en una única workloads para garantizar que si un pod se ralentiza con una solicitud concreta otras instancias puedan gestionar las solicitudes entrantes. Este método es más sencillo para ejecutar el pod en cada puerto, sin embargo Rancher también incluye (Ingress) con el objetivo de proporcionar equilibrio de carga y terminación (SSL) para implementar en producción.

rancher-workload

Para escalar nodos y pods Rancher brinda dos formas de escalar los recursos de alojamiento, entre estos son: aumentar el número de pods de la workloads o aumentar el número de nodos de cualquier clúster.

Agregando más pods a la workloads aumentará la cantidad de procesos en ejecución en las aplicaciones permitiendo la gestión de mayor tráfico y habilitar implementaciones sin tiempo de inactividad, sin embargo cada nodo gestiona un número finito de pods. Si todos tus nodos alcanzaron el límite de pods, debes aumentar el número de nodos si deseas continuar con la expansión.

¿Se puede añadir más nodos?

El aumento de pods es gratis comúnmente, sin embargo tiene un costo que adicional por cada nodo que añadas al entorno brindando más capacidad de ejecutar cargas de trabajo.

Tener un número desigual de nodos de etcd garantiza que estos siempre puedan alcanzar un consenso. Si solo se tiene de un nodo de etcd, puede existir el riesgo de que no sea posible alcanzar el clúster si ese nodo se desactiva. Para implementar en producción, es recomendable ejecutar tres o cinco nodos de etcd.

Si se expanden mayor cantidad de aumentan más Droplets con el fin de distribuir las cargas de trabajo, también existe la posibilidad de que se ejecuten más instancias de cada pod por una workloads. Rancher agrega de manera automática más pods distribuyendo los contenedores en ejecución a cada nodo, estableciendo una ruta dónde haya más disponibilidad.

Conclusiones

Rancher es una excelente herramienta para la creación y mantenimiento de clústeres Kubernetes. La versatilidad de esta plataforma integrada aplica para cualquier proveedor ejemplo Google, Azure, Amazon, entre otros para desplegar la infraestructura, basta con completar los parámetros que proporcione nuestros proveedores.

Junto a nuestros amigos de República Web hablamos sobre Rancher y Kubernetes en el Episodio #157 de este interesante Podcast.

Episodio #157 junto a David Vaquero