CoreOS Tectonic: Contenedor Linux, Quay.io, rkt, & etcd

Distribución ligera de Linux para clústeres de servidores web nativos de Kubernetes & Aplicaciones SaaS

CoreOS, la compañía de desarrollo de software en la nube que administra la distribución Container Linux, lanzó recientemente la versión 1.64 de Tectonic (31/05/2017) que proporciona una manera rápida y fácil de implementar un clúster de Kubernetes para soporte de aplicaciones web / móviles en AWS o red de servidor en la nube alojada. Core OS tiene más de 100 proyectos de software de código abierto en desarrollo de la compañía en GitHub, incluidos los operadores etcd, flannel, rkt, Ignition, Clair, Matchbox, dex y prometheus. Tectonic es de uso gratuito para clústeres de Kubernetes de hasta 10 nodos, después de lo cual hay varios centros de datos empresariales diferentes., & Las licencias comerciales están disponibles con soporte técnico profesional. Quay.io es otro producto SaaS en la nube ofrecido por CoreOS bajo licencia patentada que ayuda a los equipos de DevOps a administrar instantáneas de contenedores con Docker o rkt, clústeres de Kubernetes, Container Linux, & CoreOS Tectonic en producción a escala. Quay.io incluye características de administración de instantáneas de contenedores con seguridad integrada, análisis, facturación, monitoreo, compilaciones de repositorios, copias de seguridad automatizadas y control de versiones para software de pila de servidor web con soporte avanzado de GitHub, Bitbucket o Gitlab (Dockerfile Build Triggers).


Distribución ligera de Linux para clústeres de servidores web nativos de Kubernetes y aplicaciones SaaS

CoreOS es una de las compañías de software líderes en el desarrollo de nuevas soluciones de nube de código abierto en Linux y Alex Polvi (CEO), Brandon Philips (CTO) y Michael Marineau iniciaron la empresa en 2013 en un garaje de Palo Alto, California. Polvi había vendido su compañía Cloudkick a Rackspace en 2010 y luego formó Core OS con Philips (ex desarrollador de kernel SUSE Linux & Programador en la nube Rackspace) & Marineau (de Google). El objetivo original de la compañía era esencialmente construir una distribución liviana de Linux para contenedores que replicara lo que Google había estado operando en sus centros de datos con "Borg". En ese momento, Kubernetes aún no se había lanzado públicamente o de código abierto, pero después de 2014/15 cuando la Fundación Linux asumió el gobierno de la plataforma Kubernetes, CoreOS ha desempeñado un papel importante en la Cloud Native Computing Foundation (CNCF) a fin de que “ayudar a facilitar la colaboración entre desarrolladores y operadores en tecnologías comunes.” Posteriormente, Google también lanzó Google Container Engine para Kubernetes y Docker (GKE) con el uso de ambos estándares adoptados en las plataformas de la competencia en la nube en AWS, Azure, OCP, VMware, RHEL, etc. Casi todas las principales empresas de software en la nube tienen un Kubernetes solución de servidor web de clúster en 2017 con el uso generalizado de etcd & Software rkt de CoreOS (CloudFoundry, Fedora, ArchLinux). CoreOS Tectonic compite en gran medida con GKE, RancherOS, Docker Swarm, o con Kubespray como opción de nube híbrida autohospedada para la gestión de clústeres de servidores web en modo independiente ("vendedor independiente") hardware del centro de datos.

Distribución ligera de Linux para clústeres de servidores web nativos de Kubernetes y aplicaciones SaaS

