Servicios gestionados de Kubernetes
Objetivos del capítulo y requisitos previos
Los capítulos anteriores se han centrado en la creación de objetos en un clúster de Kubernetes basado en Minikube.
A partir de ahora, el lector va a encontrar una descripción general de las soluciones que ofrecen diferentes actores de la nube para configurar su propia infraestructura.
Tenga en cuenta que los servicios de Google y Azure ofrecen shells, accesibles desde su portal de administración. Ni siquiera necesitará instalar ningún elemento en su estación de trabajo para dar sus primeros pasos.
En caso de que no esté interesado en una instalación en la nube, puede consultar el siguiente capítulo, que se dedicará a la configuración de un clúster en máquinas tradicionales.
Los servicios que se presentan tienen un coste. Tenga cuidado de no crear grupos demasiado grandes, ya que la factura puede subir rápidamente.
Servicio gestionado de Google: GKE
1. Presentación del servicio de Google
La plataforma en la nube de Google (Google Cloud Platform) es un conjunto de servicios que van desde la máquina virtual (con Compute Engine) hasta servicios gestionados (Cloud SQL, Cloud Storage), pasando por el serverless (Cloud Functions).
Entre estas herramientas, GKE (Google Kubernetes Engine) ofrece un servicio de gestión de contenedores basado en Kubernetes.
Tenga en cuenta que al crear una nueva cuenta, Google ofrece un bono de hasta 300 $ en crédito. Esta suma cubrirá en gran medida las necesidades de infraestructura para clústeres pequeños.
No se tratará el registro del usuario en el servicio de Google. Este registro se puede hacer directamente en línea, desde el siguiente enlace: https://console.cloud.google.com/
2. Administración desde la consola de Google
La administración de los componentes de Google se puede realizar desde el portal en línea. Introduzca la siguiente dirección en un navegador: https://console.cloud.google.com/
Una vez autenticado, es posible hacer clic en un pequeño icono, a la derecha de la barra de búsqueda en el banner azul, en la parte superior de la pantalla.
Portal de administración de los servicios de Google e iconos del shell incorporado
Haga clic en este icono y confirme la solicitud para crear un espacio de trabajo. El navegador presentará una interfaz similar a un shell clásico de Linux. Como beneficio adicional, las siguientes utilidades ya estarán presentes:
-
El comando kubectl, para la administración de Kubernetes.
-
El comando gcloud, para la administración de los servicios de Google.
Es necesario el comando gcloud para administrar los servicios de Google y se presentará en detalle más adelante.
Ejemplo de ejecución de comandos desde la consola del portal de administración de servicios de Google
3. Instalar el comando gcloud en local
a. Instalación en Debian/Ubuntu
La creación de un clúster GKE se basa en el comando gcloud. La instalación de este comando en Debian/Ubuntu se realiza ejecutando los siguientes comandos:
-
Añada la fuente del paquete:
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] \
https://packages.cloud.google.com/apt cloud-sdk main" | \
sudo...
Servicio gestionado Microsoft Azure: AKS
1. Presentación del servicio Azure
Microsoft Azure es un servicio informático en la nube ofrecido por Microsoft. El servicio se abrió el 1 de febrero de 2010 con el nombre de Windows Azure, antes de pasar a llamarse Microsoft Azure el 25 de marzo de 2014.
Esta oferta propone muchas soluciones «llave en mano», como por ejemplo:
-
crear máquinas virtuales,
-
administrar directorios de Active Directory,
-
mensajería en línea,
-
el paquete ofimático Office 365,
-
etc.
A continuación, se presenta el servicio AKS con ejemplos para su implementación.
No se tratará el registro de usuarios en el servicio de Azure. Este registro se puede hacer directamente en línea desde el siguiente enlace: https://portal.azure.com/
2. Administración desde la consola de Azure
a. Presentación de la consola
La administración de Azure se puede realizar desde el portal en línea de Microsoft.
Introduzca la siguiente dirección en un navegador: https://portal.azure.com/
Raíz del portal Azure
Una vez autenticado, para iniciar la interfaz de línea de comandos, realice las siguientes acciones:
-
Haga clic en el icono situado a la derecha del campo de búsqueda, en el banner superior.
-
Seleccione el tipo bash.
-
Confirme la creación de un espacio de trabajo en el servicio Cloud Drive.
De la misma manera que sucede para el servicio de Google, el shell que ofrece Azure contiene los comandos kubectl y az. Este último se presentará un poco más adelante y permite administrar en línea de comandos los diversos servicios de Azure.
Utilización de una línea de comandos desde el portal de Azure
b. Consultar el panel de control de Kubernetes
El panel de control de Kubernetes ya no se instala en los clústeres de forma predeterminada. Para proceder a su instalación, consulte el apartado sobre el despliegue del panel de control de Kubernetes, en los Anexos.
3. Instalación del comando az en local
Para realizar ciertas acciones, no siempre es posible pasar por el portal (la automatización de la instalación de clústeres, por ejemplo). En estos casos, es necesario instalar el comando az.
a. Instalación en Debian/Ubuntu
En Debian o Ubuntu, la instalación se realiza completando las operaciones siguientes:
-
Instalar...
Servicio gestionado de Amazon: EKS
1. Presentación del servicio Amazon AWS
Amazon es el proveedor histórico de servicios informáticos en la nube. Su oferta es muy completa, por lo que es posible gestionar muchos tipos diferentes de cargas o aplicaciones con ayuda de servicios gestionados.
El servicio Kubernetes administrado de Amazon se llama EKS (Amazon Elastic Container Service for Kubernetes).
Antes de la llegada de Kubernetes, Amazon tenía su propio container as a service: ECS (Elastic Container Service).
La creación de un clúster EKS se puede volver muy complicada rápidamente, debido a las muchas operaciones que tiene que hacer el usuario. De hecho, el servicio EKS solo administra la parte del plan de control del clúster (master control plane). El usuario es el responsable de realizar el resto de las operaciones:
-
Declaración de subredes.
-
Declaración de normas de seguridad.
-
Declaración de roles en el clúster.
-
Creación del grupo de máquinas.
-
Fijación de estos elementos.
2. Introducir el comando eksctl
La creación de un clúster de EKS requiere un buen conocimiento de Amazon. Como este libro no pretende explicar cómo funcionan los servicios de AWS, el resto de los ejercicios se basarán en una utilidad que se encargará de estas operaciones: eksctl.
Para que pueda recordarlo, esta herramienta es el resultado de la cooperación entre Weaveworks y Amazon.
Su funcionamiento está inspirado en el de kubectl, pero aplicado a la creación de clústeres de EKS.
3. Configuración de los accesos Amazon
Antes de iniciar la configuración del clúster, debe recuperar las credenciales de acceso a los servicios de AWS.
No se abordará el registro en el servicio de Amazon. Este registro se puede hacer directamente en línea desde el siguiente enlace: https://aws.amazon.com
Una vez conectado desde la interfaz del sitio de AWS, debe ir a la consola de administración de usuarios, desplazándose por las siguientes instrucciones:
-
Haga clic en el campo de búsqueda (debajo del campo Find services).
-
Escriba «IAM».
-
Haga clic en el enlace devuelto.
Búsqueda del servicio IAM
El servicio IAM soporta la creación de usuarios en la consola de Amazon. Para la automatización de la creación de recursos, se recomienda crear...
Servicio Kubernetes OVHcloud
1. Presentación de OVHcloud
OVHcloud (anteriormente OVH) es una empresa francesa especializada en el alojamiento de servidores y la provisión de acceso a Internet. Desde la década de 2010, la empresa se ha diversificado hacia los servicios informáticos en la nube.
Su servicio en la nube ofrece menos prestaciones o zonas de alojamiento que los presentados anteriormente. Por otro lado, la independencia de los GAFAM (este acrónimo designa a las empresas Google, Apple, Facebook, Amazon y Microsoft) puede ser una verdadera baza en los casos en los que la protección de datos y el cumplimiento de determinadas directivas (GDPR) es un tema importante.
Un último aspecto respecto al uso de su oferta: los costes de alojamiento son, en general, muy competitivos frente a los otros actores presentados, especialmente cuando se consumen servicios sin reserva.
No dude en consultar el capítulo Escalado automático. Una parte está dedicada a descubrir familias de máquinas y la comparación de costes de hospedaje.
2. Método de creación del clúster y requisitos previos
Inicializar un clúster de Kubernetes desde la interfaz de OVHcloud es relativamente rápido y sencillo. Por otro lado, aparte del uso de Terraform, no existen soluciones simples de automatización. Por lo tanto, el resto de la creación se realizará desde...
Acceso en modo lectura-escritura múltiple
1. Origen de la necesidad
Las clases de almacenamiento definidas de manera predeterminada en un servicio administrado generalmente son del tipo ReadWriteOnce: solo un pod a la vez puede escribir en volúmenes persistentes. En la mayoría de los casos (base de datos, middleware de mensajería), este es el comportamiento esperado y deseable.
Por otro lado, para compartir archivos entre varios pods (para configurar un espacio común, por ejemplo: recursos estáticos), es necesario tener volúmenes persistentes de tipo ReadWriteMany.
El servicio de Azure proporciona un servicio nativo para aprovisionar este tipo de volumen. Estas características se presentan más adelante en el capítulo.
De manera predeterminada, los servicios de disco de AWS y Google no brindan esta capacidad. Afortunadamente, es posible solucionar el problema de dos maneras:
-
Usando un servidor NFS externo al clúster: EFS para Amazon, Filestore para Google o un servidor dedicado de tipo NetApp.
-
Con ayuda de un servidor desplegado en Kubernetes.
Se abordará ambas técnicas. Por otro lado, en caso de desplegar un servidor NFS externo a Kubernetes, su implementación correrá a su cargo.
2. Servidor NFS desplegado en Kubernetes
a. Limitaciones
Crear un servidor NFS en Kubernetes es muy fácil, pero tiene algunas limitaciones.
En primer lugar, el servidor NFS implementado de esta forma no ofrece alta disponibilidad.
En caso de que este punto sea importante, utilice una de las siguientes alternativas:
-
Un servicio gestionado en la nube (ver un poco más adelante para Amazon y Google).
-
Un servidor NFS externo que ofrezca alta disponibilidad.
-
Un controlador que soporte accesos de tipo ReadWriteMany.
Los servicios de Azure tienen un controlador para manejar el acceso múltiple (basado en AzureFile). Consulte primero la sección que trata sobre esta implementación, en el caso de un clúster de AKS.
b. Desplegar un servidor NFS
El despliegue de un servidor NFS se realiza con el chart Helm kvaps/nfs-server-provisioner. Este chart despliega dos elementos:
-
Despliegue de un servidor NFS.
-
Declaración de una clase de almacenamiento nfs.
Dado que el pod está asociado con el funcionamiento básico del clúster, el chart se implementará en el espacio de nombres kube-system.
Otro punto importante: por defecto...