Mostrando entradas con la etiqueta CentOS. Mostrar todas las entradas
Mostrando entradas con la etiqueta CentOS. Mostrar todas las entradas

jueves, 24 de septiembre de 2020

Instalación de Kubernetes

Hasta este punto, hemos revisado los antecedentes que dieron lugar a los Microservicios y los Contenedores en "De los Monolitos a los Microservicios". Expusimos por qué si decidimos entrar a Microservicios y Contenedores, se hace necesario el poder garantizar la "Orquestación de Contenedores". En la entrada intitulada "¿Qué es Kubernetes?" comenzamos a revisar esta maravillosa alternativa para la Orquestación de los Contenedores, para pasar a entender cuál es la "Arquitectura de Kubernetes".

En esta ocasión, hablaremos de las alternativas y herramientas que ya están disponibles para la Instalación de Kubernetes.

Comencemos pues analizando las diferentes configuraciones en las que se puede instalar Kubernetes. Luego, discutiremos sobre los requisitos de infraestructura para instalar Kubernetes y también veremos algunas de las herramientas que pueden ayudarnos con la instalación.

Los puntos a cubrir son:

  • Analizar las diferentes opciones de configuración de Kubernetes.
  • Analizar las consideraciones de infraestructura antes de instalar Kubernetes.
  • Analizar las opciones de infraestructura para una implementación de Kubernetes.
  • Revisar las herramientas y los recursos de instalación de Kubernetes.

Configuración de Kubernetes

Kubernetes se puede instalar usando diferentes configuraciones. Los cuatro tipos principales de instalación se presentan brevemente a continuación:

Instalación todo en uno de un solo nodo

En esta configuración, todos los componentes (Nodos) Maestros o Amos y Trabajadores se instalan y ejecutan en un solo Nodo. Si bien es útil para el aprendizaje, el desarrollo y las pruebas, no debe usarse en producción. Minikube es uno de esos ejemplos y lo exploraremos posteriormente.

Instalación de un solo nodo, etcd, de un solo maestro y de varios trabajadores

En esta configuración, tenemos unos Nodos Maestro o Amos únicos, que también ejecutan una instancia etcd de Nodo único. Varios Nodos trabajadores están conectados al Nodo principal.

Instalación de un solo nodo, etcd, Multi-Master y Multi-Worker

En esta configuración, tenemos múltiples Nodos Maestros o Amos configurados en modo High Abailability (HA), pero tenemos una instancia etcd de un solo Nodo. Varios Nodos Trabajadores están conectados a los Nodos Maestros o Amos.

Instalación de múltiples Nodos, etcd, Multi-Master y Multi-Worker

En este modo, etcd se configura en modo de alta disponibilidad en Clúster, los Nodos Maestros o Amos están todos configurados en modo de Alta Disponibilidad, conectándose a varios Nodos de Trabajo. Esta es la configuración de producción más avanzada y más recomendada.

Infraestructura para la instalación de Kubernetes

Una vez que decidamos el tipo de instalación, también debemos tomar algunas decisiones relacionadas con la infraestructura, como:

¿Deberíamos configurar Kubernetes en servidores bare metal, Nube Pública o Nube Privada?
¿Qué sistema operativo subyacente deberíamos usar? ¿Deberíamos elegir RHEL, CoreOS, CentOS o algún otro?
¿Qué solución de red deberíamos utilizar?

Recomendamos explorar la documentación de Kubernetes para obtener detalles sobre cómo elegir la solución adecuada. A continuación, analizaremos más de cerca estas soluciones.

Instalación en modo "localhost"

Estas son solo algunas opciones de instalación de localhost disponibles para implementar Clústeres de Kubernetes de uno o varios nodos en nuestra estación de trabajo/computadora portátil:

  • Minikube: Clúster de Kubernetes local de un solo nodo
  • Docker Desktop: Clúster de Kubernetes local de un solo nodo para Windows y Mac
  • CDK en LXD: Clúster local de varios nodos con contenedores LXD

Minikube es la forma preferida y recomendada de crear una configuración de Kubernetes todo en uno de forma local.

Instalación en modo "On-Premise"Kubernetes se puede instalar localmente en Máquinas Virtuales o en Servidores Físicos.

En Máquinas Virtuales localesKubernetes se puede instalar en Máquinas Virtuales creadas a través de Vagrant, VMware vSphere, KVM u otra herramienta de gestión de configuración (CM) junto con un Hipervisor. Hay diferentes herramientas disponibles para automatizar la instalación, como Ansible o kubeadm.

