Curso
O que é o Kubernetes? Uma introdução com exemplos
Sevocê está ciente do aumento da computação em nuvem, deve ter ouvido falar do Kubernetes. No desenvolvimento de aplicativos modernos, é uma ferramenta essencial para você aprender a gerenciar várias configurações de infraestrutura.
Neste artigo introdutório, forneceremos uma visão geral do Kubernetes e de seus componentes, bem como um tutorial abrangente sobre como implementá-lo localmente. Se você estiver procurando uma experiência de aprendizado prático para complementar este tutorial, confira nosso curso de Introdução ao Kubernetes.
O que é o Kubernetes?
O Kubernetes é uma plataforma de orquestração de contêineres de código aberto que automatiza a implantação, o dimensionamento e o gerenciamento de aplicativos em contêineres. Originalmente desenvolvido pelo Google, ele se tornou o padrão de fato para a execução de contêineres em escala.
Ele abstrai a complexidade do gerenciamento de contêineres individuais e permite que os desenvolvedores se concentrem na criação e na implantação de seus aplicativos.
Por que usar o Kubernetes?
Aqui estão alguns dos principais benefícios de usar o Kubernetes:
- Orquestração de contêineres: Automatiza a distribuição e o agendamento de contêineres em um cluster.
- Escalabilidade e autocorreção: Simplifica o dimensionamento horizontal (replicação de contêineres) e o dimensionamento vertical (ajuste da alocação de recursos), tudo com recursos de autocorreção.
- Alta disponibilidade: Garante que os contêineres (e, portanto, seus serviços) permaneçam operacionais mesmo que alguns nós falhem.
- Portabilidade: Abstrai a infraestrutura subjacente, o que facilita a execução no local e em diferentes provedores de nuvem.
- Utilização eficiente de recursos: Redimensiona os contêineres com base no uso de recursos, otimizando a alocação de recursos e reduzindo os custos.
O Kubernetes é útil em vários aplicativos, como:
- DevOps: Automatiza a implantação, o dimensionamento e o gerenciamento de aplicativos em contêineres.
- Microsserviços: Divide grandes aplicativos monolíticos em serviços menores e gerenciáveis para aumentar a agilidade e o dimensionamento.
- Big data: Simplifica a implantação e o gerenciamento de sistemas complexos de big data usando contêineres.
- Computação de borda: Permite que você execute o Kubernetes em dispositivos de borda para processar e analisar dados mais próximos de onde são gerados, reduzindo a latência e melhorando o desempenho.
- Entrega contínua: Integra-se a ferramentas como Jenkins e GitLab para pipelines de entrega contínua automatizados.
- Aprendizado de máquina: Fornece uma plataforma dimensionável para treinamento e implantação de modelos de aprendizado de máquina, lidando com grandes conjuntos de dados e cálculos complexos.
Conceitos-chave no Kubernetes
Para entender como o Kubernetes funciona, você precisará ter uma boa compreensão de seus principais conceitos.
Isso inclui quatro conceitos principais:
- Agrupamentos
- Pods
- Namespaces
- Operadores
Exploraremos mais sobre isso a seguir.
Agrupamentos
Os clusters do Kubernetes são grupos de nós, que são máquinas individuais que executam o software Kubernetes. O cluster atua como o plano de controle para gerenciar aplicativos e serviços.
Em uma configuração típica, um cluster terá um nó mestre e vários nós de trabalho. O nó mestre é responsável por coordenar todas as atividades dentro do cluster, enquanto os nós de trabalho lidam com a execução e o gerenciamento de contêineres.
Pods
Os pods são a menor unidade de implantação no Kubernetes. Eles podem conter um ou mais contêineres, juntamente com recursos de armazenamento compartilhado e configurações de rede.
Cada pod tem seu próprio endereço IP exclusivo e pode se comunicar com outros pods no mesmo cluster por meio desse endereço. Isso permite a comunicação eficiente entre diferentes componentes de um aplicativo.
Os pods podem vir em pods de um ou vários contêineres e cada um deles tem seu próprio caso de uso.
- Pods de um único contêiner: O tipo mais comum de pod, em que um único contêiner é executado dentro dele. Isso é útil para aplicativos simples ou microsserviços que exigem apenas um contêiner.
- Pods de vários contêineres: Vários contêineres são co-localizados e executados juntos. Isso pode ser benéfico para aplicativos complexos em que diferentes contêineres precisam se comunicar entre si e compartilhar recursos.
Namespaces
Os namespaces oferecem uma maneira de particionar logicamente os recursos em um único cluster. Isso permite uma melhor organização e gerenciamento de recursos, além de controles de segurança mais rígidos.
Os namespaces também podem ser usados para gerenciar diferentes ambientes, como desenvolvimento, preparação e produção. Isso garante que os recursos sejam isolados e não sejam afetados por alterações feitas em outros ambientes.
Para visualizar os namespaces em seu cluster, você pode usar este comando:
kubectl get namespaces
Para alternar entre namespaces, use o seguinte
kubectl config set-context --current --namespace <namespace name>
Operadores
Os operadores são extensões de software que ajudam a automatizar o gerenciamento dos recursos do Kubernetes. Eles usam controladores personalizados e extensões de API para gerenciar tarefas complexas de forma mais eficiente e automática.
Algumas operadoras populares incluem:
- Prometheus para monitoramento
- Operador do etcd para gerenciar clusters do etcd
O uso de operadores pode simplificar muito o gerenciamento de aplicativos e recursos no cluster. Com sua capacidade de automatizar tarefas e fornecer recursos avançados, eles estão se tornando cada vez mais populares entre os usuários do Kubernetes.
Componentes principais do Kubernetes
Na maioria dos ambientes Kubernetes, há um conjunto de componentes principais.
Fonte: Kubernetes
Aqui está uma lista dos componentes e o que eles fazem:
- Servidor de API: Esse componente atua como o ponto de gerenciamento central para todos os recursos do Kubernetes. Ele recebe solicitações de usuários e outros componentes e, em seguida, aplica políticas para gerenciar o cluster.
- Gerente de controladoria: O gerente do controlador é responsável por manter o estado desejado do cluster, monitorando e reconciliando constantemente as alterações feitas nos objetos dentro do cluster.
- etcd: Esse é um armazenamento de valores-chave distribuído que serve como o armazenamento de dados principal do Kubernetes. Ele armazena todos os dados do cluster e garante a consistência e a disponibilidade dos dados.
- kubelet: Esse agente é executado em cada nó do cluster e é responsável pelo gerenciamento de contêineres, garantindo que eles sejam executados de acordo com as configurações especificadas.
- Proxy Kube: Esse componente é executado em cada nó e é responsável pelo roteamento do tráfego de rede para o contêiner correto.
Como o Kubernetes funciona
Como já estabelecemos, o Kubernetes automatiza a implantação, o dimensionamento e o gerenciamento de aplicativos em contêineres em clusters. Ele garante alta disponibilidade, uso eficiente de recursos e autocorreção sem intervenção manual.
Em vez de gerenciar contêineres individuais, o Kubernetes os agrupa em Pods e os distribui entre os nós de trabalho, que se comunicam com o plano de controle para manter o estado desejado do sistema.
Veja como o Kubernetes funciona, em resumo:
- Defina a implementação do aplicativo: Você especifica o estado desejado em um arquivo YAML, incluindo réplicas, limites de recursos e regras de rede.
- Programar as cargas de trabalho: O Agendador atribui Pods a nós de trabalho com base na disponibilidade de recursos.
- Gerenciar o estado do cluster: O Controller Manager garante que o sistema mantenha o número correto de Pods, substituindo todos os que falharem.
- Lidar com a rede: O Kubernetes gerencia a comunicação entre os serviços e o acesso externo por meio de serviços e controladores Ingress.
- Dimensione e se recupere: O Kubernetes ajusta o número de Pods em execução com base na demanda e reinicia automaticamente os contêineres com falha.
Ao lidar com a complexidade da infraestrutura, o Kubernetes permite que as equipes se concentrem na criação de aplicativos em vez de gerenciar implantações, tornando-o essencial para cargas de trabalho escaláveis e resilientes em todos os setores.
Terminologia e conceitos comuns
Vamos dar uma olhada em alguns dos principais termos que você precisa conhecer e suas definições:
- Manifestos YAML: São arquivos de configuração que definem o estado desejado do seu aplicativo ou infraestrutura. Eles podem ser usados para criar, atualizar e excluir recursos no Kubernetes.
- StatefulSets vs. Implantações: Esses são dois tipos de controladores no Kubernetes que gerenciam o ciclo de vida dos pods. As implantações são normalmente usadas para aplicativos sem estado, enquanto os StatefulSets são usados para aplicativos com estado.
- Serviços: Eles fornecem um endereço IP e um nome DNS estáveis para que você possa acessar o aplicativo no cluster. Eles também permitem a comunicação entre pods diferentes.
- ConfigMaps: Eles são usados para armazenar dados de configuração em pares de valores-chave que podem ser acessados pelo seu aplicativo.
- Segredos: Semelhante aos ConfigMaps, eles são usados para armazenar informações confidenciais, como senhas ou chaves de API.
Primeiros passos com o Kubernetes
Trabalhar com o Kubernetes pode parecer assustador, especialmente quando se trata de entender as várias terminologias e conceitos. No entanto, quando você tiver uma sólida compreensão desses termos essenciais, navegar pela plataforma se tornará muito mais fácil.
Vamos começar examinando algumas ferramentas usadas com o Kubernetes.
Ferramentas para iniciantes
Como um iniciante no Kubernetes, ter que implantar aplicativos na nuvem pode ser demais para você. Dessa forma, você pode procurar algumas ferramentas comuns para implantar localmente.
Aqui estão as duas ferramentas mais comumente usadas:
1. Minikube
O Minikube é uma implementação leve do Kubernetes que pode ser executada em uma única máquina host. Normalmente, ele executa um cluster de nó único em uma máquina virtual (VM) no seu laptop ou estação de trabalho.
Por que usá-lo:
- Fácil de montar e desmontar.
- Excelente para desenvolvimento local e provas de conceito.
- Uso mínimo de recursos em comparação com um cluster completo.
Como instalar o Minikube (exemplo no Windows):
# Install via Windows Package Manager
winget install Kubernetes.minikube
Você deverá ver a seguinte mensagem de instalação. Concorde com os termos e condições se for solicitado a usar "Y".
Em seguida, para iniciar um cluster simples no minikube, use o seguinte comando start
:
# Start a single-node cluster
minikube start
Para verificar se o nó do cluster foi iniciado com êxito, execute o comando get
:
# Verify the cluster is running
kubectl get nodes
Observação: Você precisa ter o servidor da API kubectl
instalado em seu computador local (em muitos casos, ele é instalado automaticamente com o Minikube).
2. Tipo (Kubernetes no Docker)
Kind significa Kubernetes no Docker. Ele usa contêineres do Docker como "nós" em um cluster do Kubernetes, fornecendo um ambiente de cluster local simples e baseado em contêineres.
Por que usá-lo:
- Inicialização mais rápida em comparação com o Minikube em muitos cenários.
- Fácil de ativar vários clusters de teste simultaneamente, ideal para pipelines de CI/CD.
- Geralmente usado em ambientes de teste automatizados devido à sua menor sobrecarga.
Como instalar o Kind (exemplo no Windows):
# Install Kind with Windows Package Manager
winget install Kubernetes.kind
Depois de instalado, você pode criar um cluster simples usando o comando create cluster
e dar um nome a ele.
# Create a basic cluster
kind create cluster --name example-cluster
Para verificar se o cluster do tipo Kubernetes foi iniciado, use o seguinte comando get
.
# Check running clusters
kind get clusters
Você também pode interagir com o cluster por meio da interface kubectl
:
# Interact with your Kind cluster using kubectl
kubectl get nodes
Observação: Certifique-se de que você tenha o Docker instalado e em execução.
Provedores de nuvem (EKS, GKE, AKS)
Ao executar o Kubernetes na nuvem, aqui estão alguns provedores de nuvem que você pode escolher:
1. Amazon EKS (Elastic Kubernetes Service)
O Amazon EKS é um serviço gerenciado que facilita a execução do Kubernetes no AWS sem a necessidade de gerenciar seu próprio plano de controle ou nós de trabalho. Ele se integra a outros serviços do AWS para obter recursos adicionais, como balanceamento de carga, armazenamento, dimensionamento automático e monitoramento.
Alguns recursos adicionais incluem:
- Oferece integrações com outros serviços da AWS (por exemplo, IAM, CloudWatch, ECR).
- A escalabilidade e a alta disponibilidade estão integradas à plataforma.
2. Google GKE (mecanismo do Google Kubernetes)
O Google GKE é um serviço totalmente gerenciado para executar o Kubernetes no Google Cloud Platform. Ele oferece dimensionamento automático, recursos de autocorreção e integração com outros serviços do Google Cloud.
Alguns recursos adicionais incluem:
- Integração profunda com os serviços do GCP, como Cloud Logging, Cloud Monitoring e Container Registry.
- Oferece o modo de piloto automático, que gerencia a infraestrutura do cluster automaticamente.
3. Azure AKS (Serviço de Kubernetes do Azure)
O Azure AKS fornece clusters Kubernetes sem servidor que são totalmente integrados a outros serviços do Azure, como armazenamento, rede e balanceamento de carga. Ele também tem suporte integrado para ferramentas de DevOps, como Helm e Prometheus.
Alguns recursos adicionais incluem:
- Integra-se com o Azure Active Directory, o Azure Monitor, o Registro de Contêineres, etc.
- Oferece Kubernetes sem servidor (nós virtuais) usando instâncias de contêiner do Azure.
Recursos para aprender Kubernetes
Aprender a usar o Kubernetes pela primeira vez pode parecer complicado, mas há muitos recursos disponíveis para ajudar você a começar.
Aqui estão alguns recursos recomendados:
- Cursos e recursos do DataCamp: Nosso curso Introdução ao Kubernetes e o tutorial de conteinerização podem ser ótimos lugares para você começar.
- Nossos tutoriais dedicados ao Kubernetes para iniciantes: Criado para fornecer a você o básico.
Exemplo de implantação do Kubernetes
Para executar aplicativos no Kubernetes, você segue um fluxo de trabalho estruturado que envolve a configuração de um cluster, a implantação de um aplicativo em contêiner, a exposição dele como um serviço e o dimensionamento conforme necessário.
Abordamos esse processo em detalhes em nosso tutorial do Kubernetes, mas aqui está uma análise de alto nível:
Configure um cluster do Kubernetes
Use o Minikube para criar um cluster local para testes e desenvolvimento. Instale o Minikube e inicie seu cluster usando:
minikube start --driver=docker
kubectl get nodes
Implantar um aplicativo
Defina o estado desejado do seu aplicativo em um arquivo YAML de implantação. Por exemplo, ao implantar um servidor da Web Nginx, você tem a seguinte aparência:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-deployment
spec:
replicas: 1
selector:
matchLabels:
app: hello
template:
metadata:
labels:
app: hello
spec:
containers:
- name: hello-container
image: nginx:latest
ports:
- containerPort: 80
Aplique a implantação com:
kubectl apply -f hello-deployment.yaml
Exponha o aplicativo como um serviço
Para tornar o aplicativo acessível, crie um serviço usando:
kubectl expose deployment hello-deployment --type=NodePort --port=80 --name=hello-service
Recupere o URL externo e abra o aplicativo em seu navegador:
minikube service hello-service
Dimensione e monitore o aplicativo
O Kubernetes permite que você dimensione aplicativos sem esforço. Para aumentar as réplicas:
kubectl scale deployment hello-deployment --replicas=3
Verifique os pods em execução:
kubectl get pods
Visualize os registros para depuração:
kubectl logs -f <pod-name>
Aqui estão alguns exemplos que você pode explorar em projetos avançados:
- Execute trabalhos de streaming em contêineres (por exemplo, Spark no Kubernetes, Kafka no Kubernetes).
- Uso de Volumes persistentes para montar soluções de armazenamento externo, como AWS EBS, discos do Azure ou NFS.
- Implante aplicativos mais complexos (por exemplo, microsserviços de várias camadas com bancos de dados).
- Explore recursos avançados, como controladores Ingress, Service Meshes (por exemplo, Istio), Gráficos Helm para gerenciamento de pacotes.
Conclusão
O Kubernetes é uma plataforma avançada para implantar e gerenciar aplicativos em contêineres em escala, o que o torna uma ferramenta essencial para engenheiros de dados que precisam de ambientes elásticos e confiáveis para o processamento de dados.
Se você estiver interessado em saber mais sobre o Kubernetes, nosso Curso de introdução ao Kubernetes seria o lugar perfeito para você começar.
Perguntas frequentes sobre o Kubernetes
O Kubernetes é o mesmo que o Docker?
Não, o Kubernetes é uma ferramenta de orquestração de contêineres, enquanto o Docker é uma plataforma de conteinerização. Eles trabalham juntos para gerenciar e implantar contêineres, mas têm finalidades diferentes.
Quais são os benefícios de usar o Kubernetes?
O Kubernetes facilita o gerenciamento e a implantação de contêineres, melhora a escalabilidade e a disponibilidade dos aplicativos e oferece suporte a atualizações e reversões automatizadas.
O Kubernetes pode ser usado em qualquer tipo de ambiente?
Sim, o Kubernetes pode ser usado tanto em ambientes locais quanto na nuvem. Ele é altamente versátil e pode se adaptar a várias configurações de infraestrutura.
É difícil aprender a usar o Kubernetes?
Embora haja uma curva de aprendizado envolvida, há muitos recursos disponíveis on-line, como o DataCamp e guias iniciais do próprio Kubernetes.
Qual é a arquitetura do Kubernetes?
O Kubernetes segue uma arquitetura cliente-servidor, com um nó mestre controlando o cluster e os nós de trabalho executando as cargas de trabalho dos aplicativos. Isso permite a comunicação e o gerenciamento eficientes de todo o sistema.

Sou Austin, blogueiro e escritor de tecnologia com anos de experiência como cientista de dados e analista de dados na área de saúde. Iniciando minha jornada tecnológica com formação em biologia, agora ajudo outras pessoas a fazer a mesma transição por meio do meu blog de tecnologia. Minha paixão por tecnologia me levou a contribuir por escrito para dezenas de empresas de SaaS, inspirando outras pessoas e compartilhando minhas experiências.
Principais cursos da DataCamp
Programa
Containerization and Virtualization
Programa
Data Engineer

blog
O que é o Kaggle?

blog
Competições da Kaggle: O guia completo
blog
Contratos de dados desmistificados: Tudo o que você precisa saber

Mike Shakhomirov
24 min
Tutorial
Introdução ao k-Means Clustering com o scikit-learn em Python
Kevin Babitz
21 min
Tutorial
Tutorial do K-Means Clustering no R

Eugenia Anello
17 min
Tutorial