Skip to content
This repository has been archived by the owner on Nov 2, 2019. It is now read-only.

Latest commit

 

History

History
131 lines (89 loc) · 5 KB

README.md

File metadata and controls

131 lines (89 loc) · 5 KB

Cluster bare metal de Kubernetes via RKE em hosts com RancherOS(ou CoreOS)

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.

Instânciação dos hosts

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

Recuperação de desastre

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

Reestabelecendo o cluster kubernetes e os serviços:

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

Instalação do Rancher

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