Pular para o conteúdo principal

Capítulo 1.6 - Instalação e Configuração

Visão Geral​

Antes de começar a usar o Kubernetes, você precisa instalar as ferramentas necessárias. Este capítulo irá guiá-lo pela instalação do kubectl (a ferramenta de linha de comando do Kubernetes) e a configuração de um cluster local para prática.

Objetivos​

Ao final deste capítulo, você será capaz de:

  • Instalar o kubectl no seu sistema
  • Entender a configuração do kubectl
  • Iniciar um cluster Kubernetes local
  • Verificar se tudo está funcionando corretamente
  • Utilizar os comandos básicos do kubectl

O que é o kubectl?​

kubectl (pronuncia-se "kube-control" ou "kube-cuttle") é a ferramenta oficial de linha de comando para interagir com um cluster Kubernetes.

Funcionalidades do kubectl:

  • Criar, modificar, deletar recursos
  • Inspecionar o estado do cluster
  • Gerenciar deploys
  • Depurar aplicações
  • Acessar os logs dos pods

Instalação do kubectl​

Verificação da Instalação​

Antes de instalar, vamos verificar se o kubectl já está instalado:

kubectl version --client

Se você visualizar uma versão, o kubectl já está instalado! Caso contrário, siga as instruções abaixo.

Instalação no Windows​

Método 1: Via Chocolatey (Recomendado)​

Se você já possui o Chocolatey instalado:

choco install kubernetes-cli

Método 2: Download Direto​

  1. Baixe a versão mais recente em:

    https://dl.k8s.io/release/v1.28.0/bin/windows/amd64/kubectl.exe

    (Substitua v1.28.0 pela versão desejada)

  2. Adicione o kubectl.exe ao seu PATH:

    • Crie uma pasta C:\kubectl
    • Coloque o kubectl.exe nesta pasta
    • Adicione C:\kubectl à variável de ambiente PATH
  3. Verifique a instalação:

    kubectl version --client

Método 3: Via PowerShell​

# Baixar o kubectl
$version = "v1.28.0"
$url = "https://dl.k8s.io/release/$version/bin/windows/amd64/kubectl.exe"
Invoke-WebRequest -Uri $url -OutFile "$env:TEMP\kubectl.exe"

# Mover para uma pasta no PATH
Move-Item -Path "$env:TEMP\kubectl.exe" -Destination "C:\Windows\System32\kubectl.exe"

# Verificar
kubectl version --client

Instalação no Linux​

Método 1: Via Gerenciador de Pacotes (Ubuntu/Debian)​

# Atualizar os pacotes
sudo apt-get update

# Instalar dependências
sudo apt-get install -y apt-transport-https ca-certificates curl

# Adicionar a chave GPG do Kubernetes
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

# Adicionar o repositório
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

# Instalar o kubectl
sudo apt-get update
sudo apt-get install -y kubectl

# Verificar
kubectl version --client

Método 2: Download Direto​

# Baixar a versão mais recente
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

# Tornar executável
chmod +x kubectl

# Mover para uma pasta no PATH
sudo mv kubectl /usr/local/bin/

# Verificar
kubectl version --client

Instalação no macOS​

Método 1: Via Homebrew (Recomendado)​

brew install kubectl

Método 2: Download Direto​

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

# Tornar executável
chmod +x kubectl

# Mover para uma pasta no PATH
sudo mv kubectl /usr/local/bin/

# Verificar
kubectl version --client

Configuração do kubectl​

Arquivo de Configuração​

O kubectl utiliza um arquivo de configuração localizado em:

  • Linux/macOS: ~/.kube/config
  • Windows: %USERPROFILE%\.kube\config

Este arquivo contém:

  • Informações de conexão com os clusters
  • Contextos (qual cluster utilizar)
  • Usuários e autenticação

Estrutura do Arquivo config​

apiVersion: v1
kind: Config
clusters:
- name: my-cluster
cluster:
server: https://api.my-cluster.com
certificate-authority-data: <cert-data>
contexts:
- name: my-context
context:
cluster: my-cluster
user: my-user
current-context: my-context
users:
- name: my-user
user:
token: <token>

Comandos Úteis de Configuração​

# Ver a configuração atual
kubectl config view

# Ver os contextos disponíveis
kubectl config get-contexts

# Trocar de contexto
kubectl config use-context my-context

# Ver o contexto atual
kubectl config current-context

Cluster Local: minikube​

Para praticar Kubernetes localmente, usaremos o minikube, que cria um cluster Kubernetes de nó único em uma máquina virtual.

Instalação do minikube​

Windows​

# Via Chocolatey
choco install minikube

# Ou download direto
# Baixe em: https://github.com/kubernetes/minikube/releases

Linux​

# Baixar
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

# Instalar
sudo install minikube-linux-amd64 /usr/local/bin/minikube

macOS​

brew install minikube

Inicializando o minikube​

# Iniciar o minikube
minikube start

# Verificar o status
minikube status

# Ver informações do cluster
kubectl cluster-info

Comandos Úteis do minikube​

# Parar o cluster
minikube stop

# Iniciar o cluster
minikube start

# Deletar o cluster
minikube delete

# Abrir o dashboard do Kubernetes
minikube dashboard

# Acessar o ambiente do minikube
minikube ssh

Cluster Local: kind (Alternativa)​

kind (Kubernetes in Docker) é uma alternativa ao minikube que utiliza Docker ao invés de uma VM.

Instalação do kind​

Windows​

choco install kind

Linux/macOS​

# Baixar
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
# Para macOS: kind-darwin-amd64

# Tornar executável
chmod +x ./kind

# Mover para o PATH
sudo mv ./kind /usr/local/bin/kind

