Nesse repositório é descrita a instalação do cluster kubernetes via Rancher Kubernetes Engine - RKE em hosts com RancherOS(ou Coreos Container Linux).
Atualmente o cluster possui as seguintes especificações de hardware:
-
1 x Dell PowerEdge R630:
- 2 x Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz
- 10 x 16 GB DDR4 2133 ECC = 160GB de RAM
- 4 x Broadcom BCM5720 em agregação de link LACP (IEEE802.3ad)
-
4 x HP Z220:
- 1 x Intel(R) Xeon(R) CPU E3-1225 V2 @ 3.20GHz
- 4 x 4 GB DDR3-1600 = 16GB de RAM
- 2 x Gigabit Ethernet (Intel 82579LM e Realtek RTL8169) em agregação de enlace com LACP
Total: 56 núcleos de processamento e 224 GB de RAM.
Para o provisionamento e configuração dos hosts foi utilizado o arquivo cloud-config, o qual é específico para cada máquina física: node1
, node2
etc. Também criamos a versão dos arquivos cloud-config para o SO Coreos Container Linux.
Os nós(hosts) são instânciados da seguinte maneira:
É feito o boot da máquina com uma iso do RancherOS
Configure a rede do host para acessar a internet(caso não tenha um DHCP).
Faça o download do arquivo de configuração do SO (cloud config):
$ wget bit.ly/noderke[1-5]
e então executa-se o seguinte comando, com seu respectivo arquivo cloud-config.yml:
$ sudo ros install -c noderke[1-5] -d /dev/sda
Então a máquina estará preparada para entrar no cluster.
Embora esteja configurado para uma versão específica do Docker, do console e do serviço volume-nfs, é necessário rodar os seguintes comandos para aplicar:
$ sudo ros console switch debian
$ sudo ros engine switch docker-17.03.2-ce
$ sudo ros service enable volume-nfs
$ sudo ros service up volume-nfs
$ sudo ros service enable open-iscsi
$ sudo ros service up open-iscsi
A versão do docker e o console são exemplos.
Instalando o kubernetes via rke:
Com a configuração do cluster.yml gerada utilizamos o seguinte comando para instalar e configurar o kubernetes:
$ ./rke up --config cluster.yml
A recuperação de desastre dessa estrutura consiste em seguir os passos desse tutorial a partir de instânciação-dos-hosts.
Caso não seja necessário reinstalar o SO, os passos são os seguintes:
Remover o cluster kubernetes:
$ ./rke remove
Acessar cada nó e rodar os seguintes comandos:
$ sudo docker stop $(docker ps -a -q)
$ sudo docker rm $(docker ps -a -q)
$ sudo docker volume prune
$ sudo rm -rf /var/lib/rook
Quando você já possui acesso via ssh (ssh rancher@nodenuvemX) a todos os hosts pode executar o comando para criar/atualizar o cluster(possuindo o arquivo cluster.yml):
$ ./rke up --config cluster.yml
Baseado nas configurações oficiais de Backups and Disaster Recovery e Creating Backups—High Availability Installs configuramos o serviço de snapshots recorrentes do etcd no cluster.yml. Os snapshots estão sendo sincronizados diariamente no servidor de monitoramento/backup em /backup/etcd_kubernetes e são gravados em fita.
Para fazer o restore do backup utilize os passos descritps em Restoring Backups—High Availability Installs.
Caso não seja possível a opção acima, é possivel recolocar os serviços no ar seguindo os passos abaixo:
Clone o repositório dos serviços: https://github.com/ctic-sje-ifsc/servicos_kubernetes
Criando todos os namespaces:
$ cd servicos_kubernetes/namespaces
$ kubectl create -f namespaces.yaml
Baixar as chaves do drive e criar todas com o comando:
$ make -i create
Depois acesse a pasta dos serviços e inicie todos com o seguinte comando:
$ cd servicos_kubernetes
$ make -i create
Seguimos o tutorial oficial:
https://rancher.com/docs/rancher/v2.x/en/installation/ha/helm-rancher/#certificates-from-files
Criando a chave:
$ kubectl -n cattle-system create secret tls tls-rancher-ingress --cert=tls.crt --key=tls.key
Subindo o serviço do Rancher via helm:
helm install rancher-stable/rancher --name rancher --namespace cattle-system --set hostname=projetos.sj.ifsc.edu.br --set ingress.tls.source=tls-rancher-ingress