{"id":6688,"date":"2019-08-11T13:00:43","date_gmt":"2019-08-11T20:00:43","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=6688"},"modified":"2025-06-13T17:14:28","modified_gmt":"2025-06-14T00:14:28","slug":"deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/","title":{"rendered":"Cl\u00fasteres autorregenerables con vol\u00famenes persistentes de Kubernetes"},"content":{"rendered":"<h2 class=\"wp-block-heading\" id=\"prolog\">Pr\u00f3logo<\/h2>\r\n\r\n\r\n\r\n<p>Se espera que las aplicaciones empresariales modernas funcionen 24 horas al d\u00eda, 7 d\u00edas a la semana, incluso durante el despliegue previsto de nuevas funciones y la aplicaci\u00f3n peri\u00f3dica de parches en el sistema operativo o la aplicaci\u00f3n. Para conseguirlo se necesitan herramientas y tecnolog\u00edas que garanticen la velocidad de desarrollo, la estabilidad de la infraestructura y la capacidad de ampliaci\u00f3n.<\/p>\r\n\r\n\r\n\r\n<p>Las herramientas de orquestaci\u00f3n de contenedores como Kubernetes est\u00e1n revolucionando la forma en que se desarrollan y despliegan las aplicaciones hoy en d\u00eda al abstraer las m\u00e1quinas f\u00edsicas que gestiona. Con Kubernetes, puede describir la cantidad de memoria y potencia de c\u00e1lculo que desee y disponer de ella sin preocuparse de la infraestructura subyacente.<\/p>\r\n\r\n\r\n\r\n<p>Los pods (unidad de recurso inform\u00e1tico) y los contenedores (donde se ejecutan las aplicaciones) en un entorno Kubernetes pueden autorrepararse en caso de cualquier tipo de fallo. Son, en esencia, ef\u00edmeros. Esto funciona muy bien cuando se tiene un microservicio sin estado, pero las aplicaciones que requieren que su estado se mantenga, por ejemplo, los sistemas de gesti\u00f3n de bases de datos como Couchbase, necesitan poder externalizar el almacenamiento de la gesti\u00f3n del ciclo de vida de Pods y Contenedores para que los datos se puedan recuperar r\u00e1pidamente simplemente volviendo a montar los vol\u00famenes de almacenamiento en un Pod reci\u00e9n elegido.<\/p>\r\n\r\n\r\n\r\n<p>Esto es lo que <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/persistent-volumes\/\">Vol\u00famenes persistentes<\/a> permite en despliegues basados en Kubernetes. <a href=\"https:\/\/docs.couchbase.com\/operator\/current\/overview.html\">Operador aut\u00f3nomo de Couchbase<\/a> es uno de los primeros en adoptar esta tecnolog\u00eda para que la recuperaci\u00f3n ante cualquier fallo de la infraestructura sea fluida y, lo que es m\u00e1s importante, m\u00e1s r\u00e1pida.<\/p>\r\n\r\n\r\n\r\n<p>En este art\u00edculo veremos paso a paso c\u00f3mo se puede implementar un cl\u00faster de Couchbase en Amazon Elastic Container Service para Kubernetes (Amazon EKS): 1) utilizando varios grupos de servidores Couchbase que se pueden asignar a una zona de disponibilidad independiente para una alta disponibilidad 2) aprovechando los vol\u00famenes persistentes para una r\u00e1pida recuperaci\u00f3n en caso de fallo de la infraestructura.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/04\/K8-Animation.gif\" alt=\"\" \/><\/figure>\r\n\r\n\r\n\r\n<p>Figura 1: Couchbase Autonomous Operator para Kubernetes automonitoriza y autorrepara la plataforma de base de datos Couchbase.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\" id=\"prerequisites\">1. Requisitos previos<\/h2>\r\n\r\n\r\n\r\n<p>Hay tres requisitos previos de alto nivel antes de comenzar el despliegue de Couchbase Autonomous Operator en EKS:<\/p>\r\n\r\n\r\n\r\n<ol class=\"wp-block-list\">\r\n<li>Usted tiene <a href=\"https:\/\/kubernetes.io\/docs\/tasks\/tools\/install-kubectl\/\">kubectl<\/a> instalado en nuestra m\u00e1quina local.<\/li>\r\n<li>\u00daltima <a href=\"https:\/\/docs.aws.amazon.com\/cli\/latest\/userguide\/cli-chap-install.html\">CLI DE AWS<\/a> est\u00e1 configurado para que podamos establecer de forma segura un canal entre nuestra m\u00e1quina local y el plano de control de Kubernetes que se ejecuta en AWS.<\/li>\r\n<li>Amazon <a href=\"https:\/\/docs.aws.amazon.com\/eks\/latest\/userguide\/getting-started.html\">Grupo EKS<\/a> se despliega con al menos tres nodos trabajadores en tres zonas de disponibilidad separadas para que m\u00e1s tarde podamos desplegar y gestionar nuestro cluster de Couchbase. Usaremos us-east-1 como regi\u00f3n y us-east-1a\/1b\/1c como tres zonas de disponibilidad, pero puedes desplegar en cualquier regi\u00f3n\/zona haciendo peque\u00f1os cambios en los archivos YAML de los ejemplos de abajo.<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">2. Despliegue de Couchbase Autonomous Operator<\/h2>\r\n\r\n\r\n\r\n<p>Antes de comenzar con la configuraci\u00f3n del Operador Couchbase, ejecute el comando 'kubectl get nodes' desde la m\u00e1quina local para confirmar que el cl\u00faster EKS est\u00e1 en funcionamiento.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl get nodes\r\n\r\nNAME                              STATUS    ROLES     AGE       VERSION\r\nip-192-168-106-132.ec2.internal   Ready     &lt;none&gt;    110m      v1.11.9\r\nip-192-168-153-241.ec2.internal   Ready     &lt;none&gt;    110m      v1.11.9\r\nip-192-168-218-112.ec2.internal   Ready     &lt;none&gt;    110m      v1.11.9<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Despu\u00e9s de haber probado que podemos conectarnos al plano de control de Kubernetes que se ejecuta en el cl\u00faster de Amazon EKS desde nuestra m\u00e1quina local, ahora podemos comenzar con los pasos necesarios para implementar Couchbase Autonomous Operator, que es la tecnolog\u00eda que permite que el cl\u00faster de Couchbase Server sea administrado por Kubernetes.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">2.1. Descargar el paquete Operator<\/h3>\r\n\r\n\r\n\r\n<p>Empecemos descargando la \u00faltima versi\u00f3n de <a href=\"https:\/\/www.couchbase.com\/blog\/es\/downloads\/?family=kubernetes\">Operador aut\u00f3nomo de Couchbase<\/a> y descompr\u00edmelo en la m\u00e1quina local. Cambia el directorio a la carpeta del operador para que podamos encontrar los archivos YAML que necesitamos para desplegar el operador Couchbase:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ cd couchbase-autonomous-operator-kubernetes_1.2.0-981_linux-x86_64\r\n\r\n$ ls\r\n\r\nLicense.txt couchbase-cli-create-user.yaml operator-role-binding.yaml secret.yaml\r\nREADME.txt couchbase-cluster.yaml operator-role.yaml\r\nadmission.yaml crd.yaml operator-service-account.yaml\r\nbin operador-despliegue.yaml pillowfight-data-loader.yaml<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">2.2. Crear un espacio de nombres<\/h3>\r\n\r\n\r\n\r\n<p>Crea un espacio de nombres que permita que los recursos del cluster est\u00e9n bien separados entre m\u00faltiples usuarios. Para ello utilizaremos un espacio de nombres \u00fanico llamado emart para nuestro despliegue y m\u00e1s tarde utilizaremos este espacio de nombres para desplegar Couchbase Cluster.<\/p>\r\n\r\n\r\n\r\n<p>En su directorio de trabajo, cree un archivo <a href=\"https:\/\/github.com\/couchbaselabs\/cboperator-hol\/blob\/master\/eks\/cb-operator-guide\/files\/namespace.yaml\">namespace.yaml<\/a> con este contenido y guardarlo en el propio directorio del operador Couchbase:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>apiVersion: v1\r\ntipo: Espacio de nombres\r\nmetadatos:\r\n  name: emart<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Despu\u00e9s de guardar la configuraci\u00f3n del espacio de nombres en un archivo, ejecute kubectl cmd para crearlo:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl create -f namespace.yaml<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Ejecute el comando get namespace para confirmar que se ha creado correctamente:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl get namespaces\r\n\r\noutput:\r\n\r\nNOMBRE ESTADO EDAD\r\ndefault Activo 1h\r\nemart Activo 12s<\/code><\/pre>\r\n\r\n\r\n\r\n<p>A partir de ahora utilizaremos emart como espacio de nombres para todo el aprovisionamiento de recursos.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">2.3. A\u00f1adir certificado TLS<\/h3>\r\n\r\n\r\n\r\n<p>Crear secreto para Operador Couchbase y servidores con un certificado dado. Ver <a href=\"https:\/\/docs.couchbase.com\/operator\/1.2\/tls.html\">c\u00f3mo crear un certificado personalizado<\/a> si no tiene.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl create secret generic couchbase-server-tls --del-archivo chain.pem --del-archivo pkey.key --namespace emart\r\n\r\nsecret\/couchbase-server-tls creado<\/code><\/pre>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl create secret generic couchbase-operator-tls --from-file pki\/ca.crt --namespace emart\r\n\r\nsecret\/couchbase-operator-tls creado<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">2.4. Instalaci\u00f3n del controlador de admisi\u00f3n<\/h3>\r\n\r\n\r\n\r\n<p>El controlador de admisi\u00f3n es un componente necesario de Couchbase Autonomous Operator y debe instalarse por separado. El prop\u00f3sito principal del controlador de admisi\u00f3n es validar los cambios de configuraci\u00f3n del cluster de Couchbase antes de que el Operador act\u00fae sobre ellos, protegiendo as\u00ed su despliegue de Couchbase (y al Operador) de cualquier da\u00f1o accidental que pudiera surgir de una configuraci\u00f3n inv\u00e1lida. Para m\u00e1s detalles sobre la arquitectura, visite la p\u00e1gina de documentaci\u00f3n de <a href=\"https:\/\/docs.couchbase.com\/operator\/current\/install-admission-controller.html#architecture\">Controlador de admisiones<\/a><\/p>\r\n\r\n\r\n\r\n<p>Siga los siguientes pasos para desplegar el controlador de admisi\u00f3n:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Desde el directorio del operador Couchbase ejecute el siguiente comando para crear el controlador de admisi\u00f3n:<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl create -f admission.yaml --namespace emart<\/code><\/pre>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Confirme que el controlador de admisi\u00f3n se ha desplegado correctamente:<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl get deployments --namespace emart\r\n\r\nNOMBRE DESEADO ACTUALIZADO ACTUAL DISPONIBLE ANTIG\u00dcEDAD\r\ncouchbase-operator-admission 1 1 1 1 1m<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">2.5. Instalar CRD<\/h3>\r\n\r\n\r\n\r\n<p>El primer paso para instalar el Operador es instalar la definici\u00f3n de recurso personalizada (CRD) que describe el tipo de recurso CouchbaseCluster. Esto se puede lograr con el siguiente comando:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>kubectl create -f crd.yaml --namespace emart<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">2.6. Crear un rol de operador<\/h3>\r\n\r\n\r\n\r\n<p>A continuaci\u00f3n, crearemos un <a href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/#api-overview\">funci\u00f3n de cl\u00faster<\/a> que permite al Operador acceder a los recursos que necesita para funcionar. Dado que el Operador gestionar\u00e1 muchos <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/overview\/working-with-objects\/namespaces\/\">espacios de nombres<\/a>es mejor crear primero una funci\u00f3n de cl\u00faster, ya que puede asignar esa funci\u00f3n a un cl\u00faster. <a href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/#service-account-permissions\">cuenta de servicio<\/a> en cualquier espacio de nombres.<\/p>\r\n\r\n\r\n\r\n<p>Para crear el rol de cluster para el Operador, ejecute el siguiente comando:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl create -f operador-role.yaml --namespace emart<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Esta funci\u00f3n de cl\u00faster s\u00f3lo debe crearse una vez.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">2.7. Crear una cuenta de servicio<\/h3>\r\n\r\n\r\n\r\n<p>Una vez creado el rol de cluster, es necesario crear una cuenta de servicio en el espacio de nombres donde se est\u00e1 instalando el Operator. Para crear la cuenta de servicio:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl create serviceaccount couchbase-operator --namespace emart<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Ahora asigna el rol de operador a la cuenta de servicio:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl create rolebinding couchbase-operator --role couchbase-operator \\-serviceaccount emart:couchbase-operator --namespace emart\r\n--serviceaccount emart:couchbase-operator --namespace emart\r\n\r\nsalida:\r\n\r\nclusterrolebinding.rbac.authorization.k8s.io\/couchbase-operator creado<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Ahora, antes de continuar, asegur\u00e9monos de que todos los roles y cuentas de servicio se han creado bajo el espacio de nombres <em>emart<\/em>. Para ello, ejecute estas tres comprobaciones y aseg\u00farese de que cada una de ellas devuelve algo:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>Kubectl get roles -n emart\r\nKubectl get rolebindings -n emart\r\nKubectl obtener sa -n emart<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">2.8. Despliegue de Couchbase Operator<\/h3>\r\n\r\n\r\n\r\n<p>Ahora tenemos todos los roles y privilegios para desplegar nuestro operador. Desplegar el operador es tan simple como ejecutar el archivo operator.yaml desde el directorio Couchbase Autonomous Operator.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl create -f operator-deployment.yaml --namespace emart\r\n\r\noutput:\r\n\r\ndeployment.apps\/couchbase-operator creado<\/code><\/pre>\r\n\r\n\r\n\r\n<p>El comando anterior descargar\u00e1 la imagen Docker de Operator (especificada en el archivo operator.yaml) y crea un despliegue, que gestiona una \u00fanica instancia de Operator. El Operator utiliza un despliegue para poder reiniciarse si el pod en el que se est\u00e1 ejecutando muere.<\/p>\r\n\r\n\r\n\r\n<p>Kubernetes tardar\u00eda menos de un minuto en desplegar el Operador y \u00e9ste estar\u00eda listo para ejecutarse.<\/p>\r\n\r\n\r\n\r\n<h4 class=\"wp-block-heading\">a) Verificar el estado de la implantaci\u00f3n<\/h4>\r\n\r\n\r\n\r\n<p>Puede utilizar el siguiente comando para comprobar el estado de la implantaci\u00f3n:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>  $ kubectl get deployments --namespace emart<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Si ejecuta este comando inmediatamente despu\u00e9s de desplegar el Operador, el resultado ser\u00e1 algo parecido a lo siguiente:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>NOMBRE DESEADO ACTUALIZADO ACTUAL DISPONIBLE EDAD\r\ncouchbase-operator 1 1 1 0 10s<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Nota: La salida anterior significa que su operador Couchbase est\u00e1 desplegado y puede seguir adelante con el despliegue del cl\u00faster Couchbase a continuaci\u00f3n.<\/p>\r\n\r\n\r\n\r\n<h4 class=\"wp-block-heading\">b) Verificar el estado del operador<\/h4>\r\n\r\n\r\n\r\n<p>Puede utilizar el siguiente comando para verificar que el Operador se ha iniciado correctamente:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl get pods -l app=couchbase-operator --namespace emart<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Si el Operador est\u00e1 en funcionamiento, el comando devuelve una salida en la que el campo LISTO muestra 1\/1, como por ejemplo:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>NOMBRE LISTO ESTADO REINICIOS EDAD\r\ncouchbase-operator-8c554cbc7-6vqgf 1\/1 En ejecuci\u00f3n 0 57s<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Tambi\u00e9n puedes comprobar los registros para confirmar que el Operador est\u00e1 en funcionamiento. Busque el mensaje CRD inicializado, escuchando eventos... module=controller.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl logs couchbase-operator-8c554cbc7-6vqgf --namespace emart --tail 20\r\n\r\noutput:\r\n\r\ntime=\"2019-05-30T23:00:58Z\" level=info msg=\"couchbase-operator v1.2.0 (release)\" module=main\r\ntime=\"2019-05-30T23:00:58Z\" level=info msg=\"Obtaining resource lock\" module=main\r\ntime=\"2019-05-30T23:00:58Z\" level=info msg=\"Starting event recorder\" module=main\r\ntime=\"2019-05-30T23:00:58Z\" level=info msg=\"Attempting to be elected the couchbase-operator leader\" module=main\r\ntime=\"2019-05-30T23:00:58Z\" level=info msg=\"I'm the leader, attempt to start the operator\" module=main\r\ntime=\"2019-05-30T23:00:58Z\" level=info msg=\"Creating the couchbase-operator controller\" module=main\r\ntime=\"2019-05-30T23:00:58Z\" level=info msg=\"Event(v1.ObjectReference{Kind:\\\"Endpoints\\\", Namespace:\\\"emart\\\", Name:\\\"couchbase-operator\\\", UID:\\\"c96ae600-832e-11e9-9cec-0e104d8254ae\\\", APIVersion:\\\"v1\\\", ResourceVersion:\\\"950158\\\", FieldPath:\\\"\\\"}): type: 'Normal' reason: 'LeaderElection' couchbase-operator-6cbc476d4d-2kps4 became leader\" module=event_recorder<\/code><\/pre>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">3. Despliegue del cluster Couchbase usando vol\u00famenes persistentes<\/h2>\r\n\r\n\r\n\r\n<p>En un entorno de producci\u00f3n donde el rendimiento y SLA del sistema es lo m\u00e1s importante, siempre debemos planificar el despliegue del cl\u00faster Couchbase utilizando vol\u00famenes persistentes, ya que ayuda en:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>Recuperaci\u00f3n de datos<\/strong>: Los Vol\u00famenes Persistentes permiten recuperar los datos asociados a los Pods en caso de que un Pod se cierre. Esto ayuda a prevenir la p\u00e9rdida de datos y evitar la lenta creaci\u00f3n de \u00edndices cuando se utilizan los servicios de datos o \u00edndices.<\/li>\r\n<li><strong>Reubicaci\u00f3n de la c\u00e1psula<\/strong>: Kubernetes puede decidir desalojar pods que alcancen umbrales de recursos como l\u00edmites de CPU y memoria. Los pods respaldados con vol\u00famenes persistentes pueden cerrarse y reiniciarse en nodos diferentes sin que se produzca ning\u00fan tiempo de inactividad o p\u00e9rdida de datos.<\/li>\r\n<li><strong>Aprovisionamiento din\u00e1mico<\/strong>: El Operador crear\u00e1 Vol\u00famenes Persistentes bajo demanda a medida que su cl\u00faster escale, aliviando la necesidad de pre-aprovisionar el almacenamiento de su cl\u00faster antes del despliegue.<\/li>\r\n<li><strong>Integraci\u00f3n en la nube<\/strong>: Kubernetes se integra con los aprovisionadores de almacenamiento nativos disponibles en los principales proveedores de nube, como AWS y GCE.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p>En la siguiente secci\u00f3n, veremos c\u00f3mo definir clases de almacenamiento en diferentes zonas de disponibilidad y crear una plantilla de reclamaci\u00f3n de volumen persistente, que se utilizar\u00e1 en <a href=\"https:\/\/github.com\/couchbaselabs\/cboperator-hol\/blob\/master\/eks\/cb-operator-guide\/files\/couchbase-cluster-with-pv-1.2.yaml\">couchbase-cluster-con-pv-1.2.yaml<\/a> archivo.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">3.1. Crear secreto para la consola de administraci\u00f3n de Couchbase<\/h3>\r\n\r\n\r\n\r\n<p>Lo primero que tenemos que hacer es crear una credencial secreta que ser\u00e1 utilizada por la consola web administrativa durante el inicio de sesi\u00f3n. Para mayor comodidad, se proporciona un secreto de muestra en el paquete Operator. Cuando lo empuja a su cl\u00faster Kubernetes, el secreto establece el nombre de usuario en Administrador y la contrase\u00f1a en contrase\u00f1a.<\/p>\r\n\r\n\r\n\r\n<p>Para insertar el secreto en su cl\u00faster Kubernetes, ejecute el siguiente comando:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl create -f secret.yaml --namespace emart\r\n\r\nSalida:\r\n\r\nSecret\/cb-example-auth creado<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">3.2 Crear una clase de almacenamiento AWS para el cl\u00faster EKS<\/h3>\r\n\r\n\r\n\r\n<p>Ahora, para poder utilizar PersistentVolume para los servicios de Couchbase (datos, \u00edndice, b\u00fasqueda, etc.), necesitamos crear primero Storage Classes (SC) en cada una de las Availability Zones (AZ). Empecemos por comprobar qu\u00e9 clases de almacenamiento existen en nuestro entorno.<\/p>\r\n\r\n\r\n\r\n<p>Usemos el comando kubectl para averiguarlo:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl get storageclass\r\n\r\nSalida:\r\n\r\ngp2 (por defecto) kubernetes.io\/aws-ebs 12m<\/code><\/pre>\r\n\r\n\r\n\r\n<p>El resultado anterior significa que s\u00f3lo tenemos la clase de almacenamiento gp2 por defecto y necesitamos crear clases de almacenamiento separadas en todos los AZs donde estamos planeando desplegar nuestro cluster Couchbase.<\/p>\r\n\r\n\r\n\r\n<p>1) Cree un archivo de manifiesto de clase de almacenamiento de AWS. El siguiente ejemplo define la estructura de la clase de almacenamiento (<a href=\"https:\/\/github.com\/couchbaselabs\/cboperator-hol\/blob\/master\/eks\/cb-operator-guide\/files\/sc-gp2.yaml\">sc-gp2.yaml<\/a>), que utiliza el tipo de volumen Amazon EBS gp2 (tambi\u00e9n conocido como unidad SSD de prop\u00f3sito general). Este almacenamiento lo utilizaremos m\u00e1s adelante en nuestro <em>VolumeClaimTemplate<\/em>.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>Para obtener m\u00e1s informaci\u00f3n sobre las opciones disponibles para las clases de almacenamiento de AWS, consulte [AWS](https:\/\/kubernetes.io\/docs\/concepts\/storage\/storage-classes\/#aws) en la documentaci\u00f3n de Kubernetes.\r\n\r\n```\r\napiVersion: storage.k8s.io\/v1\r\ntipo: StorageClass\r\nmetadatos:\r\n     labels:\r\n       k8s-addon: storage-aws.addons.k8s.io\r\n     nombre: gp2-multi-zone\r\npar\u00e1metros:\r\n     type: gp2\r\nprovisioner: kubernetes.io\/aws-ebs\r\nreclaimPolicy: Borrar\r\nvolumeBindingMode: WaitForFirstConsumer\r\n```\r\nArriba hemos utilizado ```reclaimPolicy`` a _Delete_ que le dice a K8 que borre los vol\u00famenes de los Pods borrados pero puede cambiarlo a _Retain_ dependiendo de sus necesidades o si por motivos de resoluci\u00f3n de problemas quiere mantener los vol\u00famenes de los pods borrados.<\/code><\/pre>\r\n\r\n\r\n\r\n<p>2) Ahora utilizaremos el comando kubectl para crear f\u00edsicamente una clase de almacenamiento a partir de los archivos de manifiesto que definimos anteriormente.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>```\r\n$ kubectl create -f sc-gp2.yaml\r\n\r\nSalida:\r\n\r\nstorageclass.storage.k8s.io\/gp2-multi-zone creado\r\n```<\/code><\/pre>\r\n\r\n\r\n\r\n<p>3) Verificar la nueva clase de almacenamiento<br \/>Una vez que hayas creado todas las clases de almacenamiento, puedes verificarlas mediante el comando kubectl:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>```\r\n$ kubectl get sc --namespace emart\r\n\r\noutput:\r\n\r\nNAME PROVISIONER AGE\r\ngp2 (por defecto) kubernetes.io\/aws-ebs 16h\r\ngp2-multi-zone kubernetes.io\/aws-ebs 96s\r\n```<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">3.3. Conocimiento de los grupos de servidores<\/h3>\r\n\r\n\r\n\r\n<p>Server Group Awareness proporciona una mayor disponibilidad, ya que protege un cl\u00faster de fallos de infraestructura a gran escala, mediante la definici\u00f3n de grupos.<\/p>\r\n\r\n\r\n\r\n<p>Los grupos deben definirse de acuerdo con la distribuci\u00f3n f\u00edsica de los nodos del cl\u00faster. Por ejemplo, un grupo s\u00f3lo debe incluir los nodos que se encuentran en un \u00fanico rack de servidores o, en el caso de despliegues en la nube, en una \u00fanica zona de disponibilidad. De este modo, si el rack de servidores o la zona de disponibilidad dejan de estar disponibles debido a un fallo el\u00e9ctrico o de red, la Conmutaci\u00f3n por error de grupo, si est\u00e1 activada, permite seguir accediendo a los datos afectados.<\/p>\r\n\r\n\r\n\r\n<p>Por lo tanto, colocamos los servidores Couchbase en <code>spec.servers.serverGroups<\/code>que se asignar\u00e1n a nodos EKS f\u00edsicamente separados que se ejecutan en tres AZ diferentes (us-east-1a\/b\/c):<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>espec:\r\n  servidores:\r\n    - nombre: data-east-1a\r\n      tama\u00f1o: 1\r\n      servicios:\r\n        - data\r\n      grupos de servidores:\r\n       - us-east-1a<\/code><\/pre>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">3.4. A\u00f1adir clase de almacenamiento a la plantilla de reclamaci\u00f3n de volumen persistente<\/h3>\r\n\r\n\r\n\r\n<p>Con los grupos de servidores definidos, y las Storage Classes disponibles en las tres AZs, ahora vamos a crear vol\u00famenes de almacenamiento din\u00e1mico y montarlos en cada uno de los servidores Couchbase que requieran datos persistentes. Para ello, primero definiremos la Plantilla de Reclamaci\u00f3n de Volumen Persistente en nuestro <a href=\"https:\/\/github.com\/couchbaselabs\/cboperator-hol\/blob\/master\/eks\/cb-operator-guide\/files\/couchbase-cluster-with-pv-1.2.yaml\">couchbase-cluster.yaml<\/a> (que puede encontrarse en la carpeta del operador).<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>Espec:\r\n  volumeClaimTemplates:\r\n    - metadata:\r\n        name: pvc-default\r\n      spec:\r\n        storageClassName: gp2-multi-zone\r\n        recursos:\r\n          requests:\r\n            storage: 1Gi\r\n    - metadatos:\r\n        nombre: pvc-data\r\n      spec:\r\n        storageClassName: gp2-multi-zone\r\n        recursos:\r\n          requests:\r\n            storage: 5Gi\r\n    - metadatos:\r\n        nombre: pvc-index\r\n      spec:\r\n        storageClassName: gp2-multi-zone\r\n        recursos:\r\n          requests:\r\n            storage: 3Gi<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Una vez a\u00f1adida la plantilla de reclamaci\u00f3n, el paso final es emparejar la plantilla de reclamaci\u00f3n de volumen con los grupos de servidores correspondientes en cada una de las zonas. Por ejemplo, los Pods del grupo de servidores data-east-1a deben utilizar la plantilla volumeClaimTemplate denominada <em>pvc-datos<\/em> para almacenar datos y <em>pvc-default<\/em> para los archivos binarios y de registro de Couchbase.<\/p>\r\n\r\n\r\n\r\n<p>Por ejemplo, a continuaci\u00f3n se muestra el emparejamiento de un Grupo de Servidores y su VolumeClaimTemplate asociado:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>espec:\r\n  servidores:\r\n    - nombre: data-east-1a\r\n      tama\u00f1o: 1\r\n      servicios:\r\n        - data\r\n      grupos de servidores:\r\n       - us-east-1a\r\n      vaina:\r\n        volumeMounts:\r\n          default: pvc-default\r\n          datos: pvc-datos\r\n    - nombre: data-east-1b\r\n      tama\u00f1o: 1\r\n      servicios:\r\n        - data\r\n      servidoresGrupos:\r\n       - us-east-1b\r\n      pod:\r\n        volumeMounts:\r\n          default: pvc-default\r\n          datos: pvc-datos\r\n    - nombre: data-east-1c\r\n      tama\u00f1o: 1\r\n      servicios:\r\n        - data\r\n      serverGroups:\r\n       - us-east-1c\r\n      pod:\r\n        volumeMounts:\r\n          default: pvc-default\r\n          datos: pvc-datos<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Observa que hemos creado tres grupos de servidores de datos separados (data-east-1a\/-1b\/-1c), cada uno ubicado en su propia AZ, utilizando plantillas de reclamaci\u00f3n de volumen persistente de esa AZ. Ahora, utilizando el mismo concepto, a\u00f1adiremos el \u00edndice y los servicios de consulta y los asignaremos en grupos de servidores separados para que puedan escalar independientemente de los nodos de datos.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">3.5. Despliegue del cl\u00faster Couchbase<\/h3>\r\n\r\n\r\n\r\n<p>La especificaci\u00f3n completa para desplegar el cl\u00faster Couchbase en 3 zonas diferentes utilizando vol\u00famenes persistentes puede verse en el documento <a href=\"https:\/\/github.com\/couchbaselabs\/cboperator-hol\/blob\/master\/eks\/cb-operator-guide\/files\/couchbase-cluster-with-pv-1.2.yaml\">couchbase-cluster-con-pv-1.2.yaml<\/a> . Este archivo, junto con otros archivos yaml de ejemplo utilizados en este art\u00edculo, puede descargarse de este repositorio git.<\/p>\r\n\r\n\r\n\r\n<p>Por favor, abra el archivo yaml y observe que estamos desplegando el servicio de datos en tres AZs pero desplegando el servicio de \u00edndice y consulta en dos AZs solamente. Puede cambiar la configuraci\u00f3n para satisfacer sus necesidades de producci\u00f3n.<\/p>\r\n\r\n\r\n\r\n<p>Ahora usa kubectl para desplegar el cluster.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl create -f couchbase-cluster-con-pv-1.2.yaml --save-config --namespace emart<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Esto iniciar\u00e1 el despliegue del cluster Couchbase y si todo va bien tendremos cinco pods del cluster Couchbase alojando los servicios seg\u00fan el fichero de configuraci\u00f3n anterior. Para comprobar el progreso ejecute este comando, que observar\u00e1 (argumento -w) el progreso de la creaci\u00f3n de pods:<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl get pods --namespace emart -w\r\n\r\noutput:\r\n\r\nNAME READY STATUS RESTARTS AGE\r\ncb_eks_demo-0000 1\/1 En ejecuci\u00f3n 0 2m\r\ncb_eks_demo-0001 1\/1 En ejecuci\u00f3n 0 1m\r\ncb_eks_demo-0002 1\/1 En ejecuci\u00f3n 0 1m\r\ncb_eks_demo-0003 1\/1 En ejecuci\u00f3n 0 37s\r\ncb_eks_demo-0004 1\/1 ContainerCreating 0 1s\r\ncouchbase-operator-8c554cbc7-n8rhg 1\/1 En ejecuci\u00f3n 0 19h<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Si por alguna raz\u00f3n se produce una excepci\u00f3n, puede encontrar los detalles de la excepci\u00f3n en el archivo de registro couchbase-operator. Para ver las \u00faltimas 20 l\u00edneas del registro, copie el nombre de su pod de operador y ejecute el siguiente comando sustituyendo el nombre del operador por el nombre de su entorno.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl logs couchbase-operator-8c554cbc7-98dkl --namespace emart --tail 20\r\n\r\noutput:\r\n\r\ntime=\"2019-02-13T18:32:26Z\" level=info msg=\"Cluster does not exist so the operator is attempting to create it\" cluster-name=cb-eks-demo module=cluster\r\ntime=\"2019-02-13T18:32:26Z\" level=info msg=\"Creating headless service for data nodes\" cluster-name=cb-eks-demo module=cluster\r\ntime=\"2019-02-13T18:32:26Z\" level=info msg=\"Creating NodePort UI service (cb-eks-demo-ui) for data nodes\" cluster-name=cb-eks-demo module=cluster\r\ntime=\"2019-02-13T18:32:26Z\" level=info msg=\"Creating a pod (cb-eks-demo-0000) running Couchbase enterprise-5.5.3\" cluster-name=cb-eks-demo module=cluster\r\ntime=\"2019-02-13T18:32:34Z\" level=warning msg=\"node init: failed with error [Post https:\/\/cb-eks-demo-0000.cb-eks-demo.emart.svc:8091\/node\/controller\/rename: dial tcp: lookup cb-eks-demo-0000.cb-eks-demo.emart.svc on 10.100.0.10:53: no such host] ...retrying\" cluster-name=cb-eks-demo module=cluster\r\ntime=\"2019-02-13T18:32:39Z\" level=info msg=\"Operator added member (cb-eks-demo-0000) to manage\" cluster-name=cb-eks-demo module=cluster\r\ntime=\"2019-02-13T18:32:39Z\" level=info msg=\"Initializing the first node in the cluster\" cluster-name=cb-eks-demo module=cluster\r\ntime=\"2019-02-13T18:32:39Z\" level=info msg=\"start running...\" cluster-name=cb-eks-demo module=cluster<\/code><\/pre>\r\n\r\n\r\n\r\n<p>Cuando todos los pods est\u00e9n listos entonces puedes hacer un port forward a uno de los pods del cluster Couchbase para que podamos ver el estado del cluster desde la consola web. Ejecute este comando para hacer el port forward.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>$ kubectl port-forward cb-eks-demo-0000 18091:18091 --namespace emart<\/code><\/pre>\r\n\r\n\r\n\r\n<p>En este punto, puede abrir un navegador y escriba https:\/\/localhost:18091 que traer\u00e1 Couchbase web-consola desde donde se puede controlar las estad\u00edsticas del servidor, crear cubos, ejecutar consultas desde un solo lugar.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/04\/K8-Cluster--1024x516.png\" alt=\"\" \/><\/figure>\r\n\r\n\r\n\r\n<p>Figura 2: Cluster Couchbase de cinco nodos utilizando vol\u00famenes persistentes.<\/p>\r\n\r\n\r\n\r\n<p><strong>Nota<\/strong>: Visite nuestro <a href=\"https:\/\/github.com\/couchbaselabs\/cboperator-hol\/tree\/master\/eks\">repositorio git<\/a> para encontrar la \u00faltima versi\u00f3n del taller mencionado.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusi\u00f3n<\/h2>\r\n\r\n\r\n\r\n<p>Couchbase Autonomous Operator hace que la gesti\u00f3n y orquestaci\u00f3n de Couchbase Cluster sea fluida en la plataforma Kubernetes. Lo que hace que este operador sea \u00fanico es su capacidad para utilizar f\u00e1cilmente las clases de almacenamiento ofrecidas por diferentes proveedores de la nube (AWS, Azure, GCP, RedHat OpenShift, etc.) para crear vol\u00famenes persistentes, que luego son utilizados por el cl\u00faster de base de datos Couchbase para almacenar persistentemente los datos. En caso de fallo de un pod o contenedor, Kubernetes reinstala un nuevo pod\/contenedor autom\u00e1ticamente y simplemente vuelve a montar los vol\u00famenes persistentes, haciendo que la recuperaci\u00f3n sea r\u00e1pida. Tambi\u00e9n ayuda a mantener el SLA del sistema durante la recuperaci\u00f3n de fallos de infraestructura, ya que solo es necesaria la recuperaci\u00f3n delta frente a la recuperaci\u00f3n completa si no se utilizan vol\u00famenes persistentes.<\/p>\r\n\r\n\r\n\r\n<p>En este art\u00edculo explicamos paso a paso c\u00f3mo configurar vol\u00famenes persistentes en Amazon EKS, pero los mismos pasos tambi\u00e9n son aplicables si utilizas cualquier otro entorno Kubernetes de c\u00f3digo abierto (AKS, GKE, etc.). Esperamos que pruebes Couchbase Autonomous Operator y nos cuentes tu experiencia.<\/p>","protected":false},"excerpt":{"rendered":"<p>Prologue Modern business applications are expected to be up 24\/7, even during the planned rollout of new features and periodic patching of the Operating System or application. Achieving this feat requires tools and technologies that ensure the speed of development, [&hellip;]<\/p>","protected":false},"author":33279,"featured_media":6720,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1821,2225,1816,2322],"tags":[10124,1245,2341,2339,2354,2138],"ppma_author":[9090],"class_list":["post-6688","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-architecture","category-cloud","category-couchbase-server","category-kubernetes","tag-amazon-web-services-aws","tag-cloud","tag-cncf","tag-eks","tag-k8","tag-kubernetes-operator"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Self-healing Clusters using Kubernetes Persistent Volumes - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Self-healing Couchbase Clusters are made possible by Kubernetes container orchestration that abstracts away the complexities of underlying infrastructure.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Self-healing Clusters using Kubernetes Persistent Volumes\" \/>\n<meta property=\"og:description\" content=\"Self-healing Couchbase Clusters are made possible by Kubernetes container orchestration that abstracts away the complexities of underlying infrastructure.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-08-11T20:00:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T00:14:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/K8-Animation.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"1203\" \/>\n\t<meta property=\"og:image:height\" content=\"673\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Anuj Sahni, Cloud and Solutions Architecture Leader, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Anuj Sahni, Cloud and Solutions Architecture Leader, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/\"},\"author\":{\"name\":\"Anuj Sahni, Cloud and Solutions Architecture Leader, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/21c735da109667147c580bb2cb351c1c\"},\"headline\":\"Self-healing Clusters using Kubernetes Persistent Volumes\",\"datePublished\":\"2019-08-11T20:00:43+00:00\",\"dateModified\":\"2025-06-14T00:14:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/\"},\"wordCount\":2333,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/K8-Animation.gif\",\"keywords\":[\"Amazon Web Services (AWS)\",\"cloud\",\"CNCF\",\"EKS\",\"K8\",\"kubernetes operator\"],\"articleSection\":[\"Couchbase Architecture\",\"Couchbase Capella\",\"Couchbase Server\",\"Kubernetes\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/\",\"name\":\"Self-healing Clusters using Kubernetes Persistent Volumes - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/K8-Animation.gif\",\"datePublished\":\"2019-08-11T20:00:43+00:00\",\"dateModified\":\"2025-06-14T00:14:28+00:00\",\"description\":\"Self-healing Couchbase Clusters are made possible by Kubernetes container orchestration that abstracts away the complexities of underlying infrastructure.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/K8-Animation.gif\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/K8-Animation.gif\",\"width\":1203,\"height\":673},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Self-healing Clusters using Kubernetes Persistent Volumes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/21c735da109667147c580bb2cb351c1c\",\"name\":\"Anuj Sahni, Cloud and Solutions Architecture Leader, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5e9708314822fac560c43a5fbdc9b74f\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cb8391905c8ac6ff579c79c90aeaa4e9cf773b87a25e710ee107104c5659deb6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cb8391905c8ac6ff579c79c90aeaa4e9cf773b87a25e710ee107104c5659deb6?s=96&d=mm&r=g\",\"caption\":\"Anuj Sahni, Cloud and Solutions Architecture Leader, Couchbase\"},\"description\":\"Anuj Sahni is a seasoned cloud and solutions architecture leader with over two decades of experience designing scalable, high-performance enterprise applications across AWS, Azure, and GCP. Currently part of the Capella team at Couchbase, he helps organizations modernize their applications and navigate cloud migration using cloud-native technologies. Prior to Couchbase, Anuj was Principal Product Manager at Oracle, where he led strategic initiatives for Oracle NoSQL Database and Oracle Service Cloud, focusing on distributed, always-available data platforms. He holds a Master\u2019s in Electrical and Computer Engineering from the University of Florida\u00a0and is an active thought leader in the data architecture space.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/anuj-sahni-6a80b617\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/anujsahni\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Self-healing Clusters using Kubernetes Persistent Volumes - The Couchbase Blog","description":"Los cl\u00fasteres Couchbase autorregenerables son posibles gracias a la orquestaci\u00f3n de contenedores Kubernetes, que abstrae las complejidades de la infraestructura subyacente.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/","og_locale":"es_MX","og_type":"article","og_title":"Self-healing Clusters using Kubernetes Persistent Volumes","og_description":"Self-healing Couchbase Clusters are made possible by Kubernetes container orchestration that abstracts away the complexities of underlying infrastructure.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-08-11T20:00:43+00:00","article_modified_time":"2025-06-14T00:14:28+00:00","og_image":[{"width":1203,"height":673,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/K8-Animation.gif","type":"image\/gif"}],"author":"Anuj Sahni, Cloud and Solutions Architecture Leader, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Anuj Sahni, Cloud and Solutions Architecture Leader, Couchbase","Est. reading time":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/"},"author":{"name":"Anuj Sahni, Cloud and Solutions Architecture Leader, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/21c735da109667147c580bb2cb351c1c"},"headline":"Self-healing Clusters using Kubernetes Persistent Volumes","datePublished":"2019-08-11T20:00:43+00:00","dateModified":"2025-06-14T00:14:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/"},"wordCount":2333,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/K8-Animation.gif","keywords":["Amazon Web Services (AWS)","cloud","CNCF","EKS","K8","kubernetes operator"],"articleSection":["Couchbase Architecture","Couchbase Capella","Couchbase Server","Kubernetes"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/","url":"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/","name":"Self-healing Clusters using Kubernetes Persistent Volumes - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/K8-Animation.gif","datePublished":"2019-08-11T20:00:43+00:00","dateModified":"2025-06-14T00:14:28+00:00","description":"Los cl\u00fasteres Couchbase autorregenerables son posibles gracias a la orquestaci\u00f3n de contenedores Kubernetes, que abstrae las complejidades de la infraestructura subyacente.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/K8-Animation.gif","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/K8-Animation.gif","width":1203,"height":673},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/deploy-self-healing-highly-available-couchbase-cluster-on-kubernetes-using-persistent-volumes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Self-healing Clusters using Kubernetes Persistent Volumes"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/21c735da109667147c580bb2cb351c1c","name":"Anuj Sahni, Jefe de Arquitectura de Soluciones y Nube, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5e9708314822fac560c43a5fbdc9b74f","url":"https:\/\/secure.gravatar.com\/avatar\/cb8391905c8ac6ff579c79c90aeaa4e9cf773b87a25e710ee107104c5659deb6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cb8391905c8ac6ff579c79c90aeaa4e9cf773b87a25e710ee107104c5659deb6?s=96&d=mm&r=g","caption":"Anuj Sahni, Cloud and Solutions Architecture Leader, Couchbase"},"description":"Anuj Sahni is a seasoned cloud and solutions architecture leader with over two decades of experience designing scalable, high-performance enterprise applications across AWS, Azure, and GCP. Currently part of the Capella team at Couchbase, he helps organizations modernize their applications and navigate cloud migration using cloud-native technologies. Prior to Couchbase, Anuj was Principal Product Manager at Oracle, where he led strategic initiatives for Oracle NoSQL Database and Oracle Service Cloud, focusing on distributed, always-available data platforms. He holds a Master\u2019s in Electrical and Computer Engineering from the University of Florida\u00a0and is an active thought leader in the data architecture space.","sameAs":["https:\/\/www.linkedin.com\/in\/anuj-sahni-6a80b617"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/anujsahni\/"}]}},"authors":[{"term_id":9090,"user_id":33279,"is_guest":0,"slug":"anujsahni","display_name":"Anuj Sahni, Cloud and Solutions Architecture Leader, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/cb8391905c8ac6ff579c79c90aeaa4e9cf773b87a25e710ee107104c5659deb6?s=96&d=mm&r=g","author_category":"1","last_name":"Sahni, Cloud and Solutions Architecture Leader, Couchbase","first_name":"Anuj","job_title":"","user_url":"https:\/\/www.linkedin.com\/in\/anuj-sahni-6a80b617","description":"<p data-start=\"231\" data-end=\"963\"><strong>Anuj Sahni<\/strong> es un experimentado l\u00edder en arquitectura de soluciones y en la nube con m\u00e1s de dos d\u00e9cadas de experiencia en el dise\u00f1o de aplicaciones empresariales escalables y de alto rendimiento en AWS, Azure y GCP. Actualmente forma parte del <strong>Equipo Capella en Couchbase<\/strong>Ayuda a las organizaciones a modernizar sus aplicaciones y a migrar a la nube utilizando tecnolog\u00edas nativas de la nube.<\/p>\r\n<p data-start=\"231\" data-end=\"963\">Antes de Couchbase, Anuj fue <strong>Director de Producto en Oracle<\/strong>donde dirigi\u00f3 iniciativas estrat\u00e9gicas para Oracle NoSQL Database y Oracle Service Cloud, centr\u00e1ndose en plataformas de datos distribuidas y siempre disponibles. Posee un <strong>M\u00e1ster en Ingenier\u00eda El\u00e9ctrica e Inform\u00e1tica<\/strong> del <strong>Universidad de Florida<\/strong>\u00a0y es un activo l\u00edder de opini\u00f3n en el \u00e1mbito de la arquitectura de datos.<\/p>"}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/6688","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/33279"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=6688"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/6688\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/6720"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=6688"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=6688"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=6688"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=6688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}