Estamos muy contentos de anunciar PRIMERA Base de datos NoSQL integrada de forma nativa con la API de kubernetes (k8s), a través de CRD, dando una inmensa potencia, agilidad, portabilidad en la nube a los clientes para que puedan ser gratis de
- Gestión o administración de Couchbase Cluster
- Preocupado por los fallos de los nodos, el operador de k8s hace girar una vaina por usted
- Preocúpese de realizar la operación de reequilibrio después de añadir un nodo, el operador k8s la realiza por usted
- Fijación del proveedor
La integración nativa con k8s nos permite definir un controlador personalizado, a través del cual podemos definir el flujo de trabajo (s) para ciertas condiciones que ocurren en el clúster Couchbase. Al escribir esa lógica en el controlador personalizado nos da la capacidad de gestionar mejor el clúster de Couchbase.
La ejecución de Couchbase Autonomous Operator en Azure AKS se encuentra actualmente en fase de vista previa técnica.
Esto es lo que vamos a hacer
- Iniciar sesión en Azure con CLI (az login)
- Crear un grupo de recursos
- Crear un clúster k8s en AKS
- Acceder al panel k8s (Opcional)
- Despliegue de Couchbase Autonomous Operator
- Despliegue del clúster Couchbase en AKS
- Insertar algunos (~100K) documentos en el cluster
- Amplíe el clúster con una sola orden
- Eliminar un pod, simulando un fallo de nodo
- Vea que k8s observa ese evento, y trae el nuevo pod, para que coincida con la definición del cluster
- Referencias
Ahora vamos a ir a través de la implementación de Operador Autónomo en Azure Kubernetes Service paso a paso de forma muy detallada
Iniciar sesión en Azure con CLI (az login)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
az inicio de sesión A firmar en, utilice a web navegador a abra el página https://aka.ms/devicelogin e introduce el código BFU6N7R8L para autenticarte. [ { "cloudName": "AzureCloud", "id": "xxxxxx-deff-4604-xxxxx-xxxxxxxxx", "isDefault": verdadero, "nombre": "MiOrgAzure", "estado": "Activado", "tenantId": "xxbf6-f537-4fde-bc07-ooooooo777777", "usuario": { "nombre": "ram@couchbase.com", "tipo": "usuario" } } ] |
Crear un grupo de recursos
1 |
az grupo crear --nombre ramresourcegp --ubicación eastus |
Crear un clúster k8s
Iniciamos sesión en el portal Azure, y buscamos Azure Kubernetes Service en el icono de búsqueda, deberíamos ver esta pantalla

Crear servicio K8s
Elija el tamaño de la instancia para k8s nodos y seleccione el número de nodos según los requisitos

Elija el tipo de instancia
Selección de los tipos de instancia

Elija el número de nodos trabajadores k8s
Habilitar RBAC para el cluster k8s

Elija RBAC para k8s
Elegir red por defecto

Seleccione la configuración predeterminada de Red
Activar la supervisión de contenedores

Elija la configuración predeterminada para supervisar los contenedores
Asegúrate de que la validación es correcta y pulsa crear

Haga clic en Siguiente y compruebe que se ha superado la validación para el clúster k8s.
Ejecutar el comando para obtener k8s clúster que se ejecuta en Azure, a nivel local (me parece personalmente útil como me da la capacidad de gestionar k8s clúster remoto que se ejecuta en AKS. Otra opción sería utilizar Concha azul)
1 2 |
az aks consiga-credenciales --recurso-grupo=ramresourcegp --nombre=ramk8saks Fusionado "ramk8saks" como actual contexto en /Usuarios/ram.dhakne/.kube/config |
La siguiente captura de pantalla da una idea de cómo comprobar si la configuración del clúster AKS es correcta a nivel local o no.

