Kubernetes HA y OpenStack
Proyecto final CFGS Celtic Kubernetes
Juan Manuel Torres Díaz
Características Kubernetes
- Escrito en GoLang
- Licencia Apache
- Versión inicial: 6 Junio de 2014
- Creador original: Google
- Empresas que contribuyen: Google, CoreOS, RedHat, Mesosphere, Microsoft, HP, IBM, VMWare, Pivotal, SaltStack, etc.
- Web: http://kubernetes.io
Evolución de Kubernetes
- Google anuncia Kubernetes.
- Microsoft, Red Hat, IBM, Docker, CoreOS, Mesosphere y SaltStack se unen a Kubernetes.
- Mesosphere desarrolla Kubernetes para gestionar Docker.
- VMware y HP se une a la comunidad Kubernetes.
- Google y Mirantis se asocian para llevar Kubernetes a OpenStack.
- Google y CoreOS anuncian Tectonic (Distribución de Kubernetes y CoreOS).
-
Intel se une a la comunidad Kubernetes para colaborar en Tectonic.
-
Google Container Engine entra en beta pública.
-
Google se une a OpenStack Foundation.
Componentes Kubernetes
- ETCD - Almacenamiento HA clave:valor de configuración de Kubernetes y servicios.
- Flannel - red virtual backed para pods.
- kube-apiserver - API para orquestación.
- kube-controller-manager - gestiona los servicios de Kubernetes.
- kube-scheduler - registro de pods en los minions.
- kube-proxy - balanceador para pods.
- kubelet - Supervisa que los pods se ejecutan correctamente.
- Contenedores (Por ahora Docker)
Conceptos Kubernetes
- Imagenes de contenedores.
- Pods - Grupo de contenedores.
- Labels - etiquetas para identificar pods.
- Controladores de replica - Gestionan la replica de los pods.
- Servicio - política de entrada a los pods
- Volumen persistentes para los pods.

Ejemplo de funcionamiento

Ciclo de vida de los Pods

Estructura basica Kubernetes

Almacenamiento persistente Kubernetes
Para dar almacenamiento persistente en Kubernetes, podremos utilizar:
- NFS
- iSCSI
- RBD
- Glusterfs
- HostPath
- GCEPersistentDisk
- AWSElasticBlockStore
Almacenamiento Kubernetes
Para cualquiera de los anteriores en Kubernetes tendremos que crear:
- PersistentVolume - Donde especificamos el volumen persistente
- PersistentVolumeClaim - Donde reclamamos espacio en el volumen
Ejemplo almacenamiento

Addons Kubernetes
- Fluentd-elasticsearch: monitorizar
- Dashboard: interfaz web oficial de Kubernetes
- Registry: Docker Registry interno
- Kube-DNS: DNS interno
Adicionales:
- Elastickube: interfaz web
ElasticKube

Nombre | Función | Numero | IP externa | IP interna |
---|---|---|---|---|
Tanaris | Proxy | 1 | 172.22.205.244 | 10.0.0.48 |
Belenus | Proxy | 2 | 172.22.205.247 | 10.0.0.53 |
Morrigan | KMaster | 1 | 172.22.205.240 | 10.0.0.43 |
Balar | KMaster | 2 | 172.22.205.241 | 10.0.0.44 |
Artio | KMinion | 1 | 172.22.205.242 | 10.0.0.45 |
Esus | KMinion | 2 | 172.22.205.243 | 10.0.0.46 |
Angus | Almacenamiento | 1 | 172.22.205.245 | 10.0.0.52 |
Dagda | Almacenamiento | 2 | 172.22.205.246 | 10.0.0.50 |
Escenario Celtic Kubernetes sobre OpenStack
IP subnet (VIP) | IP Flotante | Servicio |
---|---|---|
10.0.0.38 | 172.22.205.248 | Entrada a HAProxy dinamico |
10.0.0.39 | 172.22.205.249 | API Kubernetes masters |
Información Virtual IP
Resumen Documentación
- Despliegue simple Kubernetes, Kubernetes HA y Kubernetes con Ansible.
- Addons Kubernetes:
- DNS interno SkyDNS.
- DashBoard.
- Exponer servicios:
- Balanceadores dinamicos.
- Ingress.
- Almacenamiento:
- NFS.
- Glusterfs.
- Uso y mejoras.

Mejoras
Necesarias:
- Kubernetes API HTTPs
- Kubernetes Autenticación
- Auto-escalado de minions
- Mejorar solución del balanceador externo
Adicionales:
- Cambiar kube-dashboard por ElasticKube
Kubernetes + OpenStack
Evolución de OpenStack con Kubernetes
- Usar Kubernetes para gestionar minions que se ejecuten sobre OpenStack
- Usar Kubernetes para gestionar los contenedores de OpenStack


Componentes para OpenStack
- Magnum - Proporciona contenedores como un servicio para OpenStack.
- Murano - Proporciona un catálogo de aplicaciones para OpenStack incluyendo soporte para Kubernetes, y para aplicaciones en contenedores, gestionados por Kubernetes.
OpenStack Magnum
Compatible con:
- Kubernetes
- Swarm
- Mesos
Arquitectura:
- BayModel (Plantilla para crear Bay)
- Bay (Donde se ejecuta el Orquestador)
- Pod
- Service
- RC
- Container
Fin de la presentación
Kubernetes HA
By tedezed
Kubernetes HA
- 4,907