Em termos simples, o kops é o kubectl para clusters de kubernetes (k8s). O poder do kubernetes é que ele elimina o aprisionamento ao fornecedor, oferece portabilidade para seus aplicativos, bancos de dados, caso seja tomada a decisão de mudar de fornecedor de nuvem ou se os fluxos de trabalho da nuvem precisarem ser transferidos para o local. Seja qual for o cenário, o kubernetes oferece essa liberdade.

KOPS Architecture

Arquitetura KOPS

Com o objetivo de fazer uma divulgação completa, é mais fácil usar as ferramentas fornecidas pelos fornecedores de nuvem. Ferramentas de código aberto, como o kops, funcionam igualmente bem e são muito eficientes.

O Operador Autônomo do Couchbase estende a API do Kubernetes criando uma Definição de Recurso Personalizado (CRD) e registrando um controlador específico do Couchbase (o Operador Autônomo) para gerenciar clusters do Couchbase.

Para este blog, usaremos o AWS como IaaS e demonstraremos o uso do kops, os recursos e o Couchbase Autonomous Operator executando o cluster do Couchbase em escala.

O que o KOPS pode fazer?

"O kops ajuda você a criar, destruir, atualizar e manter clusters Kubernetes de nível de produção e altamente disponíveis a partir da linha de comando. Atualmente, o AWS (Amazon Web Services) é oficialmente suportado, com o GCE em suporte beta e o VMware vSphere em alfa, além de outras plataformas planejadas." [1]

Vamos direto ao ponto e ver como isso funciona?

  • Instalar o kops
  • Criar um cluster do k8s no AWS
  • Configurar o painel de controle do k8s
  • Verificar e validar o cluster k8s
  • Implantar o operador autônomo do Couchbase no K8s
  • Implantar o cluster do couchbase
  • Resiliência do serviço
  • Próximas etapas

Instalar o KOPS

OSX a partir do Homebrew

Linux

 

Criar um cluster do k8s no AWS

Antes de podermos usar o kops para criar o cluster do k8s, precisamos criar políticas de IAM para o kops e para que ele possa provisionar os recursos necessários para criar o cluster do k8s. Essa é uma operação única, que precisa ser feita apenas uma vez

Pré-requisitos para kops

Instalar a CLI do AWS

Para MacOS

$ pip3 instalar awscli --upgrade --user

Para outras plataformas, clique aqui

OBSERVAÇÃO: operação única

Habilite o ambiente AWS executando "aws configure" e execute os comandos abaixo

Criar um bucket S3 para armazenar configuração/dados do kops

No meu caso, seu nome é rd-k8s-aws e para a região us-west-1

Defina as variáveis de ambiente para o armazenamento de estado do kops e o nome do cluster

Escolha qualquer nome de cluster para seu cluster, eu escolhi rdc.k8s.local

Criar um cluster k8s com o kops

Escolha a região do AWS, o tamanho da instância e a contagem de nós para o cluster do k8s.

OBSERVAÇÃO: Leva cerca de 5 a 8 minutos, um bom momento para tomar um café!

A amostra de saída é semelhante a esta

Obter os nós e validar o cluster k8s

Nesse ponto, o contexto do kubectl ou do k8s deve apontar para o cluster do AWS k8s

Configurar o painel de controle do k8s

Em uma guia/terminal diferente, execute o comando abaixo para fazer proxy do servidor api do k8s no laptop local

Obter o token para acessar o painel do k8s

Escolha a opção para usar o token e, enquanto estiver pegando o token acima, pule % no final.

Faça login no painel de controle do k8s em http://127.0.0.1:8001/ui [2]

Verificar e validar o cluster k8s

Valide o cluster k8s usando o comando

# verifique se o número de nós mencionados na criação do cluster corresponde aqui

Implantar o operador autônomo do Couchbase no K8s

Agora que implantamos o cluster do k8s, é hora de implantar o operador do couchbase

