Documentação em construção para utilização de containers

Instalando o Docker

Instalando o Kubectl

Criando cluster Kubernetes com Minikube

Criando cluster Kubernetes com Kind

Avançando com Kind

Desativar partição SWAP

Habilitar SSH




Links Relacionados




Materiais de consulta:




Créditos:


-Já tem inúmeros conteúdos por ai, mas não tem nenhum que foi você que fez.
-Não tem o seu ponto de vista sobre isso.
Kubicast #95 - FOMGO - Fear of missing Gomex com Gomex (Rafael Gomes) e João Brito

Instalando o Docker

Abra o terminal e atualize o gerenciador de pacotes:

sudo apt update

Adicione a chave GPG do repositório do Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Adicione o repositório do Docker às fontes do APT:

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Atualize o gerenciador de pacotes novamente:

sudo apt update

Instale o Docker CE:

sudo apt install docker-ce

Verifique se o Docker foi instalado corretamente executando o comando:

docker --version

Com isso, o Docker estará instalado e pronto para ser utilizado. É importante lembrar de adicionar o usuário atual ao grupo docker para poder executar comandos do Docker sem utilizar o sudo. Isso pode ser feito com o comando:

sudo usermod -aG docker $USER

Instalando Docker Compose

Ubuntu:

Para instalar o Docker Compose atualize o gerenciador de pacotes e rode o comando de instalação:

sudo apt-get update
sudo apt-get install docker-compose-plugin

Verifique a instalação:

docker compose version

Instalando o Kubectl

Linux

Instale o kubectl na sua máquina Linux usando o seguinte comando:

sudo apt update
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl

Dê permissões de execução para o arquivo:

chmod +x ./kubectl

Mova o arquivo para o diretório de binários do sistema:

sudo mv ./kubectl /usr/local/bin/kubectl

Verifique se o kubectl foi instalado corretamente executando o comando:

kubectl version

macOS

Faça o download da última versão:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"

Valide o arquivo de instalaçao:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl.sha256"
echo "$(cat kubectl.sha256)  kubectl" | shasum -a 256 --check
kubectl: OK

Dê permisão de execução para o arquivo

chmod +x ./kubectl

Movo o arquivo binário para o PATH do sistema:

sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root: /usr/local/bin/kubectl

Verifique a isntalação:

kubectl version --client

Você também pode instalar utilizando o brew:

brew install kubectl
kubectl version --client

Adicionando o alias k para o comando kubectl:

Bash

echo "alias k=kubectl" >> ~/.bashrc
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc

Zsh

echo "alias k=kubectl" >> ~/.zshrc

Caso ao reiniciar ou abrir uma nova aba o alias k não seja reconhecido, provavelmente é porque você não adicionou o kubectl ao PATH. Você pode fazer isso da seguinte forma:

Bash

echo 'export PATH=$PATH:/usr/local/bin/kubectl' >> ~/.bashrc

Zsh

echo 'export PATH=$PATH:/usr/local/bin/kubectl' >> ~/.zshrc

Habilitando o autocompletar do kubectl:

Linux

Bash

Instale o módulo do bash-completion usando o seguinte comando:

sudo apt-get install bash-completion

Configuração de autocomplete no bash do shell atual:

source <(kubectl completion bash)

Para adicionar o autocomplete permanentemente no seu shell bash:

echo 'source <(kubectl completion bash)' >> ~/.bashrc

Recarregue o arquivo de configuração:

source ~/.bashrc

Zsh

Configuração para usar autocomplete no terminal zsh no shell atual:

source <(kubectl completion zsh)

Adicionar auto completar permanentemente para o seu shell zsh:

echo "if [ $commands[kubectl] ]; then source <(kubectl completion zsh); fi" >> ~/.zshrc 

Recarregue o arquivo de configuração:

source ~/.zshrc

Criando cluster Kubernetes local com 4 nodes utilizando o Minikube

Instalando o Minikube

Instale o minikube na sua máquina Linux usando o seguinte comando:

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
  && chmod +x minikube

Adicione o minikube ao seu PATH para que você possa executar o minikube a partir de qualquer local em sua máquina Linux usando o seguinte comando:

sudo install minikube /usr/local/bin

Instalando o VirtualBox

sudo apt install virtualbox

Inicialize o minikube usando o driver VirtualBox:

