Script de Configuração de Cluster Kubernetes
Este script automatiza a configuração de um cluster Kubernetes usando Multipass para máquinas virtuais e HAProxy para balanceamento de carga. Ele permite criar um cluster Kubernetes altamente disponível com recursos personalizáveis para nós master e worker.
Pré-requisitos
- Multipass: Certifique-se de que o Multipass está instalado em sua máquina. Veja Instalação do Multipass.
- kubectl: Instale o
kubectlpara interagir com seu cluster Kubernetes. Veja guia de instalação do kubectl. - jq: Instale o
jqpara análise JSON. Executesudo apt-get install jqou siga o guia oficial.
Referências
- Multipass
- Instalação Docker
- Criando Clusters Altamente Disponíveis com kubeadm
- Instalando kubeadm
- CRI-O
- Weaveworks
- Tutoriais LUNXXtips YouTube
Uso
Clonar o Repositório:
git clone https://github.com/eliasmeireles/k8s.git cd k8s/learning/cluster-generateExecutar o Script:
./setup
Opções
| Opção | Descrição | Valor Padrão |
|---|---|---|
--base-name | Nome base para o cluster (obrigatório) | - |
--cluster-version | Versão do cluster Kubernetes (ex: v1.27) | - |
--num-masters | Número de nós master (obrigatório) | - |
--num-workers | Número de nós worker (obrigatório) | - |
--master-mem | Memória para nós master | 2G |
--master-cpus | CPUs para nós master | 2 |
--master-disk | Tamanho do disco para nós master | 22G |
--worker-mem | Memória para nós worker | 4G |
--worker-cpus | CPUs para nós worker | 2 |
--worker-disk | Tamanho do disco para nós worker | 32G |
--haproxy-disk | Tamanho do disco para nó HAProxy | 24G |
--haproxy-cpu | CPUs para nó HAProxy | 2 |
--haproxy-memory | Memória para nó HAProxy | 4G |
--help | Exibir mensagem de ajuda | - |
Exemplo
./scripts/setup --base-name dev-k8s --cluster-version v1 --num-masters 3 --num-workers 4 --master-mem 3G --worker-mem 6G
- Este comando criará um cluster Kubernetes chamado
dev-k8s, com versãov1, 3 nós master e 4 nós worker. Os nós master terão 3GB de memória e os nós worker terão 6GB de memória.
Configuração de Rede
O script aplica automaticamente um plugin de rede. Para arquiteturas não-ARM, Weave é usado:
kubectl apply -f https://github.com/weaveworks/weave/releases/download/v2.8.1/weave-daemonset-k8s.yaml
Para arquiteturas ARM, Calico é aplicado:
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
Registro de Logs
- Os logs de cada execução são armazenados no diretório
./.tempcom nomes de arquivo baseados no timestamp da execução.
Notas
- O script assume um ambiente semelhante ao Unix.
- Certifique-se de ter recursos suficientes (CPU, memória, espaço em disco) em sua máquina host para executar as máquinas virtuais.
- Cada nó criado terá a configuração necessária e a configuração do Kubernetes executada via script transferido (
kube-config.sh).
Exemplo de Saída
Após completar os passos descritos na configuração do nó Master, você verá a saída abaixo:



Instalando kube-prometheus
Para monitorar seu cluster, você pode instalar o kube-prometheus:
Certifique-se de ter verificado o contexto esperado do cluster
make apply-kube-prometheus
Quando todos os pods no namespace monitoring estiverem em execução, acesse o dashboard do Prometheus:
Acesse o dashboard em http://monitor.v1.k8s.local e use as credenciais padrão (admin/admin).
Limpeza
Para deletar todas as instâncias criadas pelo script, use:
./scripts/delete-instances.sh <padrão>
Substitua <padrão> por uma palavra-chave que corresponda aos nomes das instâncias a deletar.
Autor
Criado por Elias Meireles.