Compruebe si el clúster k8s funciona en AKS
Acceder al panel k8s (Opcional)
Todos los activos k8s se pueden gestionar a través de kubectl y con el acceso GUI al clúster Couchbase, se hace más manejable. Sin embargo, me gustaría hacer algo de administración de activos k8s a través de k8s Dashboard también.
1 2 3 4 5 6 7 |
az aks consulte --recurso-grupo ramresourcegp --nombre ramk8saks Fusionado "ramk8saks" como actual contexto en /var/carpetas/0l/sr0jnvw10nb55xt8nz6zcrzc0000gn/T/tmpvw6ub8_7 Proxy corriendo en http://127.0.0.1:8001/ Pulse CTRL+C a cerrar el túnel... Reenvío de 127.0.0.1:8001 -> 9090 Reenvío de [::1]:8001 -> 9090 Manejo de conexión para 8001 |
[TIP] Si k8s dashboard da problemas de permisos como
1 2 |
advertencia configmaps es prohibido: Usuario "system:serviceaccount:kube-system:kubernetes-dashboard" no puede lista configmaps en el espacio de nombres "por defecto" |
a continuación, ejecute el siguiente comando
1 2 |
kubectl crear clusterrolebinding kubernetes-salpicadero --clusterrole=grupo-admin --cuenta de servicio=kube-sistema:kubernetes-salpicadero clusterrolebinding.rbac.autorización.k8s.io "kubernetes-dashboard" creado |
En este momento debemos tener acceso para k8s salpicadero funcionando en URL http://127.0.0.1:8001/
Despliegue de Couchbase Autonomous Operator
Recuerde que el despliegue del operador CB es un trabajo de una sola vez, y es muy sencillo
He descargado los archivos zip del operador en mi portátil local desde la URL Descargar el paquete Couchbase Operator
Habilitar RBAC para couchbase cluster en k8s
1 2 3 4 |
kubectl crear -f grupo-papel.yaml kubectl crear cuenta de servicio couchbase-operador --espacio de nombres por defecto cuenta de servicio "couchbase-operator" creado kubectl crear clusterrolebinding couchbase-operador --clusterrole couchbase-operador --cuenta de servicio por defecto:couchbase-operatorclusterrolebinding.rbac.autorización.k8s.io "couchbase-operator" creado |
Despliegue del operador couchbase
1 2 |
kubectl crear -f operador.yaml despliegue.extensiones "couchbase-operator" creado |
1 2 3 |
kubectl consiga despliegues NOMBRE DESEADO ACTUAL UP-A-FECHA DISPONIBLE EDAD couchbase-operador 1 1 1 0 9s |
Está listo en menos de un minuto y podemos ver cómo se despliega.
1 2 3 4 |
kubectl consiga despliegues -l aplicación=couchbase-operador --ver NOMBRE DESEADO ACTUAL UP-A-FECHA DISPONIBLE EDAD couchbase-operador 1 1 1 0 8s couchbase-operador 1 1 1 1 13s |
Despliegue del clúster Couchbase en AKS
Ahora que hemos desplegado el Operador Autónomo en AKS, vamos a desplegar el Cluster Couchbase
Con AKS, tenemos StorageClass por defecto, vamos a comprobar
1 2 3 4 |
kubectl consiga sc NOMBRE PROVISIONADOR EDAD por defecto (por defecto) kubernetes.io/azure-disco 8h gestionado-premium kubernetes.io/azure-disco 8h |
Para nuestro despliegue elegiremos managed-premium
Puede encontrar el archivo yaml detallado aquí, couchbase-persistent-cluster.yaml
1 |
kubectl crear -f couchbase-persistente-grupo.yaml |
El cluster de couchbase tarda unos minutos en arrancar y vamos a crear 4 pods, y por primera vez, descarga la imagen docker del registro, ¡quizás buen momento para tomar un café!
1 2 3 4 5 6 7 |
kubectl consiga vainas --ver NOMBRE LISTO ESTADO RESTARTS EDAD cb-op-aks-demo-0000 1/1 Ejecutar 0 48m cb-op-aks-demo-0001 1/1 Ejecutar 0 44m cb-op-aks-demo-0002 1/1 Ejecutar 0 40m cb-op-aks-demo-0003 1/1 Ejecutar 0 37m couchbase-operador-6cb7687498-zfzq5 1/1 Ejecutar 1 1h |
Exponiendo el servicio cb-op-aks-demo-ui desde NodePort(Por defecto LoadBalancer), nos da la posibilidad de acceder a la GUI de Couchbase Server a través de una IP pública.

Exponer cb-op-aks-demo-ui de NodePort a LoadBalancer
Comando de ejecución
1 |
kubectl consiga servicios |
debería dar un resultado como el siguiente
1 |
cb-op-aks-demo-ui LoadBalancer 10.0.191.163 40.121.65.8 8091:30427/TCP,18091:31034/TCP |
Ahora inicie sesión en la GUI con el nombre de usuario/contraseña por defecto, es decir, Administrador/contraseña.

Inicie sesión en la GUI en la IP pública expuesta por el equilibrador de carga
Insertar algunos (~100K) documentos en el cluster
1 |
cbc-pelea de almohadas -U couchbase://localhost/default -u Administrador -P contraseña -J -t 4 -I 99998 -p `nombrehost` |
[TIP] La utilidad cbc-pillowfight debe instalarse en el contenedor antes de ejecutarlo. Su instalación está fuera del alcance de este blog.
Deberíamos ver la tabla de estadísticas de cubos encendida

