Este blog mostrará cómo crear contenedores con estado en Kubernetes utilizando Amazon EBS. Couchbase Server es un contenedor con estado. Esto significa que el estado del contenedor necesita ser transportado con él. En Kubernetes, la unidad atómica más pequeña de ejecución
un contenedor es un pod. Así que un contenedor de Couchbase Server se ejecutará como un pod. Y por defecto, todos los datos almacenados en Couchbase Server se almacenan en el mismo host.
Esta cifra se explica originalmente en Clúster Kubernetes en Amazon y exponer el servicio Couchbase. Además, esta figura muestra el almacenamiento local del host.
Los pods son efímeros y pueden reiniciarse en un host diferente. A Volumen Kubernetes sobrevive a cualquier contenedor que se ejecute dentro del pod, y los datos se conservan a través de reinicios del contenedor. Sin embargo,
el volumen dejará de existir cuando un pod deje de existir. Esto se soluciona con los volúmenes persistentes, que proporcionan almacenamiento persistente en clústeres para aplicaciones que requieren datos de larga duración.
- Provisión: El administrador aprovisiona un almacenamiento en red en el clúster, como los volúmenes de AWS ElasticBlockStore. Esto se denomina
Volumen persistente
. - Solicitar almacenamiento: El usuario solicita almacenamiento para pods utilizando reclamaciones. Las reclamaciones pueden especificar niveles de recursos (CPU y memoria), tamaños específicos y modos de acceso (por ejemplo, se puede montar una vez lectura/escritura o muchas veces sólo escritura).
Esto se denominaPersistentVolumeClaim
. - Reclamación de uso: Las reclamaciones se montan como volúmenes y se utilizan en pods para el almacenamiento.
En concreto, este blog mostrará cómo utilizar un AWS ElasticBlockStore como Volumen persistente
crear un PersistentVolumeClaim
y luego reclamarla en una vaina.
El código fuente completo de este blog está en: github.com/arun-gupta/couchbase-kubernetes.
Aprovisionar AWS Elastic Block Storage
Después de restricciones si se utiliza Amazon ElasticBlockStorage como PersistentVolume con Kubernetes:
- los nodos en los que se ejecutan los pods deben ser instancias AWS EC2
- esas instancias deben estar en la misma región y zona de disponibilidad que el volumen EBS
- EBS sólo admite una única instancia EC2 montando un volumen
Crear un AWS Elastic Block Storage:
1 |
aws ec2 crear-volumen --región us-oeste-2 --disponibilidad-zona us-oeste-2a --talla 5 --volumen-tipo gp2 |
La región us-oeste-2
región y us-oeste-2a
zona de disponibilidad se utiliza aquí. Y así Kubernetes clúster necesita para iniciar
en la misma región y zona de disponibilidad. Esto muestra la salida como:
1 2 3 4 5 6 7 8 9 10 11 |
{ "Zona de disponibilidad": "us-oeste-2a", "Cifrado": falso, "VolumeType": "gp2", "VolumeId": "vol-47f59cce", "Estado": "creando", "Iops": 100, "SnapshotId": "", "CreateTime": "2016-07-29T21:57:43.343Z", "Tamaño": 5 } |
Compruebe si el volumen está disponible como:
1 |
aws --región us-oeste-2 ec2 describa-volúmenes --volumen-id vol-47f59cce |
Muestra la salida como:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
{ "Volúmenes": [ { "Zona de disponibilidad": "us-oeste-2a", "Archivos adjuntos": [], "Cifrado": falso, "VolumeType": "gp2", "VolumeId": "vol-47f59cce", "Estado": "disponible", "Iops": 100, "SnapshotId": "", "CreateTime": "2016-07-29T21:57:43.343Z", "Tamaño": 5 } ] } |
Anote el identificador único del volumen en VolumeId
atributo. También puede verificar el bloque EBS en la consola de AWS:
Iniciar clúster Kubernetes
Descargar Kubernetes 1.3.3Descomprímelo e inicia el clúster en Amazon:
1 2 |
exportar KUBERNETES_PROVIDER=aws KUBE_AWS_ZONE=us-oeste-2a TAMAÑO_NODO=m3.grande NUM_NODOS=3 ./kubernetes/grupo/kube-arriba.sh |
Tres puntos a tener en cuenta aquí:
- La zona en la que se inicia el clúster se establece explícitamente en
us-oeste-1a
. Coincide con la zona en la que se creó el volumen de almacenamiento EBS. - Por defecto, el tamaño de cada nodo es
m3.medio
. Aquí está ajustado am3.grande
. - Por defecto, se crean 1 nodo maestro y 4 nodos trabajadores. Aquí sólo se crean 3 nodos trabajadores.
Esto mostrará la salida como:
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
... Inicio grupo en us-oeste-2a utilizando proveedor aws ... llamando a verifique-prerrequisitos ... llamando a kube-arriba Inicio grupo utilizando os distro: jessie Cargar a Amazon S3 +++ Puesta en escena servidor alquitranes a S3 Almacenamiento: kubernetes-puesta en escena-0eaf81fbc51209dd47c13b6d8b424149/devel cargar: ../../../../../var/carpetas/81/ttv4n16x7p390cttrm_675y00000gn/T/kubernetes.XXXXXX.ISohbaGM/s3/arranque-script a s3://kubernetes-staging-0eaf81fbc51209dd47c13b6d8b424149/devel/bootstrap-script Subido a servidor alquitranes: SERVER_BINARY_TAR_URL: https://s3.amazonaws.com/kubernetes-staging-0eaf81fbc51209dd47c13b6d8b424149/devel/kubernetes-server-linux-amd64.tar.gz SALT_TAR_URL: https://s3.amazonaws.com/kubernetes-staging-0eaf81fbc51209dd47c13b6d8b424149/devel/kubernetes-salt.tar.gz BOOTSTRAP_SCRIPT_URL: https://s3.amazonaws.com/kubernetes-staging-0eaf81fbc51209dd47c13b6d8b424149/devel/bootstrap-script PERFIL DE INSTANCIA arn:aws:Soy::598307997273:instancia-perfil/kubernetes-maestro 2016-07-29T15:13:35Z AIPAJF3XKLNKOXOTQOCTkubernetes-maestro / ROLES arn:aws:Soy::598307997273:papel/kubernetes-maestro 2016-07-29T15:13:33Z / AROAI3Q2KFBD5PCKRXCRM kubernetes-maestro ASSUMEROLEPOLICYDOCUMENT 2012-10-17 DECLARACIÓN sts:AsumirRol Permitir PRINCIPAL ec2.amazonaws.com PERFIL DE INSTANCIA arn:aws:Soy::598307997273:instancia-perfil/kubernetes-súbdito 2016-07-29T15:13:39Z AIPAIYSH5DJA4UPQIP4Bkubernetes-súbdito / ROLES arn:aws:Soy::598307997273:papel/kubernetes-súbdito 2016-07-29T15:13:37Z / AROAIQ57MPQYSHRPQCT2Q kubernetes-súbdito ASSUMEROLEPOLICYDOCUMENT 2012-10-17 DECLARACIÓN sts:AsumirRol Permitir PRINCIPAL ec2.amazonaws.com Utilizando SSH clave con (AWS) huella dactilar: SHA256:dX/5wpWuUxYar2NFuGwiZuRiydiZCyx4DGoZ5/jL/j8 Creación de vpc. Añadir etiqueta a vpc-fa3d6c9e: Nombre=kubernetes-vpc Añadir etiqueta a vpc-fa3d6c9e: KubernetesCluster=kubernetes Utilizando VPC vpc-fa3d6c9e Añadir etiqueta a dopt-3aad625e: Nombre=kubernetes-dhcp-opción-configure Añadir etiqueta a dopt-3aad625e: KubernetesCluster=kubernetes Utilizando DHCP opción configure dopt-3aad625e Creación de subred. Añadir etiqueta a subred-e11f5985: KubernetesCluster=kubernetes Utilizando subred subred-e11f5985 Creación de Internet Pasarela. Utilizando Internet Pasarela igw-5c748f38 Asociar ruta tabla. Creación de ruta tabla Añadir etiqueta a rtb-84fcf1e0: KubernetesCluster=kubernetes Asociar ruta tabla rtb-84fcf1e0 a subred subred-e11f5985 Añadir ruta a ruta tabla rtb-84fcf1e0 Utilizando Ruta Cuadro rtb-84fcf1e0 Creación de maestro seguridad grupo. Creación de seguridad grupo kubernetes-maestro-kubernetes. Añadir etiqueta a sg-91590bf7: KubernetesCluster=kubernetes Creación de súbdito seguridad grupo. Creación de seguridad grupo kubernetes-súbdito-kubernetes. Añadir etiqueta a sg-9d590bfb: KubernetesCluster=kubernetes Utilizando maestro seguridad grupo: kubernetes-maestro-kubernetes sg-91590bf7 Utilizando súbdito seguridad grupo: kubernetes-súbdito-kubernetes sg-9d590bfb Creación de maestro disco: talla 20 GB, tipo gp2 Añadir etiqueta a vol-def79e57: Nombre=kubernetes-maestro-pd Añadir etiqueta a vol-def79e57: KubernetesCluster=kubernetes Asignado Elástico IP para maestro: 52.40.216.69 Añadir etiqueta a vol-def79e57: kubernetes.io/maestro-ip=52.40.216.69 Generar certificados para alternativa-nombres: IP:52.40.216.69,IP:172.20.0.9,IP:10.0.0.1,DNS:kubernetes,DNS:kubernetes.por defecto,DNS:kubernetes.por defecto.svc,DNS:kubernetes.por defecto.svc.grupo.local,DNS:kubernetes-maestro Inicio Maestro Añadir etiqueta a i-5a7cebf5: Nombre=kubernetes-maestro Añadir etiqueta a i-5a7cebf5: Papel=kubernetes-maestro Añadir etiqueta a i-5a7cebf5: KubernetesCluster=kubernetes En espera para maestro a sea listo Inténtelo 1 a consulte para maestro nodeWaiting para instancia i-5a7cebf5 a sea corriendo (actualmente pendiente) Para dormir para 3 segundos... En espera para instancia i-5a7cebf5 a sea corriendo (actualmente pendiente) Para dormir para 3 segundos... En espera para instancia i-5a7cebf5 a sea corriendo (actualmente pendiente) Para dormir para 3 segundos... En espera para instancia i-5a7cebf5 a sea corriendo (actualmente pendiente) Para dormir para 3 segundos... [maestro corriendo] Adjuntar IP 52.40.216.69 a instancia i-5a7cebf5 Adjuntar persistente datos volumen (vol-def79e57) a maestro 2016-07-29T22:00:36.909Z /dev/sdb i-5a7cebf5 adjuntando vol-def79e57 grupo "aws_kubernetes" configure. usuario "aws_kubernetes" configure. contexto "aws_kubernetes" configure. conmutado a contexto "aws_kubernetes". usuario "aws_kubernetes-basic-auth" configure. Escribió config para aws_kubernetes a /Usuarios/arungupta/.kube/config Creación de súbdito configuración Creación de autoescalado grupo 0 esbirros iniciado; a la espera 0 esbirros iniciado; a la espera 0 esbirros iniciado; a la espera 0 esbirros iniciado; a la espera 3 esbirros iniciado; listo En espera para grupo inicialización. Este se continuamente consulte a véase si el API para kubernetes es accesible. Este puede bucle para siempre si allí fue algunos no capturado error durante iniciar arriba. ..........................................................................................................................................................................................................Kubernetes grupo creado. Cordura comprobación grupo... Inténtelo 1 a consulte Docker en nodo @ 52.42.0.65 ...no trabajando pero Inténtelo 2 a consulte Docker en nodo @ 52.42.0.65 ...no trabajando pero Inténtelo 3 a consulte Docker en nodo @ 52.42.0.65 ...trabajando Inténtelo 1 a consulte Docker en nodo @ 52.36.195.201 ...trabajando Inténtelo 1 a consulte Docker en nodo @ 52.43.35.173 ...trabajando Kubernetes grupo es corriendo. En maestro es corriendo en: https://52.40.216.69 En usuario nombre y contraseña a utilice es situado en /Usuarios/arungupta/.kube/config. ... llamando a valide-grupo Encontrado 3 nodo(s). NOMBRE ESTADO EDAD ip-172-20-0-26.us-oeste-2.informática.interna Listo 1m ip-172-20-0-27.us-oeste-2.informática.interna Listo 1m ip-172-20-0-28.us-oeste-2.informática.interna Listo 1m Validar salida: NOMBRE ESTADO MENSAJE ERROR controlador-director Saludable ok programador Saludable ok etcd-0 Saludable {"salud": "true"} etcd-1 Saludable {"salud": "true"} Grupo validación sucedió a Hecho, listado grupo servicios: Kubernetes maestro es corriendo en https://52.40.216.69 Elasticsearch es corriendo en https://52.40.216.69/api/v1/proxy/namespaces/kube-system/services/elasticsearch-logging Heapster es corriendo en https://52.40.216.69/api/v1/proxy/namespaces/kube-system/services/heapster Kibana es corriendo en https://52.40.216.69/api/v1/proxy/namespaces/kube-system/services/kibana-logging KubeDNS es corriendo en https://52.40.216.69/api/v1/proxy/namespaces/kube-system/services/kube-dns kubernetes-salpicadero es corriendo en https://52.40.216.69/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard Grafana es corriendo en https://52.40.216.69/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana InfluxDB es corriendo en https://52.40.216.69/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb A más depurar y diagnosticar grupo problemas, utilice 'kubectl cluster-info dump'. |
Más información sobre Clúster Kubernetes en Amazon.
Couchbase Server Pod sin almacenamiento persistente
Vamos a crear un pod de Couchbase Server sin almacenamiento persistente. Esto significa que si el pod es reprogramado en un host diferente entonces no tendrá acceso a los datos creados en él. Aquí están los pasos rápidos para ejecutar un pod de Couchbase Server y
exponerlo fuera del clúster:
1 2 3 |
kubectl.sh ejecute couchbase --imagen=arungupta/couchbase kubectl.sh exponer despliegue couchbase --objetivo-puerto=8091 --puerto=8091 --tipo=LoadBalancer kubectl.sh describa svc couchbase |
Más información en Clúster Kubernetes en Amazon. El último comando muestra la dirección del equilibrador de carga de entrada. Acceda a la consola web del servidor Couchbase en :8091
.
Inicie sesión en la consola mediante Administrador
inicio de sesión y contraseña
contraseña. Aparecerá la página principal de la Consola Web del Servidor Couchbase:
Un defecto viaje-muestra
ya está creado por arungupta/couchbase imagen. Este cubo se muestra en el Cubos de datos
ficha:
Haga clic en Crear nuevo cubo de datos
para crear un nuevo cubo de datos. Déle un nombre k8s
, tome todos los valores predeterminados y haga clic en Cree
para crear el cubo:
El cubo creado se muestra en el Cubos de datos
ficha:
Compruebe el estado del pod:
1 2 3 |
kubectl.sh consiga po NOMBRE LISTO ESTADO RESTARTS EDAD couchbase-2646907196-memz2 1/1 Ejecutar 0 53m |
Elimine la cápsula:
1 2 |
kubectl.sh borrar po couchbase-2646907196-memz2 vaina "couchbase-2646907196-memz2" suprimido |
Observa cómo se crea la nueva cápsula:
1 2 3 4 |
kubectl.sh consiga -w po NOMBRE LISTO ESTADO RESTARTS EDAD couchbase-2646907196-memz2 1/1 Terminación 0 53m couchbase-2646907196-wo6ve 1/1 Ejecutar 0 3s |
Acceda de nuevo a la Consola Web y compruebe que el cubo no existe:
Limpiemos los recursos creados:
1 2 |
kubectl.sh borrar svc couchbase kubectl.sh borrar despliegue couchbase |
Couchbase Server Pod con almacenamiento persistente
Ahora, vamos a exponer un pod de Couchbase Server con almacenamiento persistente. Como ya hemos comentado, vamos a crear un pod Volumen persistente
y reclamar el volumen.
Solicitar almacenamiento
Como cualquier otro recurso de Kubernetes, un volumen persistente se crea utilizando un archivo de descripción de recursos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
amable: Volumen persistente apiVersion: v1 metadatos: nombre: couchbase-pv etiquetas: tipo: amazonEBS spec: capacidad: almacenamiento: 5Gi accessModes: - LecturaEscrituraUnaVez awsElasticBlockStore: volumeID: vol-47f59cce fsType: ext4 |
Los datos importantes son los siguientes:
- Crear un almacenamiento de 5 GB
- El almacenamiento sólo puede ser montado por un nodo para lectura/escritura
- especifica el identificador de volumen creado anteriormente
Más información sobre la definición de este archivo en kubernetes.io/docs/user-guide/persistent-volumes/. Este archivo está disponible en: github.com/arun-gupta/couchbase-kubernetes/blob/master/pv/couchbase-pv.yml.
El volumen en sí se puede crear como:
1 |
kubectl crear -f couchbase-pv.yml |
y muestra la salida:
1 |
persistentvolume "couchbase-pv" creado |
Reclamación de uso
A PersistentVolumeClaim
pueden crearse utilizando este archivo de recursos:
1 2 3 4 5 6 7 8 9 10 11 12 |
amable: PersistentVolumeClaim apiVersion: v1 metadatos: nombre: couchbase-pvc etiquetas: tipo: amazonEBS spec: accessModes: - LecturaEscrituraUnaVez recursos: solicita: almacenamiento: 5Gi |
En nuestro caso, tanto PersistentVolume como PersistentVolumeClaim son de 5 GB, pero no tienen por qué serlo. Lea más detalles sobre la definición de este fichero en kubernetes.io/docs/user-guide/persistent-volumes/#persistentvolumeclaims.
Este archivo se encuentra en github.com/arun-gupta/couchbase-kubernetes/blob/master/pv/couchbase-pvc.yml. La reclamación puede crearse como:
1 |
kubectl crear -f couchbase-pvc.yml |
y muestra la salida:
1 |
reclamación de volumen persistente "couchbase-pvc" creado |
Crear RC con reclamación de volumen persistente
Cree un controlador de replicación Couchbase utilizando este archivo de recursos:
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 |
apiVersion: v1 amable: ReplicationController metadatos: nombre: couchbase spec: réplicas: 1 plantilla: metadatos: nombre: couchbase-rc-vaina etiquetas: nombre: couchbase-rc-vaina contexto: couchbase-pv spec: contenedores: - nombre: couchbase-rc-vaina imagen: arungupta/couchbase volumeMounts: - mountPath: "/opt/couchbase/var" nombre: mypd puertos: - containerPort: 8091 - containerPort: 8092 - containerPort: 8093 - containerPort: 11210 volúmenes: - nombre: mypd persistentVolumeClaim: claimName: couchbase-pvc |
Las partes clave aquí son:
- El recurso define un controlador de replicación utilizando
arungupta/couchbase
Imagen Docker volumeMounts
definir qué volúmenes se van a montar./opt/couchbase/var
es el directorio donde Couchbase Server almacena todos los datos.volúmenes
definir los diferentes volúmenes que pueden utilizarse en esta definición de CR
Crea el CR como:
1 |
kubectl crear -f couchbase-rc.yml |
y muestra la salida:
1 |
controlador de réplica "couchbase" creado |
Compruebe si la vaina es kubectl.sh get -w po
para ver:
1 2 3 4 5 |
kubectl.sh consiga -w po NOMBRE LISTO ESTADO RESTARTS EDAD couchbase-jx3fn 0/1 ContenedorCrear 0 3s NOMBRE LISTO ESTADO RESTARTS EDAD couchbase-jx3fn 1/1 Ejecutar 0 20s |
Exponer RC como un servicio:
1 2 |
kubectl.sh exponer rc couchbase --objetivo-puerto=8091 --puerto=809--tipo=LoadBalancer servicio "couchbase" expuesto |
Consigue todos los servicios:
1 2 3 4 |
kubectl.sh consiga svc NOMBRE CLÚSTER-IP EXTERNO-IP PUERTO(S) EDAD couchbase 10.0.49.129 a6179426155e2... 8091/TCP 19s kubernetes 10.0.0.1 443/TCP 1h |
Describa el servicio como kubectl.sh describe svc couchbase
para ver:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Nombre: couchbase Espacio de nombres: por defecto Etiquetas: contexto=couchbase-pv nombre=couchbase-vaina Selector: contexto=couchbase-pv,nombre=couchbase-vaina Tipo: LoadBalancer IP: 10.0.49.129 LoadBalancer Entrada: a6179426155e211e6b664022b850255f-1850736155.us-oeste-2.elb.amazonaws.com Puerto: 8091/TCP PuertoNodo: 31636/TCP Puntos finales: 10.244.1.3:8091 Sesión Afinidad: Ninguno Eventos: PrimeraVista Última visita Cuenta En SubobjectPath Tipo Razón Mensaje --------- -------- ----- ---- ------------- -------- ------ ------- 31s 31s 1 {servicio-controlador } Normal Creación de LoadBalancer Creación de carga equilibrador 29s 29s 1 {servicio-controlador } Normal CreadoLoadBalancer Creado carga equilibrador |
Espere unos 3 minutos a que el equilibrador de carga se asiente. Accede a la consola web de Couchbase Server en :8091
. Una vez más, sólo viaje-muestra
existe. Se crea mediante arungupta/couchbase
imagen utilizada en la definición RC.
Mostrar contenedores con estado
Vamos a crear un nuevo cubo. Dale un nombre kubernetes-pv
, tome todos los valores predeterminados y haga clic en el botón Crear para crear el cubo.
El cubo aparece ahora en la consola:
Finalice el pod de Couchbase Server y vea cómo se restaura el estado. Obtenga los pods de nuevo:
1 2 3 |
kubectl.sh consiga po NOMBRE LISTO ESTADO RESTARTS EDAD couchbase-jx3fn 1/1 Ejecutar 0 7m |
Elimine la cápsula:
1 2 |
kubectl.sh borrar po couchbase-jx3fn vaina "couchbase-jx3fn" suprimido |
Pod se recrea:
1 2 3 4 5 6 |
kubectl.sh consiga -w po NOMBRE LISTO ESTADO RESTARTS EDAD couchbase-jx3fn 1/1 Terminación 0 8m couchbase-qq6wu 0/1 ContenedorCrear 0 4s NOMBRE LISTO ESTADO RESTARTS EDAD couchbase-qq6wu 1/1 Ejecutar 0 5s |
Y ahora cuando accedes a la Consola Web de Couchbase, el bucket creado anteriormente sigue existiendo:
Esto se debe a que los datos se almacenaron en el almacenamiento EBS de respaldo.
Limpieza del clúster Kubernetes
Apague el clúster Kubernetes:
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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
KUBE_AWS_ZONE=us-oeste-2a TAMAÑO_NODO=m3.grande NUM_NODOS=3 ./kubernetes/grupo/kube-abajo.sh En abajo grupo utilizando proveedor: aws Borrado de ELBs en: vpc-fa3d6c9e En espera para ELBs a sea suprimido Todos ELBs suprimido Borrado de instancias en VPC: vpc-fa3d6c9e Borrado de auto-escalado grupo: kubernetes-súbdito-grupo-us-oeste-2a Borrado de auto-escalado lanzar configuración: kubernetes-súbdito-grupo-us-oeste-2a Borrado de auto-escalado grupo: kubernetes-súbdito-grupo-us-oeste-2a Borrado de auto-escalado grupo: kubernetes-súbdito-grupo-us-oeste-2a En espera para instancias a sea suprimido En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... En espera para instancia i-8b7aed24 a sea terminado (actualmente cerrando-abajo) Para dormir para 3 segundos... Todos instancias suprimido Liberar Elástico IP: 52.40.216.69 Borrado de volumen vol-def79e57 Limpieza arriba recursos en VPC: vpc-fa3d6c9e Limpieza arriba seguridad grupo: sg-91590bf7 Limpieza arriba seguridad grupo: sg-9d590bfb Limpieza arriba seguridad grupo: sg-e97b298f Borrado de seguridad grupo: sg-91590bf7 Borrado de seguridad grupo: sg-9d590bfb Borrado de seguridad grupo: sg-e97b298f Borrado de VPC: vpc-fa3d6c9e Hecho |
Y separa el volumen:
1 |
aws ec2 borrar-volumen --región us-oeste-2 --volumen-id vol-47f59cce |
El código fuente completo de este blog está en: github.com/arun-gupta/couchbase-kubernetes.
¡Que aproveche!
Buen artículo. Gracias por redactarlo.
Una suposición clara es que el ejemplo era para una sola AZ. Pero para el uso real de producción, usted querrá desplegar su clúster k8s a través de múltiples AZs, que es bastante fácil con
kops
. Esto dificulta en gran medida el despliegue de las instalaciones fotovoltaicas. No he podido encontrar buenos ejemplos de cómo hacerlo. ¿Conoce alguno? ¿O tal vez estén dispuestos a actualizar este ejemplo para soportar múltiples AZs?Leyendo la documentación de k8s parece que tendríamos que utilizar un recurso StorageClass para cada AZ, marcar la opción
VolumenPersistente
a la clase, pero no puedo averiguar cómo obtener unDespliegue
(o ReplicationController) para elegir el correctoStorageClass
en función de la AZ en la que se encuentre, que no se conoce hasta que se programa el lugar en un Nodo.Además, el
viaje-muestra
no me apareció ninguna de las dos veces, no es que sea importante. Y la segundakubectl.sh expose rc couchbase --target-port=8091 --port=809--type=LoadBalancer
debe serkubectl expose rc couchbase --target-port=8091 --port=8091 --type=LoadBalancer
También podría ser interesante actualizarlo para utilizar
kops
(o haga referencia a su otro gran artículo sobre cómo hacerlo) y reemplaceReplicationController
conDespliegue
.¿Has encontrado una solución para esto? He estado tratando de crear un clúster CB con PVs. Todo parece funcionar la primera vez que se inician, pero una vez que mato a un pod cd el nuevo pod no puede unirse al clúster CB más, su ip parece estar bloqueado y el pod CB maestro no puede conectarse de nuevo el nuevo trabajador.
Saludos