Este blog é possível graças a este tuíte!
Tive uma ótima #Couchbase #Kubernetes sessão de hacking com @saturnismoAprendi muito, estou ansioso para ver outros blogs legais.
- Arun Gupta (@arungupta) 27 de fevereiro de 2016

O Kubernetes é um sistema de orquestração de código aberto do Google para contêineres do Docker. Ele gerencia aplicativos em contêineres em vários hosts e fornece mecanismos básicos para implantação, manutenção e dimensionamento de aplicativos. Ele permite que o usuário forneça primitivos declarativos para o estado desejado, por exemplo, "preciso de 5 servidores Couchbase". Os mecanismos de autocorreção do Kubernetes, como reinicialização automática, reprogramação e replicação de contêineres, garantem que esse estado seja atendido. O usuário apenas define o estado e o Kubernetes garante que o estado seja atendido em todos os momentos no cluster. Principais conceitos do Kubernetes explica os principais conceitos do Kubernetes. Esta série de blog em várias partes mostrará como executar Couchbase no Kubernetes de várias maneiras. A primeira parte começa com uma configuração simples usando o Vagrant.
Primeiros passos com o Kubernetes
Há várias maneiras de executar o Kubernetes, mas descobri que a maneira mais simples (não necessariamente previsível;) é executar usando o Vagrant.
- Faça o download da versão mais recente Lançamento do Kubernetes1.1.8 no momento da redação deste documento e expandir o arquivo.
- Inicie o cluster do Kubernetes como:
1234cd kubernetesexportação PROVEDOR DE KUBERNETES=vagabundo./agrupamento/cubo-para cima.sh
Isso mostra a saída como:
12345678910111213141516171819202122232425kubernetes-1.1.8 > ./kubernetes/agrupamento/cubo-para cima.sh... Início agrupamento usando provedor: vagabundo... chamando verificar-pré-requisitos... chamando cubo-para cimaTrazendo máquina "mestre para cima com 'virtualbox' provedor...Trazendo máquina 'minion-1' para cima com 'virtualbox' provedor...==> mestre: Importação base caixa 'kube-fedora21'.... . .Validar saída:NOME STATUS MENSAGEM ERROcontrolador-gerente Saudável ok nuloprogramador Saudável ok nuloetcd-0 Saudável {"saúde": "true" (verdadeiro)} nuloetcd-1 Saudável {"saúde": "true" (verdadeiro)} nuloAglomerado validação bem-sucedidoFeito, listagem agrupamento serviços:Kubernetes mestre é em execução em https://10.245.1.2Heapster é em execução em https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/heapsterKubeDNS é em execução em https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/kube-dnsKubeUI é em execução em https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/kube-uiGrafana é em execução em https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/monitoring-grafanaInfluxDB é em execução em https://10.245.1.2/api/v1/proxy/namespaces/kube-system/services/monitoring-influxdb
Executar o Couchbase no cluster do Kubernetes
A maneira mais fácil de começar a executar um contêiner do Docker no Kubernetes é usar o execução do kubectl comando. O uso do comando é:
|
1 |
kubectl executar NOME --imagem=imagem [--env="key=value" (chave=valor)] [--porto=porto] [--réplicas=réplicas] [--seco-executar=bool] [--substitui=inline-json] [bandeiras] |
O comando executa uma imagem específica, possivelmente replicada. A replicação da imagem é feita por meio da criação de um controlador de replicação para gerenciar o(s) contêiner(es) criado(s). A lista completa de opções para executar esse comando pode ser vista usando:
|
1 |
./agrupamento/kubectl.sh executar --ajuda |
Contêiner do Docker do Couchbase explica os diferentes contêineres do Docker para o Couchbase. Para este blog, usaremos o arungupta/couchbase pois essa imagem é pré-configurada.
|
1 |
./agrupamento/kubectl.sh executar couchbase --imagem=arungupta/couchbase |
Isso mostra o resultado:
|
1 |
controlador de replicação "couchbase" criado |
A saída confirma que um controlador de replicação foi criado. Vamos verificar isso:
|
1 2 3 |
./kubernetes/agrupamento/kubectl.sh obter rc CONTROLADOR CONTAINER(S) IMAGEM(S) SELETOR RÉPLICAS IDADE couchbase couchbase arungupta/couchbase executar=couchbase 1 17s |
Agora, verifique as vagens:
|
1 2 3 |
./kubernetes/agrupamento/kubectl.sh obter po NOME PRONTO STATUS RESTARTS IDADE couchbase-tzdhl 0/1 Pendente 0 36s |
Vamos verificar o status do pod:
|
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 |
./kubernetes/agrupamento/kubectl.sh descrever cápsula couchbase-tzdhl Nome: couchbase-tzdhl Namespace: padrão Imagem(s): arungupta/couchbase Nó: 10.245.1.4/10.245.1.4 Início Tempo: Sex, 26 fevereiro 2016 18:05:10 -0800 Rótulos: executar=couchbase Status: Em execução Motivo: Mensagem: IP: 10.246.67.2 Replicação Controladores: couchbase (1/1 réplicas criado) Contêineres: couchbase: Contêineres ID: doca://56dddb66bf60a590e588b972d5cae997ec96149066a9fb8075548c982eb14961 Imagem: arungupta/couchbase Imagem ID: doca://080e2e96b3fc22964f3dec079713cdf314e15942d6eb135395134d629e965062 QoS Nível: CPU: Estável Solicitações: CPU: 100m Estado: Em execução Iniciado: Sex, 26 fevereiro 2016 18:05:56 -0800 Pronto: Verdadeiro Reiniciar Contagem: 0 Meio ambiente Variáveis: Condições: Tipo Status Pronto Verdadeiro Volumes: padrão-token-clfeb: Tipo: Secreto (a segredo que deve preencher este volume) SecretName: padrão-token-clfeb Eventos: FirstSeen Visto pela última vez Contagem De SubobjetoCaminho Motivo Mensagem ───────── ──────── ───── ──── ───────────── ────── ─────── 1m 1m 1 {programador } Programado Com sucesso atribuído couchbase-tzdhl para 10.245.1.4 1m 1m 1 {cubeta 10.245.1.4} implicitamente necessário contêiner POD Puxar Puxar imagem "gcr.io/google_containers/pause:0.8.0" 59s 59s 1 {cubeta 10.245.1.4} implicitamente necessário contêiner POD Criado Criado com doca id 2dac5f81f4c2 59s 59s 1 {cubeta 10.245.1.4} especificação.contêineres{couchbase} Puxar Puxar imagem "arungupta/couchbase" 59s 59s 1 {cubeta 10.245.1.4} implicitamente necessário contêiner POD Iniciado Iniciado com doca id 2dac5f81f4c2 59s 59s 1 {cubeta 10.245.1.4} implicitamente necessário contêiner POD Puxado Com sucesso puxado imagem "gcr.io/google_containers/pause:0.8.0" 19s 19s 1 {cubeta 10.245.1.4} especificação.contêineres{couchbase} Puxado Com sucesso puxado imagem "arungupta/couchbase" 18s 18s 1 {cubeta 10.245.1.4} especificação.contêineres{couchbase} Criado Criado com doca id 56dddb66bf60 18s 18s 1 {cubeta 10.245.1.4} especificação.contêineres{couchbase} Iniciado Iniciado com doca id 56dddb66bf60 |
A quinta linha da saída informa que o IP do nó é 10.245.1.4. Isso será usado para acessar o Console da Web posteriormente. A última linha dessa saída mostra que o pod agora está pronto. A verificação do status do pod mostra novamente:
|
1 2 3 |
./kubernetes/agrupamento/kubectl.sh obter po NOME PRONTO STATUS RESTARTS IDADE couchbase-tzdhl 1/1 Em execução 0 2m |
Console da Web do Couchbase no cluster do Kubernetes
Agora que seu contêiner do Couchbase está em execução no cluster do Kubernetes, talvez você queira visualizar o Console da Web. Cada pod recebe um endereço IP exclusivo, mas esse endereço só pode ser acessado dentro do cluster. Ele pode ser exposto usando o comando kubectl expose comando. Esse comando pega um controlador de replicação, serviço ou pod e o expõe como um novo serviço do Kubernetes. Isso pode ser feito com o comando:
|
1 2 |
./agrupamento/kubectl.sh expor rc couchbase --alvo-porto=8091 --porto=8091 --externo-ip=10.245.1.4 serviço "couchbase" exposto |
Nesse comando:
--target-porté o nome ou o número da porta no contêiner para a qual o serviço deve direcionar o tráfego--portaé a porta em que o serviço deve atuar--external-ipé o endereço IP externo a ser definido para o serviço. Observe que esse endereço IP foi obtido comkubectl describe podanteriormente.
Agora, você pode acessar o Console da Web do Couchbase em http://10.245.1.4:8091 e ter a seguinte aparência:

Digite as credenciais de senha como Administrador/senha.

Pronto!
Converse conosco em StackOverflow ou Fóruns do Couchbase. Você também pode nos seguir em @couchbasedev e @couchbase.