CoreOS Container Linux fue desarrollado para satisfacer las necesidades descritas en el famoso artículo de investigación publicado por Google en 2013 conocido como "El centro de datos como computadora: una introducción al diseño de máquinas a escala de almacén." (Barroso, Clidaras, & Hölzle) Este documento esbozó los principios detrás de la concepción de la infraestructura del centro de datos en el modelo de nube en lugar del diseño de servidor único. Con hardware básico y millones de servidores en implementaciones empresariales, los administradores de la red en la nube deben planificar la inevitable CPU, RAM, & otra falla de hardware del sistema. Las copias de respaldo múltiples y la veracidad de cada una en casos de falla de la unidad es una parte importante del almacenamiento RAID donde los mismos principios se aplican a los servidores en la nube en clusters elásticos a través del Teorema CAP & Algoritmo de Paxos. CoreOS resolvió estos problemas con etcd permitiendo actualizaciones de clústeres de Kubernetes mediante autoactualización & Reparación de procesos que envían actualizaciones asincrónicas coordinadas a los servidores mediante bloqueos de reinicio. Esto permite la aplicación más fácil de actualizaciones masivas de parches de seguridad en un centro de datos en un gran número de servidores de montaje en bastidor a la vez. etcd tiene mejores aplicaciones de almacenamiento para guardar la configuración, claves privadas, cambios de contraseña y otras variables de entorno para servidores web en caso de falla de hardware que lo ha convertido en un estándar importante en la industria en todas las plataformas en términos de licencias de código abierto. etcd es utilizado por Google (CFS, GFS, Big Table, Chubby, Spanner), Amazon (E2 Replicated Logs), Microsoft (Boxwood), Hadoop (ZooKeeper) y muchas otras compañías de software en la nube para resolver el problema de Paxos en la elección de líderes , fragmentación del servidor web, pérdida de claves de cifrado privadas, & otras variables de configuración con falla de hardware del centro de datos. Estibador & Los contenedores rkt aíslan el código de la aplicación web / móvil, incluida la entrada ejecutada por el usuario desde el sistema operativo de hardware para una mejor seguridad general de los datos aislados en la nube.

Video de demostración: Brandon Philips (Linux Conference 2015 – Auckland, NZ)

CoreOS: una introducción – "Los patrones arquitectónicos de una plataforma a gran escala están cambiando. Las máquinas virtuales dedicadas y las herramientas de administración de configuración están siendo reemplazadas por la contenedorización y nuevas tecnologías de administración de servicios como systemd. Esta presentación brindará una descripción general de sus tecnologías clave, incluyendo etcd, flota y docker. Venga y aprenda cómo usar estas nuevas tecnologías para construir sistemas distribuidos grandes, confiables y de alto rendimiento.." Aprenda más sobre CoreOS, Kubernetes, & Contenedor Linux

Es importante comprender las diferencias entre los contenedores de aplicaciones y los contenedores del sistema que funcionan como una VM, como VPS que opera bajo plataformas OpenVZ, KVM, Xen, Parallels, VMware, etc. Los contenedores proporcionan un hipervisor de virtualización alternativo que se puede utilizar para crear soluciones orientadas a objetos en varias capas de un centro de datos mediante el uso de particiones aisladas. Los VPS / VM se pueden instalar y escalar en grupos elásticos dentro de contenedores y viceversa. La combinación de configuraciones de contenedores con la amplia variedad de otras plataformas de virtualización disponibles en el mercado se puede utilizar para crear soluciones complejas para proveedores de TI empresariales, SaaS / PaaS / IaaS, aplicaciones de software móvil y empresas de alojamiento web. La mayoría de las soluciones de contenedores no incluyen el SSH dedicado & herramientas de red características de las instancias de VPS o VM, pero esto es parte de lo que lleva a los contenedores de aplicaciones utilizados en la producción a basarse en las distribuciones de Linux más livianas disponibles. La práctica actual en DevOps es incluir la pila de Linux completa para la capa superior de código en la producción incluida con todas las extensiones de servidor específicas requeridas por la web & aplicaciones móviles a través de paquetes de compilación o binarios. La forma única en que los contenedores Docker y rkt utilizan el kernel de Unix y la API de Unix conduce a una combinación de aislados & espacios de nombres globales que se pueden usar para asignar variables de configuración dentro / fuera de los contenedores para un mejor consumo de recursos aislados en el hardware del servidor web en los centros de datos.

Distribución ligera de Linux para clústeres de servidores web nativos de Kubernetes y aplicaciones SaaS

