KlusterKit: um kit de ferramentas de código aberto para simplificar as implantações do Kubernetes e trabalhar em ambientes locais fisicamente isolados.

Hoje, temos o prazer de anunciar que a Platform9 está abrindo o código-fonte do Klusterkit, um kit de três ferramentas, sob a licença Apache v2.0 no GitHub.
Nossos clientes implementam software em data centers privados, que geralmente não estão conectados à Internet (por motivos de segurança ou por outros motivos). Essas grandes empresas querem tirar proveito do Kubernetes e modernizar seus aplicativos e, ao mesmo tempo, lançá-los em diferentes data centers, que geralmente não têm conexão com o mundo externo. E aqui o Klusterkit vem em socorro, o que simplifica a entrega e o gerenciamento de clusters K8s em ambientes fisicamente isolados.
O Klusterkit inclui três ferramentas independentes que podem ser usadas juntas ou separadamente para gerenciar o ciclo de vida do cluster de produção Kubernetes:
- CLI para gerenciamento simplificado de cluster, etc.
- nodeadm , uma CLI de administração de nó que complementa o kubeadm e implementa as dependências necessárias ao kubeadm.
- cctl , uma ferramenta de gerenciamento de ciclo de vida de cluster que aceita a API de cluster da comunidade Kubernetes e usa nodeadm e etcdadm para fornecer e manter facilmente clusters Kubernetes altamente disponíveis em ambientes locais e até isolados fisicamente.
Juntas, essas três ferramentas executam as seguintes tarefas:
- Envie e gerencie facilmente o cluster etcd de alta disponibilidade e o painel de controle do Kubernetes em ambientes locais fisicamente isolados por meio da API do cluster.
- Restaure o painel de controle do cluster após uma falha usando o backup etcd.
- Empacotando todos os artefatos necessários para entregar o Kubernetes em ambientes fisicamente isolados.
Recursos do Klusterkit
- Suporte para vários assistentes (cluster K8s HA).
- Fornecimento e gerenciamento de clusters seguros etcd
- Trabalhe em ambientes fisicamente isolados.
- Suporte para atualização e reversão sequenciais.
- Flanela (vxlan) como CNI para o back-end; planeja apoiar outras CNI.
- Fazendo backup e restaurando clusters etcd após perder um quorum.
- Protege o painel de controle contra a falta de memória e tempo de CPU.
Arquitetura da solução Klusterkit

Para tolerância a falhas e simplicidade, o Klusterkit usa um único arquivo cctl-state.yaml para armazenar os metadados do cluster Kubernetes. Por meio da CLI do cctl, você pode gerenciar o ciclo de vida de um cluster Kubernetes em qualquer máquina que possua esse arquivo de status. Pode ser o laptop de um operador ou qualquer outro computador que faça parte de um cluster Kubernetes.
O Cctl implementa e chama da interface upstream cluster-api como uma biblioteca de operações CRUD em clusters. Ele usa o ssh-provider , um provedor de API de cluster bare-metal de código aberto da Platform9, que por sua vez chama etcdadm e nodeadm para executar operações no cluster.
Como usar o Klusterkit e seus componentes:
1 - Qualquer uma das três ferramentas pode ser facilmente montada com o comando go get:
go get -u github.com/platform9/cctl go get -u github.com/platform9/nodeadm go get -u github.com/kubernetes-sigs/etcdadm
2 - Em seguida, esses arquivos executáveis podem ser empacotados e copiados para as máquinas de destino nas quais o cluster Kubernetes altamente acessível deve ser executado. Coloque os arquivos nodeadm e etcdadm nos diretórios da versão:
cp $GOPATH/bin/nodeadm /var/cache/ssh-provider/nodeadm// cp $GOPATH/bin/etcdadm /var/cache/ssh-provider/etcdadm//
3 - Se necessário, orquestre o cluster Kubernetes localmente, em um ambiente fisicamente isolado, as dependências necessárias podem ser facilmente baixadas com antecedência no computador com acesso à Internet usando o comando nodeadm e etcdadm download. Em seguida, os elementos baixados (ou seja, kubelet e o arquivo da unidade kubelet para systemd, arquivo executável CNI, arquivo kubeadm, todas as imagens de contêiner, incluindo Kubernetes, imagem mantida e arquivo systemd, imagem de contêiner etcd e arquivos de configuração correspondentes) podem ser facilmente copiados para hosts fisicamente isolados, juntamente com cctl, nodeadm e etcdadm. (Veja o wiki para detalhes).
4 - Quando tudo estiver no lugar, você pode criar o primeiro cluster do Kubernetes com alguns comandos:
- Primeiro crie credenciais para o cluster.
$GOPATH/bin/cctl create credential --user root --private-key ~/.ssh/id_rsa
- Em seguida, crie um objeto de cluster. –Ajuda lista as opções suportadas.
$GOPATH/bin/cctl create cluster --pod-network 192.168.0.0/16 --service-network 192.169.0.0/24
- Finalmente, crie a primeira máquina no cluster.
$GOPATH/bin/cctl create machine --ip $MACHINE_IP --role master
Leia mais documentação no GitHub .