Um dos participantes da Treinamento Kubernetes para desenvolvedores Java sugeriu experimentar o minikube para desenvolvimento e teste simplificados do Kubernetes. Este blog mostrará
como começar a usar o minikube usando um aplicativo Java simples.
Minikube inicia um cluster Kubernetes de nó único em seu computador local para desenvolvimento e testes rápidos. Requisitos listas
o conjunto exato de requisitos para diferentes sistemas operacionais.
Este blog mostrará:
- Iniciar um cluster Kubernetes de um nó
- Executar o serviço Couchbase
- Executar o aplicativo Java
- Exibir o painel do Kubernetes
Todos os arquivos de descrição de recursos do Kubernetes usados neste blog estão em github.com/arun-gupta/kubernetes-java-sample/tree/master/maven.
Iniciar o cluster Kubernetes usando o Minikube
Crie um novo diretório com o nome minikube
. Nesse diretório, faça o download de kubectl
CLI:
1 |
enrolar -Lo kubectl http://storage.googleapis.com/kubernetes-release/release/v1.4.0/bin/darwin/amd64/kubectl && chmod +x kubectl |
Baixar minikube
CLI:
1 |
enrolar -Lo minikube https://storage.googleapis.com/minikube/releases/v0.10.0/minikube-darwin-amd64 && chmod +x minikube |
Inicie o cluster:
1 2 3 |
minikube iniciar Início local Kubernetes agrupamento... Kubectl é agora configurado para uso o agrupamento. |
A lista de nós pode ser vista:
1 2 3 |
kubectl obter nós NOME STATUS IDADE minikube Pronto 2h |
Mais detalhes sobre o cluster podem ser obtidos usando o comando kubectl cluster-info
comando:
1 2 3 4 5 |
kubectl agrupamento-informações Kubernetes mestre é em execução em https://192.168.99.100:8443 kubernetes-painel de controle é em execução em https://192.168.99.100:8443/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard Para mais depurar e diagnosticar agrupamento problemas, uso 'kubectl agrupamento-informações lixão'. |
Nos bastidores, uma VM do Virtual Box é iniciada. O conjunto completo de comandos suportados pode ser visto usando -ajuda
:
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 --ajuda Minikube é a CLI ferramenta que provisões e gerencia único-nó Kubernetes agrupamentos otimizado para desenvolvimento fluxos de trabalho. Uso: minikube [comando] Disponível Comandos: painel de controle Abre/displays o kubernetes painel de controle URL para seu local agrupamento excluir Exclui a local kubernetes agrupamento. doca-env conjuntos para cima doca env variáveis; semelhante para '$(doca-máquina env)' obter-k8s-versões Obtém o lista de disponível kubernetes versões disponível para minikube. ip Recuperar o IP endereço de o em execução agrupamento. registros Obtém o registros de o em execução localkube instância, usado para depuração minikube, não usuário código. configuração Modificar minikube configuração serviço Obtém o kubernetes URL para o especificado serviço em seu local agrupamento ssh Registro em ou executar a comando em a máquina com SSH; semelhante para 'doca-máquina ssh' iniciar Início a local kubernetes agrupamento. status Obtém o status de a local kubernetes agrupamento. parar Paradas a em execução local kubernetes agrupamento. versão Imprimir o versão de minikube. Bandeiras: --alsologtostderr[=falso]: registro para padrão erro como bem como arquivos --registro-descarga-frequência=5s: Máximo número de segundos entre registro descargas --log_backtrace_at=:0: quando registro sucessos linha arquivo:N, emitir a pilha rastro --log_dir="": Se não-vazio, escrever registro arquivos em este diretório --logtostderr[=falso]: registro para padrão erro em vez disso de arquivos --show-Biblioteca-registros[=falso]: Se ou não para show registros de Biblioteca. --Limite de stderr=2: registros em ou acima este limite ir para stderr --v=0: registro nível para V registros --vmódulo=: vírgula-separados lista de padrão=N configurações para arquivo-filtrada registro Uso "minikube [comando] --help" para mais informações sobre a comando. |
Executar o serviço Couchbase
Criar um Couchbase serviço:
1 2 3 |
kubectl criar -f couchbase-serviço.yml serviço "couchbase-service" criado controlador de replicação "couchbase-rc" criado |
Isso iniciará um serviço do Couchbase. O serviço está usando os pods criados pelo controlador de replicação. O controlador de replicação cria um servidor Couchbase de nó único. O arquivo de configuração está em github.com/arun-gupta/kubernetes-java-sample/blob/master/maven/couchbase-service.yml e se parece com isso:
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 |
Versão da API: v1 gentil: Serviço metadados: nome: couchbase-serviço especificação: seletor: aplicativo: couchbase-rc-cápsula portos: - nome: administrador porto: 8091 - nome: visualizações porto: 8092 - nome: consulta porto: 8093 - nome: memcached porto: 11210 --- Versão da API: v1 gentil: ReplicationController metadados: nome: couchbase-rc especificação: réplicas: 1 modelo: metadados: rótulos: aplicativo: couchbase-rc-cápsula especificação: contêineres: - nome: couchbase imagem: arungupta/oreilly-couchbase portos: - containerPort: 8091 - containerPort: 8092 - containerPort: 8093 - containerPort: 11210 |
Executar aplicativo Java
Execute o aplicativo:
1 2 |
kubectl criar -f bonito-couchbase.yml trabalho "bootiful-couchbase" criado |
O arquivo de configuração está em github.com/arun-gupta/kubernetes-java-sample/blob/master/maven/bootiful-couchbase.yml e se parece com isso:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Versão da API: lote/v1 gentil: Trabalho metadados: nome: bonito-couchbase rótulos: nome: bonito-couchbase-cápsula especificação: modelo: metadados: nome: bonito-couchbase-cápsula especificação: contêineres: - nome: bonito-couchbase imagem: arungupta/bonito-couchbase env: - nome: COUCHBASE_URI valor: couchbase-serviço restartPolicy: Nunca |
Isso é trabalho executado uma única vez que executa um aplicativo Java (Spring Boot) e faz upserts (inserção ou atualização) de um documento JSON no Couchbase. Neste trabalho, COUCHBASE_URI
valor da variável de ambiente
é definido como serviço couchbase
. Esse é o nome do serviço criado anteriormente. A imagem do Docker usada para esse serviço é arungupta/bootiful-couchbase
e é criado usando fabric8-maven-plugin conforme mostrado em github.com/arun-gupta/kubernetes-java-sample/blob/master/maven/webapp/pom.xml#L57-L68. Especificamente, o comando para o Docker
A imagem é:
1 |
java -Dspring.couchbase.bootstrap-anfitriões=$COUCHBASE_URI -frasco /mentor/${projeto.artifactId}.frasco |
Isso garante que COUCHBASE_URI
está substituindo a variável de ambiente spring.couchbase.bootstrap-hosts
conforme definido em application.properties do aplicativo Spring Boot.
Painel de controle do Kubernetes
O Kubernetes 1.4 incluiu um painel de controle atualizado. Para o minikube, ele pode ser aberto usando o seguinte comando:
1 2 |
minikube painel de controle Em espera, ponto final para serviço é não pronto ainda...Abertura kubernetes painel de controle em padrão navegador... |
A visualização padrão é mostrada abaixo:
Mas, no nosso caso, alguns recursos já foram criados e, portanto, a aparência será a mostrada:
Observe que nossos Jobs, controladores de replicação e pods são mostrados aqui.
Encerrar o cluster do Kubernetes
O cluster pode ser facilmente desligado:
1 2 3 |
minikube parar Parada local Kubernetes agrupamento... Máquina interrompido. |
couchbase.com/containers fornecem mais detalhes sobre a execução do Couchbase usando diferentes estruturas de orquestração. Outras referências:
- Fóruns do Couchbase ou StackOverflow
- Siga-nos em @couchbasedev ou @couchbase
- Leia mais sobre Servidor Couchbase