minikube start --vm-driver=virtualbox --cpus=2 --memory=4096 --nodes=4

Isso iniciará um cluster Kubernetes com quatro nodes, cada um com dois núcleos de CPU e 4 GB de memória. O primeiro node será o node master, e os outros três nodes serão nodes de trabalho. Você pode verificar se o cluster foi criado com sucesso usando o seguinte comando:

kubectl get nodes

Para deletar um cluster minikube, basta executar o seguinte comando:

minikube delete

Verificar o status do cluster:

minikube status

Criar o deployment do nginx:

kubectl create deployment nginx --image=nginx

Verificar os pods do deployment:

kubectl get pods

Criar o serviço do nginx:

kubectl expose deployment nginx --port=80 --type=LoadBalancer

Verificar os serviços:

kubectl get services

O comando minikube tunnel é útil quando se deseja acessar os pods do cluster localmente através de um endereço IP externo. Sem o túnel, é necessário acessar os pods através de um endereço IP interno gerado pelo Minikube, o que pode ser inconveniente em alguns casos. O túnel permite acessar os pods através de um endereço IP externo, o que pode ser mais fácil de usar em alguns casos.

minikube tunnel

Criando cluster Kubernetes com Kind

Instalar o Kind

Para o correto funcionamento do Kind você precisa ter o Docker e o Kubectl instalado.

Instalando o Docker

Instalando o Kubectl

Linux

Para instalar o Kind no Linux execute os seguintes comandos:

curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.17.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

macOS

Para instalar o Kind no macOS execute o seguinte comando:

brew install kind

Windows

Para instalar o Kind no Windows execute os seguintes comandos no PowerShell:

curl.exe -Lo kind-windows-amd64.exe https://kind.sigs.k8s.io/dl/v0.17.0/kind-windows-amd64
Move-Item .\kind-windows-amd64.exe c:\some-dir-in-your-PATH\kind.exe

Para verificar se o Kind foi instalado corretamente execute o comando:

kind version

Se a instalação foi bem-sucedida, o comando exibirá a versão do Kind instalada.

Auto completion

Bash

sudo echo "source <(kind completion bash)" >> ~/.bashrc
source ~/.bashrc

Zsh

sudo echo "source <(kind completion zsh)" >> ~/.zshrc
source ~/.zshrc

Criar o cluster

Para criar o cluster simples com 1 node execute o comando:

kind create cluster --name <nome do cluster>

Para criar um Cluster com 6 nodes crie um arquivo YAML com o seguinte comando:

nano kind-cluster.yaml

Cole o texto:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: control-plane
- role: control-plane
- role: worker
- role: worker
- role: worker

Pressione Ctrl + X então y para salvar e Enter para fechar

Crei o cluster com o comando:

kind create cluster --name <nome do cluster> --config kind-cluster.yaml

Alternar entre os clusters

Para listar os clusters execute esse comando:

kubectl config get-contexts

Para mudar o cluster:

kubectl config use-contexts <nome do cluster>

Para deletar o cluster:

kind delete cluster --name <nome do cluster>

Para deletar todos os clusters:

kind delete clusters --all

Para seguir com configurações avançadas utilizando o Kind você pode acessar esse arquivo:

https://github.com/Rapha-Borges/containers-docs/blob/main/src/capitulo/avancando-com-kind.md

Avançando com Kind

Criando um cluster com Ingress Ngnix

Crie um arquivo YAML com o seguinte comando:

nano kind-ingress.yaml

Cole o texto:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  kubeadmConfigPatches:
  - |
    kind: InitConfiguration
    nodeRegistration:
      kubeletExtraArgs:
        node-labels: "ingress-ready=true"
  extraPortMappings:
  - containerPort: 80
    hostPort: 80
    protocol: TCP
  - containerPort: 443
    hostPort: 443
    protocol: TCP
- role: worker

Pressione Ctrl + X então y para salvar e Enter para fechar

Crei o cluster com o comando:

kind create cluster --name <nome do cluster> --config kind-ingress.yaml

Implemente o controlador do Ingress Nginx no cluster Kubernetes.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml

Crie um arquivo YAML com o seguinte comando:

nano testing-ingress.yaml

Cole o seguinte texto substituindo <nome> pelo nome da primeira aplicação e <nome2> pelo nome da segunda aplicação:

kind: Pod
apiVersion: v1
metadata:
  name: <nome>
  labels:
    app: <nome>
