En términos sencillos, kops es kubectl para clústeres kubernetes (k8s). El poder de kubernetes es que elimina la dependencia del proveedor, proporciona portabilidad para sus aplicaciones, bases de datos en caso de que se tome la decisión de cambiar de proveedor de nube o si los flujos de trabajo en la nube tienen que ir en-prem. Sea cual sea el escenario, kubernetes da esa libertad.

KOPS Architecture

Arquitectura KOPS

En el espíritu de hacer la divulgación completa, es más fácil utilizar las herramientas proporcionadas por los proveedores de nube. Herramientas de código abierto como kops funcionan igual de bien y son muy eficientes.

El Operador Autónomo de Couchbase extiende la API de Kubernetes creando una Definición Personalizada de Recursos (CRD) y registrando un controlador específico de Couchbase (el Operador Autónomo) para gestionar los clusters de Couchbase.

Para este blog utilizaremos AWS como IaaS y demostraremos el uso de kops, sus capacidades y Couchbase Autonomous Operator ejecutando Couchbase Cluster a escala.

¿Qué puede hacer KOPS?

"kops le ayuda a crear, destruir, actualizar y mantener clústeres Kubernetes de grado de producción y alta disponibilidad desde la línea de comandos. AWS (Amazon Web Services) es actualmente soportado oficialmente, con GCE en soporte beta, y VMware vSphere en alfa, y otras plataformas previstas." [1]

Vayamos al grano y veamos cómo funciona...

  • Instalar kops
  • Crear un clúster k8s en AWS
  • Configurar el panel k8s
  • Verificación y validación del clúster k8s
  • Despliegue de Couchbase Autonomous Operator en K8s
  • Despliegue del clúster couchbase
  • Resistencia del servicio
  • Próximos pasos

Instalar KOPS

OSX desde Homebrew

Linux

 

Crear un clúster k8s en AWS

Antes de que podamos utilizar kops para crear k8s cluster, necesitamos crear políticas IAM para kops y para que kops pueda aprovisionar los recursos necesarios para crear k8s cluster. Esta es una operación que se realiza una sola vez.

Requisitos previos para los kops

Instalar AWS CLI

Para MacOS

$ pip3 instale awscli -actualización --usuario

Para otras plataformas, pulse aquí

NOTA: operación única

Habilita el entorno AWS ejecutando 'aws configure' y ejecuta los siguientes comandos

Crear S3 bucket para almacenar kops config/data

En mi caso, se llama rd-k8s-aws y para la región us-oeste-1

Definir env var's para kops state store y cluster name

Elija cualquier nombre para su cluster, yo he elegido rdc.k8s.local

Crear cluster k8s con kops

Elija la región de AWS, el tamaño de la instancia y el número de nodos para el clúster k8s.

NOTA: tarda unos 5-8 minutos, ¡un buen momento para tomar un café!

La salida de ejemplo tiene este aspecto

Obtener los nodos y validar el cluster k8s

En este punto kubectl context o k8s context debe apuntar a AWS k8s cluster

Configurar el panel k8s

En una pestaña/terminal diferente ejecute el siguiente comando para proxy k8s servidor api en el portátil local

Obtener el token para acceder al panel de control k8s

Elija la opción de usar token y mientras agarra token de arriba, saltar % al final.

Inicie sesión en el salpicadero de k8s en http://127.0.0.1:8001/ui [2]

Verificación y validación del clúster k8s

Validar el cluster k8s utilizando el comando

# comprueba que el número de nodos mencionados en la creación del cluster coincide aquí

Despliegue de Couchbase Autonomous Operator en K8s

Ahora que hemos desplegado el cluster k8s, es el momento de desplegar el operador couchbase

Primero desplegamos el operador, necesitamos habilitar RBAC para el operador, necesitamos crear ClusterRole para el Operador Couchbase

Nota: Esta función sólo debe crearse una vez.

Una vez creado el ClusterRole, es necesario crear un ServiceAccount en el espacio de nombres en el que se está instalando el Operador Couchbase y, a continuación, asignar el ClusterRole a ese ServiceAccount mediante una directiva ClusterRoleBinding. En esta guía utilizaremos el por defecto para crear el ServiceAccount.

Despliegue del operador couchbase

La ejecución de este comando descarga la imagen Docker de Couchbase Operator especificada en el comando operador.yaml y crea un archivo despliegue que gestiona una única instancia de Couchbase Operator. Couchbase Operator utiliza un despliegue para poder reiniciarse si el pod en el que se ejecuta muere.

Debe continuar sondeando el estado del Operador hasta que su salida tenga un aspecto similar a la siguiente salida:

Cuando el operador couchbase esté en funcionamiento, tendrá un aspecto similar al siguiente

Necesitamos desplegar secreto para la autenticación de couchbase servidor GUI

Despliega ahora el cluster Couchbase de 10 nodos

Obtener el listado de los pods de couchbase

Para acceder a la GUI de couchbase, accederemos al puerto 8091 y para ello podemos realizar un redireccionamiento de puertos como el siguiente

Se puede acceder a la GUI del servidor Couchbase en http://localhost:8091

Resistencia del servicio

Para mostrar la resistencia del servicio, podemos matar un pod, simulando la pérdida de un nodo couchbase.

Si perdemos un pod, entonces kubernetes comprueba la definición del clúster, y entiende que necesita tener 3 pods, y creará uno nuevo, lo añadirá al clúster, y luego realizará el reequilibrio en el clúster. De este modo se elimina la crucial tarea de administración de monitorizar el cluster en busca de fallos de nodos, decidir qué hacer cuando ocurra y luego realizar la operación de reequilibrio. Todo esto ocurre a cubierto, y las aplicaciones funcionarán sin interrupciones.

Si volvemos a listar los pods, deberíamos ver algo como esto

Instalando cbc-pillowfight para generar carga KV, nos da una idea de cuales son los límites que podemos empujar en este cluster

Desde un único servidor de aplicaciones, ejecutando pillowfight con los siguientes parámetros

KV performance with pillowfight

Actuación de KV con pillowfight

Con un único servidor de aplicaciones podemos obtener ~34.000 operaciones/seg.

Aumentando el nivel, utilizando otro servidor de aplicaciones para ejecutar pillowfight, podemos obtener un mayor rendimiento del orden de ~51k Ops/Sec.

KV performance with pillowfight

Actuación de KV con pillowfight

Conclusión

Lo que aprendimos aquí es que usando kops es bastante fácil desplegar clusters Couchbase a escala y el operador autónomo proporciona beneficios como la resiliencia del servicio, auto-rebalanceo, creación automática de buckets, fácil integración con CI/CD pipeline. Los archivos yaml pueden ser estandarizados para Dev/QA/UAT y prod.

Referencias:

[1] https://github.com/kubernetes/kops

[2] solución de problemas del salpicadero del k8s

 

Autor

Publicado por Ram Dhakne

Ram Dhakne es Consultor de Soluciones - US West en Couchbase. Actualmente ayuda a los clientes empresariales con su viaje de innovaciones digitales y les ayuda a adoptar tecnologías NoSQL. Sus intereses actuales son ejecutar aplicaciones persistentes como el servidor NoSQL Couchbase en clústeres Kubernetes que se ejecutan en AKS, GKE, ACS y OpenShift, asegurando de extremo a extremo en kubernetes. En su vida pasada ha trabajado en plataformas IaaS (AWS, GCP, Azure & Private Clouds), Enterprise Backup Target Products & Backup Applications.

Dejar una respuesta