Utilização do kind​

# Criar um cluster
kind create cluster --name my-cluster

# Listar os clusters
kind get clusters

# Deletar um cluster
kind delete cluster --name my-cluster

Verificação da Instalação​

Teste Completo​

Execute estes comandos para verificar se tudo está funcionando:

# 1. Verificar a versão do kubectl
kubectl version --client

# 2. Verificar a conexão com o cluster
kubectl cluster-info

# 3. Listar os nodes
kubectl get nodes

# 4. Listar todos os pods (deve estar vazio no início)
kubectl get pods --all-namespaces

# 5. Verificar os componentes do sistema
kubectl get componentstatuses
# Nota: Este comando está depreciado nas versões recentes

Resultado Esperado​

Se tudo estiver funcionando, você deverá ver:

$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 1m v1.28.0

Comandos Básicos do kubectl​

Aqui estão os comandos essenciais que você usará ao longo do curso:

Comandos Gerais​

# Obter informações
kubectl get <resource> # Listar recursos
kubectl describe <resource> <name> # Detalhes de um recurso
kubectl explain <resource> # Documentação de um recurso

# Criar recursos
kubectl create <resource> # Criar pela linha de comando
kubectl apply -f <file.yaml> # Criar a partir de um arquivo YAML

# Modificar recursos
kubectl edit <resource> <name> # Editar um recurso
kubectl patch <resource> <name> # Modificar parcialmente

# Deletar recursos
kubectl delete <resource> <name> # Deletar um recurso
kubectl delete -f <file.yaml> # Deletar a partir de um arquivo

Exemplos Práticos​

# Listar todos os pods
kubectl get pods

# Listar todos os pods em todos os namespaces
kubectl get pods --all-namespaces

# Ver detalhes de um pod
kubectl describe pod my-pod

# Ver logs de um pod
kubectl logs my-pod

# Executar um comando em um pod
kubectl exec -it my-pod -- /bin/bash

# Copiar um arquivo para/de um pod
kubectl cp my-pod:/path/file ./local-file

Autocompletar (Bônus)​

Configuração do Autocompletar​

O autocompletar torna o uso do kubectl muito mais fácil:

Bash (Linux/macOS)​

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

Zsh (macOS)​

# Adicionar ao ~/.zshrc
echo 'source <(kubectl completion zsh)' >> ~/.zshrc
source ~/.zshrc

PowerShell (Windows)​

# Instalar o módulo
Install-Module -Name PSKubectlCompletion

# Importar no perfil
Add-Content $PROFILE "Import-Module PSKubectlCompletion"

Resumo​

Neste capítulo, você aprendeu:

Como instalar o kubectl em diferentes sistemas
Como configurar o kubectl para conectar a um cluster
Como iniciar um cluster local com minikube ou kind
Como verificar se tudo está funcionando corretamente
Os comandos básicos essenciais do kubectl


Próximos Passos​

Agora que você tem o kubectl instalado e um cluster local funcional, você está pronto para:

Lab 1.1: Primeiro deploy no Kubernetes
Módulo 2: Arquitetura detalhada e componentes do Kubernetes


Recursos​


Troubleshooting​

Problemas Comuns e Soluções​

Problema 1: kubectl: command not found​

Sintoma:

kubectl: command not found

Soluções:

  1. Verificar a instalação:

    # Windows
    where kubectl

    # Linux/macOS
    which kubectl
  2. Verificar o PATH:

    • Certifique-se de que a pasta contendo o kubectl está no seu PATH
    • Windows: Verifique as variáveis de ambiente do sistema
    • Linux/macOS: Verifique com echo $PATH
  3. Reinstalar:

    • Siga novamente as instruções de instalação para o seu sistema operacional

Problema 2: Unable to connect to the server​

Sintoma:

The connection to the server <server> was refused

Soluções:

  1. Verificar se o cluster está iniciado:

    # Para minikube
    minikube status
    minikube start

    # Para kind
    kind get clusters
  2. Verificar a configuração:

    kubectl config view
    kubectl config current-context
  3. Verificar a conexão de rede:

    kubectl cluster-info

Problema 3: minikube start falha​

Possíveis sintomas:

  • Erro de virtualização
  • Problema de recursos (RAM/CPU)
  • Conflito com Docker

Soluções:

  1. Verificar a virtualização:

    • Windows: Ativar Hyper-V ou VirtualBox
    • Linux: Verificar KVM
    • macOS: Verificar VirtualBox ou HyperKit
  2. Alocar mais recursos:

    minikube start --memory=4096 --cpus=2
  3. Usar um driver diferente:

    minikube start --driver=docker
    # ou
    minikube start --driver=virtualbox
  4. Reinicializar o minikube:

    minikube delete
    minikube start

Problema 4: Erro de certificado SSL​

Sintoma:

x509: certificate signed by unknown authority

Soluções:

  1. Verificar a data do sistema:

    • Certifique-se de que a data/hora do seu sistema está correta
  2. Reiniciar o contexto:

    kubectl config use-context minikube
  3. Recriar o cluster:

    minikube delete
    minikube start

Problema 5: kubectl version mostra apenas o client​

Sintoma:

kubectl version --client
# Funciona, mas
kubectl version
# Erro: Unable to connect to the server

Solução:

  • O cluster não está iniciado ou o kubectl não está configurado
  • Siga os passos de "Verificação da Instalação" acima

Capítulo anterior: Capítulo 1.5 - Conceitos Fundamentais
Voltar ao módulo: Módulo 1 - Introdução ao Kubernetes
Próximo Lab: Lab 1.1 - Primeiro Deploy


Capítulo criado em: Dezembro 2024