spec:
  containers:
  - name: <nome>-app
    image: hashicorp/http-echo:0.2.3
    args:
    - "-text=FUNCIONOU_<nome>"
---
kind: Service
apiVersion: v1
metadata:
  name: <nome>-service
spec:
  selector:
    app: <nome>
  ports:
  # Default port used by the image
  - port: 5678
---
kind: Pod
apiVersion: v1
metadata:
  name: <nome2>-app
  labels:
    app: <nome2>
spec:
  containers:
  - name: <nome2>-app
    image: hashicorp/http-echo:0.2.3
    args:
    - "-text=FUNCIONOU_<nome2>"
---
kind: Service
apiVersion: v1
metadata:
  name: <nome2>-service
spec:
  selector:
    app: <nome2>
  ports:
  # Default port used by the image
  - port: 5678
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
spec:
  rules:
  - http:
      paths:
      - pathType: Prefix
        path: "/<nome>"
        backend:
          service:
            name: <nome>-service
            port:
              number: 5678
      - pathType: Prefix
        path: "/<nome2>"
        backend:
          service:
            name: <nome2>-service
            port:
              number: 5678
      
---

Pressione Ctrl + X então y para salvar e Enter para fechar

Execute com o comando:

kubectl create -f testing-ingress.yaml

Confirme que os Pods estão com status Running:

kubectl get pods

Os serviços estão rodando:

kubectl get svc

E o Ingress está correto:

kubectl get ingress
kubectl describe ingress <nome do ingress>

Agora você pode acessar: http://localhost/ Path para ver a aplicação funcionando

Desativar partição SWAP

Abra o terminal e verifique o nome do arquivo de swap com o comando:

sudo swapon --show

Desative o swap com o comando:

sudo swapoff <nome do arquivo de swap>

Remova o arquivo de swap do sistema com o comando:

sudo rm <nome do arquivo de swap>

Verifique se o swap foi desativado corretamente executando o comando:

sudo swapon --show

Se o comando acima não retornar nenhuma informação, isso significa que o swap foi desativado corretamente. Caso contrário, é possível tentar desativá-lo manualmente editando o arquivo /etc/fstab e removendo a entrada correspondente ao arquivo de swap.

Editando o arquivo /etc/fstab

Para editar o arquivo /etc/fstab e remover a entrada correspondente ao arquivo de swap, basta seguir os seguintes passos:

Abra o terminal e edite o arquivo /etc/fstab com o comando:

sudo nano /etc/fstab

Localize a linha que contém a entrada correspondente ao arquivo de swap. Essa linha começará com "UUID=" seguido do UUID do arquivo de swap, seguido pelos demais parâmetros de configuração do swap.

Remova a linha correspondente ao arquivo de swap, pressionando a tecla "Delete" ou "Backspace" e salvando o arquivo com "Ctrl+X" e confirmando a operação com "Enter".

Verifique se a entrada foi removida corretamente executando o comando:

cat /etc/fstab

Se a linha correspondente ao arquivo de swap não estiver mais presente no arquivo, isso significa que a entrada foi removida corretamente. Caso contrário, é possível tentar removê-la manualmente editando o arquivo novamente e removendo a linha correspondente.

Com isso, a entrada correspondente ao arquivo de swap será removida do arquivo /etc/fstab, e o swap não será mais utilizado pelo sistema. É importante lembrar que essa operação é irreversível, portanto, é recomendado fazer backup de qualquer informação importante antes de editar o arquivo /etc/fstab.

Habilitar SSH

Instale o OpenSSH Server na sua máquina usando o seguinte comando:

sudo apt-get update
sudo apt-get install openssh-server

Em seguida, inicie o serviço SSH usando o seguinte comando:

sudo service ssh start

Para fazer com que o serviço SSH inicie junto com a máquina, você precisará ativá-lo usando o seguinte comando:

sudo systemctl enable ssh

Isso habilitará o SSH na sua máquina e fará com que o serviço SSH inicie automaticamente quando a máquina for iniciada.

Conectar via SSH

Para se conectar à sua máquina usando o SSH, você usará o seguinte comando:

ssh username@<IP da máquina>

Será solicitado a digitar a senha de sua conta de usuário na máquina. Depois de digitar a senha, você estará conectado e poderá executar comandos na máquina remota.