En Servidores Físicos en las instalacionesKubernetes se puede instalar en nuestros "sites" físicos, sobre diferentes Sistemas Operativos, como RHEL, CoreOS, CentOS, Fedora, Ubuntu, etc. La mayoría de las herramientas que se utilizan para instalar Kubernetes en Máquinas Virtuales también se pueden utilizar para instalaciones en Máquinas Físicas.

Instalación en La Nube

Kubernetes se puede instalar y administrar en casi cualquier entorno de nube:

Soluciones Hospedadas
Con Soluciones Hospedadas o "Hosted Solutions", el proveedor gestiona completamente cualquier software. El usuario paga los gastos de alojamiento y gestión. Algunos de los proveedores que ofrecen soluciones alojadas para Kubernetes son:

  • Google Kubernetes Engine (GKE)
  • Servicio de Azure Kubernetes (AKS)
  • Amazon Elastic Container Service para Kubernetes (EKS)
  • DigitalOcean Kubernetes
  • OpenShift dedicado
  • Plataform9
  • Servicio IBM Cloud Kubernetes

Soluciones en La Nube Llave en Mano
A continuación se muestran solo algunas de las soluciones Llave en Mano en La Nube, para instalar Kubernetes con solo unos pocos comandos en una plataforma de Infraestructura como un Servicio (IaaS) subyacente, como:

  • Google Compute Engine (GCE)
  • Amazon AWS (AWS EC2)
  • Microsoft Azure (AKS)

Soluciones llave en mano en el Site Físico (On-Premise)
Las soluciones On-Premise instalan Kubernetes en nubes privadas internas seguras con solo unos pocos comandos:

  • GKE On-Prem de Google Cloud
  • IBM Cloud Private
  • La Plataforma de Contenedores OpenShift de Red Hat

Herramientas y Recursos de Instalación para Kubernetes

Mientras discutimos la configuración de la instalación y la infraestructura subyacente, echemos un vistazo a algunas Herramientas y Recursos útiles ya disponibles:

kubeadm
Es un "ciudadano de primera clase" en el ecosistema de Kubernetes. Es una forma segura y recomendada de iniciar un clúster de Kubernetes de uno o varios nodos. Tiene un conjunto de componentes básicos para configurar el Clúster, pero es fácilmente escalable para agregar más funciones. Al momento de elegirlo, deberá tener en cuenta que kubeadm no admite el aprovisionamiento del anfitrión o hosts.

kubespray
Anteriormente conocido como kargo, es posible instalar clústeres de Kubernetes en modalidad de alta disponibilidad dentro de Amazon Web Services, Google Compute Engine, Azure, OpenStack o servidores bare-metal. Kubespray se basa en Ansible (muy del ecosistema Red Hat) y está disponible en la mayoría de las distribuciones de Linux. Es un proyecto de incubadora de Kubernetes.

kops
Con kops, podemos crear, destruir, actualizar y mantener clústeres de Kubernetes en modalidad de alta disponibilidad y a nivel de producción, desde la línea de comandos. También puede aprovisionar las máquinas. Actualmente es oficialmente compatible Amazon Web Services. El soporte para Google Compute Engine está en fase Beta, VMware vSphere en fase Alfa y se planean otras plataformas para el futuro. Puede explorar el proyecto kops para obtener más detalles.

kube-aws
Con kube-aws podemos crear, actualizar y destruir clústeres de Kubernetes en Amazon Web Services utilizando línea de comandos. Kube-aws también es un proyecto de incubadora de Kubernetes.

Si cualquiera de estas soluciones y herramientas existentes no se ajustan a nuestros requerimientos, podemos instalar Kubernetes desde cero que, aunque parece una altenativa anticuada, sigue siendo una solución válida.

Vale la pena consultar el proyecto Kubernetes "The Hard Way GitHub" de "Kelsey Hightower", que comparte los pasos manuales involucrados en el arranque de un clúster de Kubernetes.

¿Qué es entonces lo que sigue? Analizar herramientas de instalación como Minikube, Autentificación-Autorización y Control de Acceso, Servicios, Aprovisionamiento de Aplicaciones y más.

Vale la pena agregar que todo esto que estamos compartiendo a través de este Blog Tecnológico es sólo una Introducción al tema de Kubernetes. No debe de ser visto o tomado como un sustituto de cualquier curso oficial referente a este tema.