Primeiro, implantamos o operador, precisamos habilitar o RBAC para o operador, precisamos criar o ClusterRole para o Operador do Couchbase

Observação: Essa função só precisa ser criada uma vez.

Depois que o ClusterRole for criado, você precisará criar uma ServiceAccount no namespace em que está instalando o Couchbase Operator e, em seguida, atribuir o ClusterRole a essa ServiceAccount usando um Vinculação de ClusterRole. Neste guia, usaremos o padrão para criar o ServiceAccount.

Implantar o operador do couchbase

A execução desse comando faz o download da imagem do Docker do Couchbase Operator especificada no arquivo operator.yaml e cria um arquivo implantação que gerencia uma única instância do Couchbase Operator. O Couchbase Operator usa uma implantação para que possa reiniciar se o pod em que está sendo executado morrer.

Você deve continuar a sondar o status do Operador até que o resultado seja semelhante ao resultado a seguir:

Quando o operador do couchbase estiver instalado e funcionando, ele terá a seguinte aparência

Precisamos implantar o segredo para autenticar a GUI do servidor couchbase

Implante agora o cluster de 10 nós do Couchbase

Obter a listagem dos pods do couchbase

Para acessar a GUI do Couchbase, acessaremos a porta 8091 e, para isso, podemos realizar o encaminhamento de porta da seguinte forma

A GUI do servidor Couchbase pode ser acessada em http://localhost:8091

Resiliência do serviço

Para mostrar a resiliência do serviço, podemos eliminar um pod, simulando a perda de um nó do couchbase.

O maior recurso que o Kubernetes nos oferece é a resiliência do serviço: se perdermos um pod, o Kubernetes verificará a definição do cluster e entenderá que ele precisa ter 3 pods e criará um novo, adicionará ao cluster e, em seguida, fará o rebalanceamento no cluster. Dessa forma, elimina-se a tarefa administrativa crucial de monitorar o cluster quanto a falhas de nós, decidir o que fazer quando isso acontecer e, em seguida, executar a operação de rebalanceamento. Tudo isso acontece de forma oculta, e os aplicativos serão executados sem interrupções.

Se listarmos os pods novamente, veremos algo parecido com isto

A instalação do cbc-pillowfight para gerar a carga KV nos dá uma ideia de quais são os limites que podemos atingir nesse cluster

No servidor de aplicativo único, executando o pillowfight com os seguintes parâmetros

KV performance with pillowfight

Desempenho da KV com briga de travesseiros

Com um único servidor de aplicativos, conseguimos obter ~34K Ops/Sec

Aumentando o nível, usando outro servidor de aplicativos para executar o pillowfight, podemos obter mais desempenho na ordem de ~51k Ops/Sec

KV performance with pillowfight

Desempenho da KV com briga de travesseiros

Conclusão

O que aprendemos aqui é que, com o uso do kops, é muito fácil implantar clusters do Couchbase em escala, e o operador autônomo oferece benefícios como resiliência de serviço, reequilíbrio automático, criação automática de buckets, fácil integração com o pipeline de CI/CD. Os arquivos yaml podem ser padronizados para Dev/QA/UAT e prod.

Referências:

[1] https://github.com/kubernetes/kops

[2] Solução de problemas do painel do k8s

 

Autor

Postado por Ram Dhakne

Ram Dhakne é consultor de soluções - Oeste dos EUA na Couchbase. Atualmente, ele ajuda clientes corporativos em sua jornada de inovações digitais e os ajuda a adotar tecnologias NoSQL. Seus interesses atuais são executar aplicativos persistentes como o servidor NoSQL Couchbase em clusters Kubernetes executados em AKS, GKE, ACS e OpenShift, protegendo de ponta a ponta no Kubernetes. Em sua vida pregressa, trabalhou em plataformas IaaS (AWS, GCP, Azure e nuvens privadas), produtos-alvo de backup corporativo e aplicativos de backup.

Deixar uma resposta