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:
- Canal da LINUXtips no Youtube
- Descomplicando o Kubernetes
- Descomplicando o Docker
- Documentação oficial do Kubernetes
- Documentação oficial do Docker
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.