On 9/25/2019 8:31 AM, Mike the Wolf wrote:
El martes, 24 de septiembre de 2019 16:40:56 CDT, Eriel Perez escribió:
Hola colegas.
Alguien aqui ha trabajado con kubernetes? lo ha implementado?
Tengo algunas dudas.
Gracias.
Date una vuelta por aca https://www.okd.io/#v3
_______________________________________________
Gutl-l mailing list -- gutl-l@listas.jovenclub.cu
To unsubscribe send an email to gutl-l-le...@listas.jovenclub.cu
Encontre un articulo muy bueno que me esclarecio algunas dudas. Aqui las
comparto con la lista.
-----1------ (https://openwebinars.net/blog/docker-kubernetes-y-openshift/)
Docker, Kubernetes y OpenShift
¿Quieres aclarar conceptos sobre Cloud Computing y sobre las tecnologías
que se utilizan? Aquí te contamos los aspectos más importantes sobre
contenedores y las tecnologías Docker, Kubernetes y OpenShift.
Contenedores
Los contenedores es un término que está muy de moda en los últimos
tiempos, y lo que nos permiten es tener una partición aislada dentro de
un sistema operativo. Es algo parecido a una máquina virtual, pero mucho
más liviano, porque un contenedor suele partir el núcleo del sistema
operativo con los demás contenedores.
*El uso de contenedores tiene una serie de ventajas que queremos destacar:*
* *Cada aplicación está aislada y se va a ejecutar en un contenedor*,
por lo que cada una tiene su conjunto de librerías y la
actualización de un contenedor no afecta.
* *Se tiene un menor tamaño de hardware*, porque, como hemos dicho,
son más livianos que un sistema operativo virtualizado, que una
máquina virtual que tiene todas las características de una máquina
completa, y los contenedores comparten normalmente el núcleo de
sistema del sistema.
* *La implementación es muy rápida*, porque al ser tan liviano, el
inicio, la parada y la actualización de los contenedores se hace una
manera muy ágil.
* *Minimiza el impacto frente a cambios*, ya que al tener cada
aplicación en un contenedor, si una aplicación cambia y hay que
actualizarla, no afecta a las demás.
Docker
*Docker es una tecnología que nos permite trabajar con contenedores*,
más en concreto con un tipo de contenedores llamados contenedores de
aplicación, que están especializados en implantación de aplicaciones web.
Es una virtualización ligera, como comentamos anteriormente, con la que
se aprovecha mejor el hardware, y el contenedor finalmente es un sistema
de archivos mínimo para que la aplicación funcione.
* *El contenedor es autosuficiente*, solo se necesita una imagen para
crearlo el contenedor.
* De una forma muy simple podríamos entender una imagen como *“un
sistema operativo con las aplicaciones ya instaladas”*.
* El proyecto Docker nos ofrece un repositorio con imágenes con las
que podemos trabajar, llamado *Docker Hub*.
* Otro aspecto muy importante es que *un contenedor suele ejecutar un
solo proceso*. Por ejemplo, si tenemos una base de datos es un
contenedor, si tenemos una aplicación con PHP es un contenedor con
un servidor web.
Componentes de Docker
De forma muy básica podemos diferenciar varios componentes en Docker:
* *Docker Engine*: Es un demonio Docker y es el responsable de
ejecutar los contenedores. Corre sobre cualquier distribución de
Linux y expone una API externa para la gestión de imágenes y
contenedores.
* *Docker Client*: Es el cliente de línea de comando (CLI) que nos
permite interactuar con el Docker Engine. Se puede configurar para
trabajar con un Docker Engine local o remoto.
* *Docker Registry*: Es el repositorio de imágenes generadas por el
Docker Engine, y nos permite distribuir nuestras imágenes. Podemos
instalar un registro privado, o hacer uso de uno público como Docker
Hub.
Kubernetes
*Docker nos permite la ejecución de contenedores y trabaja en un
servidor*, por lo que nos lo interesante sería tener un clúster de
servidores donde los contenedores se fueran ejecutando en distintos
servidores, y que además hubiera un control de esos contenedores. Aquí
es donde aparece Kubernetes.
*Podemos definir Kubernetes como un orquestador de contenedores*, ya que
es el responsable de que los contenedores que vamos a tener estén
conectados pero se ejecuten en distintos en distintos nodos.
Está escrito en Go y originalmente fue un proyecto de Google, pero que
rápidamente pues se alió con la Linux Foundation para crear una nueva
fundación llamada Cloud Native Computing Foundation (CNCF), donde ahora
mismo se desarrolla el proyecto.
Es un proyecto muy reciente, ya que comenzó en 2015, pero está en pleno
auge y cada vez se utiliza más.
Ventajas de Kubernetes
Las principales ventajas que ofrece Kubernetes son:
* *Tolerancia a fallos*: asegura que el servicio y los contenedores
siempre están en ejecución.
* *Escalabilidad dinámica*: permite escalar de forma sencilla los
contenedores.
* *Actualizaciones continuas*: se puede actualizar las versiones de
forma fácil.
* *Despliegues automáticos.*
* *Enrutamiento a nuestras aplicaciones*: permite enrutar y tener
nombres de dominio o de máquinas para acceder.
* *Balanceo de carga*: balancea la carga entre los distintos contenedores.
* *Volúmenes persistentes*: al igual que en Docker, los contenedores
tienen una característica que es que la información que tienen es
efímera, es decir, se pierde, por lo tanto son necesarios mecanismos
de volúmenes externos para guardar la información de la aplicación.
OpenShift
*Kubernetes es un proyecto que se puede utilizar por sí mismo*, y están
surgiendo muchos productos que se basan en él, siendo OpenShift uno de
ellos.
*OpenShift es un producto que internamente utiliza Kubernetes*, que lo
que hace es mejorar la funcionalidad del mismo introduciendo nuevas
características.
Es la plataforma de desarrollo, con características de Cloud Computing
en la capa de Plataforma como Servicio (PaaS), de Red Hat.
La Plataforma como Servicio de Cloud Computing ofrece la posibilidad a
un desarrollador de tener una infraestructura donde colocar su
aplicación con características de Cloud Computing, como la escalabilidad
o el pago por uso, es decir, se usan más o menos recursos en función de
las necesidades, y se paga según se consuman más o menos recursos.
*OpenShift permite que el desarrollador se centre en el desarrollo de
aplicaciones y que no tenga que saber cómo funciona internamente Docker
y Kubernetes*, ya que le permite desplegar aplicaciones de una manera
muy sencilla con la funcionalidad y las ventajas de tener un sistema
como Kubernetes, que internamente facilita esta implantación.
Se puede utilizar en la integración continua del desarrollo de una
aplicación, para terminar implantando la aplicación en OpenShift.
Podemos trabajar con OpenShift con una aplicación web o con cliente de
línea de comandos.
Principal diferencia de OpenShift con Kubernetes
La novedad más importante que diferencia a OpenShift de Kubernetes es
que *las imágenes Docker que se utilizan en Kubernetes las tenemos que
generar nosotros, mientras que OpenShift tiene la característica de
source2image*, que a partir de un repositorio con nuestro código, es
capaz de crear una nueva imagen Docker de forma automática y es la que
va a utilizar internamente.
Por lo tanto el desarrollador se centra en su desarrollo, tiene el mismo
en un repositorio GitHub e internamente OpenShift es capaz de, a partir
de una imagen base de un lenguaje de programación, extraer el contenido
de este repositorio y crear una nueva imagen.
Ventajas que ofrece OpenShift
OpenShift tiene las mismas ventajas que el uso de Kubernetes que vimos
anteriormente, pero además ofrece algunas ventajas adicionales:
* Gestión más sencilla de proyectos y usuarios.
* Conjunto de imágenes base con el que podemos trabajar.
* Asignación de forma automática de las rutas para acceder a la
aplicación.
* Gestiona de forma sencilla los volúmenes.
* Se puede incluir en un flujo de integración continua y entrega continua.
* Tiene ya incluidas herramientas de métricas y monitorización.
Conclusiones
Tras todo lo visto anteriormente ya te puedes hacer una idea de cómo
funciona el ecosistema del trabajo con contenedores:
* Lo más básico de trabajar con Docker, que trabaja con contenedores
en una máquina.
* Posteriormente con Kubernetes, que gestiona los contenedores que se
ejecutan en un conjunto de máquinas.
* Y OpenShift se puede decir que es una versión mejorada de
Kubernetes, que añade la posibilidad de que un desarrollador, sin
conocimientos de Docker y Kubernetes, pueda utilizar las ventajas de
Kubernetes en un sistema sencillo.
----2----(https://openwebinars.net/blog/kubernetes-vs-openshift/)
Kubernetes vs OpenShift
Conoce las principales diferencias que existen entre Kubernetes y
Openshift, dos tecnologías que han cobrado gran importancia en los
últimos tiempos.
Vamos a ver tanto las similitudes como las diferencias que existen entre
ambos proyectos.
*Kubernetes es un gestor de contenedores*, que permite gestionar los
contenedores que se ejecutan en un clúster de ordenadores.
OpenShift, que trabaja internamente con Kubernetes, es la plataforma de
desarrollo de la empresa Red Hat, que tiene características de Cloud
Computing en la capa de Plataforma como Servicio o PaaS, y añade nuevas
funcionalidades que Kubernetes no tiene.
Proyecto vs producto
La primera diferencia entre ambas tecnologías es que podemos entender
Kubernetes como un proyecto de código abierto, mientras que OpenShift es
un producto.
Realmente se puede decir que OpenShift es una distribución certificada
de Kubernetes, de las muchas que existen, que podemos ver en esta página:
https://www.cncf.io/certification/software-conformance/#logs
*OpenShift también tiene una versión que es de código abierto, que se
conoce como OKD o como OpenShift Origin*. Para instalar esta versión
necesitamos tener como sistema operativo Red Hat Linux o CentOS, sin
embargo Kubernetes se puede instalar en cualquier distribución de Linux.
Seguridad
En cuanto a la comparación sobre seguridad,*OpenShift por defecto tiene
políticas de seguridad más estrictas que la de Kubernetes*.
Esto a veces plantea ciertos problemas, porque la mayoría de las
imágenes Docker de contenedores disponibles, por ejemplo en Docker Hub,
que es el repositorio oficial de Docker, no se pueden ejecutar en
OpenShift, porque no permite ejecutar ciertas imágenes como root.
La gestión de autorización de recursos, que se hace por medio de RBAC
(Control de Acceso Basado en Roles), se puede deshabilitar en
Kubernetes. Esto no es apropiado si tenemos un Kubernetes en producción,
pero en OpenShift no podemos deshabilitar las reglas de autorización.
Build
Sobre la construcción de imágenes, *Kubernetes trabaja con imágenes de
contenedores, pero esas imágenes las debemos crear nosotros o utilizar
un software adicional que automatice esa creación*, pero Kubernetes por
si solo no puede crear imágenes de contenedores.
Sin embargo, en OpenShift, al estar pensada para desarrolladores que no
te necesitan conocer en profundidad cómo funcionan los contenedores y
como funciona Kubernetes, *tiene diversos métodos de construcción de
imágenes*, como por ejemplo desde un Dockerfile o con la característica
soucer2image.
Gestión de las imágenes
*OpenShift mejora la gestión de las imágenes con un nuevo recurso
llamado ImageStream*, que mejora el recurso Image de Kubernetes.
Con OpenShift es más fácil trabajar con las etiquetas de las imágenes, y
además tiene un sistema que detecta la versión de la imagen ha cambiado,
porque tiene una nueva etiqueta, lanza un despliegue de forma automática
para implantar la nueva versión de la aplicación.
Ingress vs Routers
*En Kubernetes tenemos el recurso Ingress*, que nos permite asociar una
ruta a nuestra aplicación. En OpenShift se le ha cambiado el nombre y la
implementación y se conoce como Routers.
*En OpenShift se utiliza internamente un proxy inverso HAProxy*,
mientras que en Kubernetes el recurso Ingress lo podemos implementar con
distintas soluciones, ya sea con un proxy inverso nginx, con Traefick o
con otras soluciones.
Se podría decir que las rutas de OpenShift, porque se lleva trabajando
más tiempo que el proyecto Kubernetes en el tema de asignación de ruta,
es más madura, pero también hay que decir que el recurso Ingress de
Kubernetes las últimas versiones está evolucionando de una manera muy
positiva.
Ingress vs Routers
Finalmente compararemos los mecanismos que utilizan estas tecnologías
para crear el conjunto de recursos para que una aplicación funcione.
Por ejemplo, si necesitamos instalar un WordPress, necesitaremos una
base de datos y un despliegue de WordPress, por lo que van a ser
contenedores distintos y deben ser persistentes, por lo tanto hay que
crear también volúmenes para que la información no desaparezca.
*Todos los recursos que se crean para instalar una aplicación se pueden
empaquetar.*
Kubernetes normalmente utiliza una herramienta, llamada Helm, para
empaquetar todos los recursos que nos permiten implantar una aplicación,
sin embargo OpenShift utiliza un recurso que se llama Template.
En esta caso podemos decir que *Helm de Kubernetes es mucho más flexible
y permite muchas más funcionalidades que los Templates de OpenShift*.
La versión actual de Helm, utilizando un componente que se llama Tiller,
que se ejecuta en un pod que debe tener muchos privilegios, es
incompatible con la política de seguridad de OpenShift, y por lo tanto
optaron por utilizar otro mecanismo para empaquetar las aplicaciones.
Conclusión
Como conclusión podemos decir que *OpenShift es una distribución de
Kubernetes que mejora ciertos aspectos y añade nuevas funcionalidades*,
pero que aprovecha todas las ventajas de la implantación de aplicaciones
en un clúster de servidores como las que ofrece Kubernetes.
Con Kubernetes se necesita un equipo de sistemas para que mantenga el
clúster, mientras que OpenShift está claramente centrado en el
desarrollador, para que no necesite conocer en profundidad los conceptos
de contenedores y orquestadores de contenedores, y se centre en el
desarrollo de la aplicación, y de forma sencilla sea capaz de implantar
su aplicación en un entorno de Cloud Computing, que internamente utiliza
Kubernetes.
_______________________________________________
Gutl-l mailing list -- gutl-l@listas.jovenclub.cu
To unsubscribe send an email to gutl-l-le...@listas.jovenclub.cu