Klusterkit

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:


  1. CLI para gerenciamento simplificado de cluster, etc.
  2. nodeadm , uma CLI de administração de nó que complementa o kubeadm e implementa as dependências necessárias ao kubeadm.
  3. 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 .

Source: https://habr.com/ru/post/pt449214/


All Articles