rkt con CoreOS, Fedora, ArchLinux, & NixOS – "La unidad central de ejecución de rkt es el pod, una colección de una o más aplicaciones que se ejecutan en un contexto compartido (los pods de rkt son sinónimos del concepto en el sistema de orquestación de Kubernetes). rkt permite a los usuarios aplicar diferentes configuraciones (como parámetros de aislamiento) tanto a nivel de pod como a nivel más granular por aplicación. La arquitectura de rkt significa que cada pod se ejecuta directamente en el modelo de proceso clásico de Unix (es decir, no hay un demonio central), en un entorno autónomo y aislado. rkt implementa un formato contenedor moderno, abierto y estándar, la especificación App Container (appc), pero también puede ejecutar otras imágenes contenedor, como las creadas con Docker." Obtenga más información sobre el motor de contenedores rkt

Distribución ligera de Linux para clústeres de servidores web nativos de Kubernetes y aplicaciones SaaS

Construir & Implementar contenedores a escala: "Use Quay.io para automatizar sus compilaciones de contenedores, con integración a GitHub, Bitbucket y más … Quay escanea continuamente sus contenedores en busca de vulnerabilidades, brindándole una visibilidad completa de los problemas conocidos y cómo solucionarlos.." Aprenda más sobre Quay.io

Video de demostración: Kelsey Hightower (CoreOS Workshop 2015 – Geekdom, SF)

Orquestación de contenedores con CoreOS y Kubernetes – "Este taller práctico … enseñará prácticas modernas para la orquestación de contenedores y mostrará ejemplos de cómo los componentes trabajan juntos para administrar un clúster de contenedores de Linux. Con su capacidad para impulsar la infraestructura en la nube o en el metal desnudo, la sesión utilizará Kubernetes con CoreOS como un ejemplo que muestra a los asistentes cómo implementar y administrar una aplicación web de varios niveles." Aprenda más sobre CoreOS & Kubernetes

Según Kelsey Hightower, un conocido evangelista de Kubernetes que ha trabajado en Google & CoreOS, Kubernetes no compite con CloudFoundry, Heroku u OpenDeis como "camino completo" para DevOps y soluciones de alojamiento en la nube en producción. Más bien, es un marco de virtualización que se especializa principalmente en la gestión de contenedores, la programación y el descubrimiento de servicios en el que muchas empresas competidoras de PaaS / SaaS pueden construir nuevas soluciones de código abierto con una mayor interoperabilidad multiplataforma y portabilidad de datos entre proveedores de alojamiento en la nube. El descubrimiento de servicios de Kubernetes se relaciona principalmente con el monitoreo y la regulación del número de nodos de servidor en un clúster elástico y el uso de etcd para la sincronización entre copias con actualizaciones de cambio de estado. A diferencia de Docker, que usa direcciones IP compartidas para contenedores, Kubernetes proporciona una dirección IP única para cada pod mientras mantiene la comunicación entre todos los nodos del servidor en una red. Las direcciones IP únicas desacoplan el código de la aplicación web / móvil del sistema operativo contenedor subyacente, lo que permite que cualquier extensión de lenguaje de programación, plataforma de servidor web o pila personalizada se ejecute en producción que se integra con herramientas de publicación continua o control de versiones en DevOps. Otras alternativas a Docker & Los contenedores rkt son:

  • LXC
  • Jardín de fundición en la nube
  • Contenedor Mesos
  • systemd-nspawn
  • Google lmctfy (difunto)

Programación de trabajos, descubrimiento de servicios, & La administración de clústeres son los aspectos principales de la arquitectura del centro de datos que los contenedores mejoran para las redes de servidores web. Antes de los avances en CoreOS, RancherOS y otras soluciones de Container Linux, los programadores en la primera etapa del alojamiento en la nube usaban scripts Chef / Puppet para compartir instantáneas de construcción para instalaciones automatizadas de contenedores a escala. Los contenedores hacen que sea más fácil admitir aplicaciones Python, Java, Nginx, MySQL, OpenSSL, etc. de múltiples inquilinos en tiempo de ejecución. Los contenedores también abren una mayor flexibilidad para que los desarrolladores mantengan el código activo entre las actualizaciones de la plataforma de extensión para mantener los servidores web parcheados al tiempo que aseguran que las actualizaciones de seguridad no rompan el código de producción. Debido a que esto es proverbialmente difícil en la práctica, el principio de Container Linux es mantener el sistema operativo simple. Al mantener solo la seguridad del kernel y nunca romper la API del kernel en Linux, los contenedores pueden ejecutarse en el espacio del usuario con todas las extensiones & herramientas aisladas con una mayor seguridad general en la gestión de redes de múltiples inquilinos.