Estadísticas del cubo cuando la pelea de almohadas está en marcha
Amplíe el clúster con una sola orden
Escalar el cluster couchbase es un trabajo muy simple con kubernetes, solo actualiza el archivo couchbase-persistent-cluster.yaml, digamos que queremos incrementar la capacidad de los nodos de datos de 3 a 5, entonces cambia servers:size a 5

Ampliación del clúster
Veremos que se crean nuevos pods y se añaden nodos pods aks couchbase al cluster, se realiza el rebalanceo, ¡simplemente increíble!
1 |
kubectl Registros -f couchbase-operador-6cb7687498-zfzq5 |

se crean pods y se realiza el reequilibrio
El clúster se ha escalado y la nueva definición del clúster tiene este aspecto, observando que del total de 100K artículos, cada nodo tiene ~20K artículos/nodo

Nueva definición de clúster
[TIP] Comprobemos si tenemos PV en nuestros contenedores
Inicie sesión en el pod y ejecute el comando lsblk -a
1 |
kubectl exec -ti cb-op-aks-demo-0000 /papelera/bash |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
raíz@cb-op-aks-demo-0000:/# lsblk -a NOMBRE MAJ:MIN RM TALLA RO TIPO PUNTO MONTE bucle1 7:1 0 0 bucle <fuerte>sdd 8:48 0 4G 0 disco /mnt/datos</fuerte> sdb 8:16 0 32G 0 disco `-sdb1 8:17 0 32G 0 pieza bucle6 7:6 0 0 bucle bucle4 7:4 0 0 bucle sr0 11:0 1 690K 0 rom bucle2 7:2 0 0 bucle <fuerte>sde 8:64 0 4G 0 disco /mnt/índice</fuerte> bucle0 7:0 0 0 bucle <fuerte>sdc 8:32 0 4G 0 disco /op/couchbase/var/lib/couchbase</fuerte> sda 8:0 0 30G 0 disco `-sda1 8:1 0 30G 0 pieza /op/couchbase/var bucle7 7:7 0 0 bucle bucle5 7:5 0 0 bucle bucle3 7:3 0 0 bucle |
En couchbase-persistent-cluster.yaml habíamos definido un volumen de almacenamiento de 4GiB, y en el fragmento resaltado vemos que ¡tenemos directorios Couchbase de 4GiB!
Eliminar un pod, simulando un fallo de nodo
Eliminar un pod cb-op-aks-demo-0000 de k8s dashboard, es un nodo de servicio de datos

Borrar un pod del salpicadero de k8s
Con el autoFailoverTimeout variable timeout definida en couchbase-persistent-cluster.yaml, el nodo se auto-falla y es detectado por el Operador Autónomo y por tanto por el Cluster Couchbase.

Nodo eliminado y fallido
El controlador personalizado de Couchbase está constantemente observando la definición del cluster y necesita tener un total de 4 nodos o pods k8s, y ve que uno se ha ido, por lo tanto crea un nuevo pod, se une al cluster y se realiza el rebalanceo.

Se crea un nuevo pod, se une al clúster y se realiza la operación de reequilibrio, todo ello de forma automática
De los registros de los pods del operador couchbase

progreso del reequilibrio en los registros de coucbase-operator-xxx
Tomémonos un momento para ver qué ha pasado aquí.
Un nodo ha fallado, fue detectado por Custom Controller aka Couchbase Operator, también observa la definición del cluster couchbase y ve que necesita tener 7 pods o 7 nodos couchbase en total, ve que uno se ha ido, espera por autoFailoverTimeout, y hace girar un nuevo pod, se une al cluster y se realiza la operación de rebalanceo.
En Couchase creemos en la diferenciación sostenida para servir mejor a nuestros clientes en términos de agilidad, rendimiento y tecnología punta. Esto es sin duda un cambio de juego. Apreciaremos sus comentarios, esperamos hacer su viaje hacia microservicios un paso fácil con Couchbase Autonomous Operator en kubernetes corriendo en AKS.
Referencias
https://docs.microsoft.com/en-us/azure/aks/azure-disks-dynamic-pv
https://docs.microsoft.com/en-us/azure/aks/tutorial-kubernetes-deploy-cluster
¡El nuevo Couchbase Autonomous Operator 1.0 para Kubernetes y OpenShift ya es GA!
https://docs.couchbase.com/operator/1.0/overview.html