Uno de los asistentes de Formación en Kubernetes para desarrolladores Java sugirió probar minikube para simplificar el desarrollo y las pruebas de Kubernetes. Este blog mostrará
cómo empezar con minikube utilizando una sencilla aplicación Java.
Minikube inicia un clúster Kubernetes de un solo nodo en su máquina local para un rápido desarrollo y pruebas. Requisitos enumera
el conjunto exacto de requisitos para los distintos sistemas operativos.
Este blog lo demostrará:
- Iniciar un clúster Kubernetes de un nodo
- Ejecutar el servicio Couchbase
- Ejecutar aplicación Java
- Ver el panel de control de Kubernetes
Todos los archivos de descripción de recursos de Kubernetes utilizados en este blog se encuentran en github.com/arun-gupta/kubernetes-java-sample/tree/master/maven.
Iniciar un clúster Kubernetes con Minikube
Crear un nuevo directorio con el nombre minikube
. En ese directorio, descargue kubectl
CLI:
1 |
rizo -Lo kubectl http://storage.googleapis.com/kubernetes-release/release/v1.4.0/bin/darwin/amd64/kubectl && chmod +x kubectl |
Descargar minikube
CLI:
1 |
rizo -Lo minikube https://storage.googleapis.com/minikube/releases/v0.10.0/minikube-darwin-amd64 && chmod +x minikube |
Inicie el clúster:
1 2 3 |
minikube iniciar Inicio local Kubernetes grupo... Kubectl es ahora configurado a utilice el grupo. |
Se puede ver la lista de nodos:
1 2 3 |
kubectl consiga nodos NOMBRE ESTADO EDAD minikube Listo 2h |
Se pueden obtener más detalles sobre el clúster utilizando la función kubectl cluster-info
mando:
1 2 3 4 5 |
kubectl grupo-información Kubernetes maestro es corriendo en https://192.168.99.100:8443 kubernetes-salpicadero es corriendo en https://192.168.99.100:8443/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard A más depurar y diagnosticar grupo problemas, utilice 'kubectl grupo-información vertedero'. |
Entre bastidores, se inicia una VM de Virtual Box. El conjunto completo de comandos soportados puede verse usando --ayuda
:
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 |
minikube --ayuda Minikube es a CLI herramienta que disposiciones y gestiona solo-nodo Kubernetes racimos optimizado para desarrollo flujos de trabajo. Utilización: minikube [comando] Disponible Comandos: salpicadero Abre/muestra el kubernetes salpicadero URL para su local grupo borrar Borra a local kubernetes grupo. docker-env establece arriba docker env variables; similar a '$(docker-máquina env)' consiga-k8s-versiones Obtiene el lista de disponible kubernetes versiones disponible para minikube. ip Recuperar el IP dirección de el corriendo grupo. Registros Obtiene el Registros de el corriendo localkube instancia, usado para depuración minikube, no usuario código. config Modifique minikube config servicio Obtiene el kubernetes URL para el especificado servicio en su local grupo ssh Registro en o ejecute a comando en a máquina con SSH; similar a 'docker-máquina ssh' iniciar Inicia a local kubernetes grupo. estado Obtiene el estado de a local kubernetes grupo. stop Detiene a corriendo local kubernetes grupo. versión Imprimir el versión de minikube. Banderas: --alsologtostderr[=falso]: registro a estándar error como bien como archivos --registro-descarga-frecuencia=5s: Máximo número de segundos entre registro descarga --log_backtrace_at=:0: cuando registro hits línea archivo:N, emite a pila rastrear --log_dir="": Si no-vacío, escriba a registro archivos en este directorio --logtostderr[=falso]: registro a estándar error en su lugar de archivos --Mostrar-libmachine-Registros[=falso]: Si o no a Mostrar Registros de libmachine. --stderrthreshold=2: Registros en o sobre este umbral ir a stderr --v=0: registro nivel para V Registros --vmódulo=: coma-separado lista de patrón=N ajustes para archivo-filtrado registro Utilice "minikube [comando] --help" para más información acerca de a comando. |
Ejecutar el servicio Couchbase
Crear un Couchbase servicio:
1 2 3 |
kubectl crear -f couchbase-servicio.yml servicio "couchbase-service" creado controlador de réplica "couchbase-rc" creado |
Esto iniciará un servicio Couchbase. El servicio utiliza los pods creados por el controlador de replicación. El controlador de replicación crea un servidor Couchbase de nodo único. El archivo de configuración está en github.com/arun-gupta/kubernetes-java-sample/blob/master/maven/couchbase-service.yml y parece:
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 |
apiVersion: v1 amable: Servicio metadatos: nombre: couchbase-servicio spec: selector: aplicación: couchbase-rc-vaina puertos: - nombre: admin puerto: 8091 - nombre: vistas puerto: 8092 - nombre: consulta puerto: 8093 - nombre: memcached puerto: 11210 --- apiVersion: v1 amable: ReplicationController metadatos: nombre: couchbase-rc spec: réplicas: 1 plantilla: metadatos: etiquetas: aplicación: couchbase-rc-vaina spec: contenedores: - nombre: couchbase imagen: arungupta/oreilly-couchbase puertos: - containerPort: 8091 - containerPort: 8092 - containerPort: 8093 - containerPort: 11210 |
Ejecutar aplicación Java
Ejecuta la aplicación:
1 2 |
kubectl crear -f bootiful-couchbase.yml empleo "bootiful-couchbase" creado |
El archivo de configuración se encuentra en github.com/arun-gupta/kubernetes-java-sample/blob/master/maven/bootiful-couchbase.yml y parece:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
apiVersion: lote/v1 amable: Empleo metadatos: nombre: bootiful-couchbase etiquetas: nombre: bootiful-couchbase-vaina spec: plantilla: metadatos: nombre: bootiful-couchbase-vaina spec: contenedores: - nombre: bootiful-couchbase imagen: arungupta/bootiful-couchbase env: - nombre: COUCHBASE_URI valor: couchbase-servicio restartPolicy: Nunca |
Esto es trabajo de una sola ejecución que ejecuta una aplicación Java (Spring Boot) y upserts (inserta o actualiza) un documento JSON en Couchbase. En este trabajo, COUCHBASE_URI
valor de la variable de entorno
se establece en servicio couchbase
. Este es el nombre del servicio creado anteriormente. La imagen Docker utilizada para este servicio es arungupta/bootiful-couchbase
y se crea utilizando fabric8-maven-plugin como se muestra en github.com/arun-gupta/kubernetes-java-sample/blob/master/maven/webapp/pom.xml#L57-L68. En concreto, el comando para el Docker
imagen es:
1 |
java -Dspring.couchbase.arranque-alberga=$COUCHBASE_URI -tarro /maven/${proyecto.artifactId}.tarro |
Esto garantiza que COUCHBASE_URI
anula la variable de entorno spring.couchbase.bootstrap-hosts
tal y como se define en aplicación.propiedades de la aplicación Spring Boot.
Panel de control de Kubernetes
Kubernetes 1.4 incluye un dashboard actualizado. Para minikube, se puede abrir con el siguiente comando:
1 2 |
minikube salpicadero En espera, punto final para servicio es no listo pero...Apertura kubernetes salpicadero en por defecto navegador... |
A continuación se muestra la vista por defecto:
Pero en nuestro caso, algunos recursos ya han sido creados y por lo tanto esto se verá como se muestra:
Fíjate, aquí se muestran nuestros Jobs, Replication Controllers y Pods.
Apagar el clúster Kubernetes
El clúster se puede apagar fácilmente:
1 2 3 |
minikube stop Detener local Kubernetes grupo... Máquina parado. |
couchbase.com/contenedores proporcionan más detalles sobre cómo ejecutar Couchbase utilizando diferentes marcos de orquestación. Más referencias:
- Foros de Couchbase o StackOverflow
- Síguenos en @couchbasedev o @couchbase
- Más información Servidor Couchbase