¡Este blog es posible gracias a este tweet!
Tuve una gran #Cbase táctil #Kubernetes sesión de hacking con @saturnism, aprendí mucho, espero con interés algunos blogs agradables.
- Arun Gupta (@arungupta) 27 de febrero de 2016
Kubernetes es un sistema de orquestación de código abierto de Google para contenedores Docker. Gestiona aplicaciones en contenedores a través de múltiples hosts y proporciona mecanismos básicos para el despliegue, mantenimiento y escalado de aplicaciones. Permite al usuario proporcionar primitivas declarativas para el estado deseado, por ejemplo "necesito 5 servidores Couchbase". Los mecanismos de autorreparación de Kubernetes, como el reinicio automático, la reprogramación y la replicación de contenedores, garantizan que se cumpla este estado. El usuario sólo tiene que definir el estado y Kubernetes se asegura de que se cumpla en todo momento en el clúster. Conceptos clave de Kubernetes explica los conceptos clave de Kubernetes. Esta serie de blogs de varias partes mostrará cómo ejecutar Couchbase en Kubernetes de múltiples maneras. La primera parte comienza con una configuración sencilla utilizando Vagrant.
Introducción a Kubernetes
Hay múltiples maneras de ejecutar Kubernetes, pero he encontrado la forma más sencilla (no necesariamente predecible ;) es ejecutar utilizando Vagrant.
- Descargar la última Lanzamiento de Kubernetes1.1.8 a partir de este momento, y ampliar el archivo.
- Inicie el clúster Kubernetes como:
1234cd kubernetesexportar KUBERNETES_PROVIDER=vagabundo./grupo/kube-arriba.sh
Esto muestra la salida como:
12345678910111213141516171819202122232425kubernetes-1.1.8 > ./kubernetes/grupo/kube-arriba.sh... Inicio grupo utilizando proveedor: vagabundo... llamando a verifique-prerrequisitos... llamando a kube-arribaEn máquina maestro arriba con virtualbox proveedor...En máquina esbirro-1 arriba con virtualbox proveedor...==> maestro: Importación de base caja kube-fedora21.... . .Validar salida:NOMBRE ESTADO MENSAJE ERRORcontrolador-director Saludable ok nilprogramador Saludable ok niletcd-0 Saludable {"salud": "true"} niletcd-1 Saludable {"salud": "true"} nilGrupo validación sucedió aHecho, listado grupo servicios:Kubernetes maestro es corriendo en https://10.245.1.2Heapster es corriendo en https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/heapsterKubeDNS es corriendo en https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/kube-dnsKubeUI es corriendo en https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/kube-uiGrafana es corriendo en https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/monitoring-grafanaInfluxDB es corriendo en https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb
Ejecutar Couchbase en Kubernetes Cluster
La forma más sencilla de empezar a ejecutar un contenedor Docker en Kubernetes es utilizando el comando kubectl run
comando. El uso del comando es:
1 |
kubectl ejecute NOMBRE --imagen=imagen [--env="clave=valor"] [--puerto=puerto] [--réplicas=réplicas] [--seco-ejecute=bool] [--anula=en línea-json] [banderas] |
El comando ejecuta una imagen particular, posiblemente replicada. La replicación de la imagen se realiza mediante la creación de un controlador de replicación para gestionar el contenedor o contenedores creados. La lista completa de opciones para ejecutar este comando se puede ver usando:
1 |
./grupo/kubectl.sh ejecute --ayuda |
Contenedor Docker Couchbase explica los diferentes contenedores Docker para Couchbase. Para este blog, usaremos arungupta/couchbase
ya que está preconfigurado.
1 |
./grupo/kubectl.sh ejecute couchbase --imagen=arungupta/couchbase |
Esto muestra la salida:
1 |
controlador de réplica "couchbase" creado |
La salida confirma que se ha creado un controlador de replicación. Vamos a verificarlo:
1 2 3 |
./kubernetes/grupo/kubectl.sh consiga rc CONTROLADOR CONTENEDOR(S) IMAGEN(S) SELECTOR RÉPLICAS EDAD couchbase couchbase arungupta/couchbase ejecute=couchbase 1 17s |
Ahora, comprueba las vainas:
1 2 3 |
./kubernetes/grupo/kubectl.sh consiga po NOMBRE LISTO ESTADO RESTARTS EDAD couchbase-tzdhl 0/1 Pendiente 0 36s |
Comprobemos el estado del pod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
./kubernetes/grupo/kubectl.sh describa vaina couchbase-tzdhl Nombre: couchbase-tzdhl Espacio de nombres: por defecto Imagen(s): arungupta/couchbase Nodo: 10.245.1.4/10.245.1.4 Inicio Tiempo: Vie, 26 Febrero 2016 18:05:10 -0800 Etiquetas: ejecute=couchbase Estado: Ejecutar Razón: Mensaje: IP: 10.246.67.2 Replicación Controladores: couchbase (1/1 réplicas creado) Contenedores: couchbase: Contenedor ID: docker://56dddb66bf60a590e588b972d5cae997ec96149066a9fb8075548c982eb14961 Imagen: arungupta/couchbase Imagen ID: docker://080e2e96b3fc22964f3dec079713cdf314e15942d6eb135395134d629e965062 QoS Nivel: cpu: Burstable Solicitudes: cpu: 100m Estado: Ejecutar Comenzó: Vie, 26 Febrero 2016 18:05:56 -0800 Listo: Verdadero Reinicie Cuenta: 0 Medio ambiente Variables: Condiciones: Tipo Estado Listo Verdadero Volúmenes: por defecto-ficha-clfeb: Tipo: Secreto (a secreto que debe rellenar este volumen) NombreSecreto: por defecto-ficha-clfeb Eventos: PrimeraVista Última visita Cuenta En SubobjectPath Razón Mensaje ───────── ──────── ───── ──── ───────────── ────── ─────── 1m 1m 1 {programador } Programado Con éxito asignado couchbase-tzdhl a 10.245.1.4 1m 1m 1 {kubelet 10.245.1.4} implícitamente obligatorio contenedor POD Tirando de Tirando de imagen "gcr.io/google_containers/pause:0.8.0" 59s 59s 1 {kubelet 10.245.1.4} implícitamente obligatorio contenedor POD Creado Creado con docker id 2dac5f81f4c2 59s 59s 1 {kubelet 10.245.1.4} spec.contenedores{couchbase} Tirando de Tirando de imagen "arungupta/couchbase" 59s 59s 1 {kubelet 10.245.1.4} implícitamente obligatorio contenedor POD Comenzó Comenzó con docker id 2dac5f81f4c2 59s 59s 1 {kubelet 10.245.1.4} implícitamente obligatorio contenedor POD Tirado Con éxito tirado imagen "gcr.io/google_containers/pause:0.8.0" 19s 19s 1 {kubelet 10.245.1.4} spec.contenedores{couchbase} Tirado Con éxito tirado imagen "arungupta/couchbase" 18s 18s 1 {kubelet 10.245.1.4} spec.contenedores{couchbase} Creado Creado con docker id 56dddb66bf60 18s 18s 1 {kubelet 10.245.1.4} spec.contenedores{couchbase} Comenzó Comenzó con docker id 56dddb66bf60 |
La quinta línea de la salida dice que la IP del nodo es 10.245.1.4. Esta dirección se utilizará más tarde para acceder a la consola web. La última línea de esta salida muestra que el pod ya está listo. Compruebe de nuevo el estado del pod:
1 2 3 |
./kubernetes/grupo/kubectl.sh consiga po NOMBRE LISTO ESTADO RESTARTS EDAD couchbase-tzdhl 1/1 Ejecutar 0 2m |
Consola web de Couchbase en clúster Kubernetes
Ahora que su contenedor Couchbase se está ejecutando en el clúster Kubernetes, es posible que desee ver el archivo Consola web. A cada pod se le asigna una dirección IP única, pero esta dirección sólo es accesible dentro del cluster. Se puede exponer utilizando el kubectl exponer
comando. Este comando toma un Controlador de Replicación, Servicio o Pod y lo expone como un nuevo Servicio Kubernetes. Esto se puede hacer dando el comando:
1 2 |
./grupo/kubectl.sh exponer rc couchbase --objetivo-puerto=8091 --puerto=8091 --externo-ip=10.245.1.4 servicio "couchbase" expuesto |
En este comando:
--target-port
es el nombre o número del puerto del contenedor al que el servicio debe dirigir el tráfico--port
es el puerto en el que debe servir el servicio--external-ip
es la dirección IP externa a establecer para el servicio. Nota, esta dirección IP se obtuvo conkubectl describe pod
antes.
Ahora, puedes acceder a la Consola Web de Couchbase en http://10.245.1.4:8091 y su aspecto es el siguiente:
Introduzca las credenciales de contraseña como Administrador
/contraseña
.
¡Voilà!
Hable con nosotros en StackOverflow o Foros de Couchbase. También puede seguirnos en @couchbasedev y @couchbase.