Distribución ligera de Linux para clústeres de servidores web nativos de Kubernetes y aplicaciones SaaS

CoreOS Container Linux – "Kubernetes es un poderoso software de administración de contenedores inspirado en Google’s experiencia operativa con contenedores. Se incorporan características esenciales como descubrimiento de servicios, equilibrio de carga automático, replicación de contenedores y más. Además,’Todos funcionan a través de una API HTTP … Los contenedores de Linux proporcionan numerosos beneficios tanto para los desarrolladores de aplicaciones como para los equipos de operaciones. Container Linux solo permite que el software se instale como contenedores, que es una capa de abstracción importante entre el sistema operativo y las aplicaciones (y dependencias) que se ejecutan en la parte superior." Obtenga más información sobre Container Linux

Video conceptual: etcd v 3 – Brandon Philips (CTO / Cofundador CoreOS)

Balsa: Protocolo de consenso distribuido – "etcd está escrito en Go, que tiene un excelente soporte multiplataforma, pequeños binarios y una gran comunidad detrás de él. La comunicación entre máquinas etcd se maneja a través del algoritmo de consenso Raft." Aprenda más sobre el Raft DCP

El sistema Kubernetes permite que se usen diferentes componentes en los niveles de clúster de nodos del servidor web de autoescalado, por ejemplo, usando Terraform, Fleet (similar al Sistema D), Mesos, CoreOS Tectonic, Docker Swarm, etc., donde etc. similar a Locksmith), que coordina los cambios de estado de los cambios de entrada de variables de usuario a través de clústeres elásticos con muchos procesos de ejecución simultánea de forma aislada. Marioneta & Las secuencias de comandos del chef también se pueden implementar. De esta manera, los administradores de sistemas pueden establecer parámetros tales como ejecutar 100 instancias de una aplicación SaaS (sitio web o aplicación móvil) con 1 GB de RAM y el programador de Kubernetes mantendrá los niveles en los recursos del sistema, como un termómetro que amplía los servidores y apaga los nodos según lo requiera el estado de la red. Debido a esto, no se recomienda utilizar compilaciones grandes con muchos archivos estáticos almacenados en los servidores web replicados basados ​​en contenedores, lo que lleva a una mayor funcionalidad de almacenamiento en la nube basada en API que todos los servidores web de nodo elástico pueden utilizar según lo requieran las solicitudes de tráfico https . Esto también permite que los mecanismos de descubrimiento de servicios (SkyDNS, discoverd, Confd, proxies mágicos, etc.) relacionen la geolocalización del usuario de las solicitudes del navegador en redes públicas para un mejor equilibrio de carga, así como la creación de nuevas soluciones para el almacenamiento en caché interno de archivos de proxy inverso en centros de datos para mejor rendimiento de alojamiento web.

Distribución ligera de Linux para clústeres de servidores web nativos de Kubernetes y aplicaciones SaaS

Dockerfile Build en la nube – "¿Le gusta usar Dockerfiles para construir sus imágenes? Simplemente cargue su Dockerfile (y cualquier archivo adicional que necesite) y crearemos su Dockerfile en una imagen y lo enviaremos a su repositorio. Si almacena su Dockerfile en GitHub, Bitbucket o Gitlab, agregue un desencadenador de compilación a su repositorio y comenzaremos una compilación de Dockerfile para cada cambio que realice … Comparta cualquier repositorio con tantos (o tan pocos) usuarios como usted escoger. ¿Necesita un repositorio solo para su equipo? Comparta fácilmente con los miembros de su equipo … ¿Desea compartir con el mundo? Haz tu repositorio totalmente público." Aprenda más sobre Quay.io

Distribución ligera de Linux para clústeres de servidores web nativos de Kubernetes y aplicaciones SaaS

etcd & Estados del racimo de Kubernetes – "etcd es un almacén de valores clave distribuido que proporciona una forma confiable de almacenar datos en un grupo de máquinas. Eso’s de código abierto y disponible en GitHub. etcd maneja con gracia las elecciones de líderes durante las particiones de red y tolerará fallas en la máquina, incluido el líder." Aprenda más sobre CoreOS & Kubernetes (etcd)

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me