Kubernetes

Kubernetes
DesenvolvedorKubernetes
Lançamento inicial7 junho 2014[1]
Lançamento estável
1.36.0[2]Edit this on Wikidata / 22 abril 2026
Repositóriohttps://github.com/kubernetes/kubernetes[3]Edit this on Wikidata
Escrito emGo
Sistema
operacional
Linux
PlataformaMultiplataforma
Disponível emInglês
TipoOrquestração de contêiners
LicençaApache License 2.0
Websitekubernetes.io

Kubernetes (comumente estilizado como K8s) é um sistema de orquestração de contêineres open-source que automatiza a implantação, o dimensionamento e a gestão de aplicações em contêineres.[4][5] Ele foi originalmente projetado pelo Google e agora é mantido pela Cloud Native Computing Foundation.[6] Ele funciona com uma variedade de ferramentas de conteinerização, incluindo Docker.

Muitos serviços de nuvem oferecem uma plataforma baseada em Serviço (Paas ou Iaas), onde o kubernetes pode ser implantado sob serviço gerenciado. Muitos fornecedores também provém sua própria marca de distribuição de kubernetes. [7]

História

Palestra "Google Container Engine" na Google Cloud Summit

Kubernetes (κυβερνήτης, a palavra grega para "timoneiro" ou "piloto") foi fundado por Joe Beda, Brendan Burns e Craig McLuckie,[8] a quem se juntaram rapidamente outros engenheiros da Google, incluindo Brian Grant e Tim Hockin, e foi anunciado pelo Google em meados de 2014.[9] Seu desenvolvimento e design são fortemente influenciadas pelo sistema Google Borg,[10][11] e muitos dos principais contribuintes do projeto trabalharam anteriormente em Borg. O codinome original para Kubernetes dentro do Google era Project Seven, uma referência aos personagens de Star Trek Sete de Nove que é um Borg "amigável".[12] Os sete raios na roda no logotipo do Kubernetes são uma referência ao codinome.

Kubernetes v1.0, foi lançado em 21 de julho de 2015.[13] Juntamente com o lançamento, o Google fez uma parceria com a Linux Foundation para formar a Cloud Native Computing Foundation (CNCF)[14] e ofereceu Kubernetes como uma tecnologia de base.

Em fevereiro de 2016 foi lançado o gerenciador de pacotes Helm.[15]. O Helm é amplamente utilizado, e é parte da CNCF.[16][17]

Conceitos

No Kubernetes o estado do cluster é definido pelo utilizador, sendo função do serviço de orquestração atingir e manter o estado desejado, dentro das limitações impostas pelo utilizador. O Kubernetes pode ser entendido como dividido em dois planos - o plano de controle, que realiza a orquestração global do sistema, e o plano de dados, onde residem os containers.[18][19][20]

Plano de controle

Os principais componentes do plano de controle são o etcd, um banco de dados distribuído que armazena as configurações globais do cluster, o API server, um serviço de borda para interação com os demais componentes, além do controller manager e do scheduler, que realizam tarefas administrativas relacionadas à orquestração do cluster.[18][19][20] O API server suporta registro de auditoria para monitoramento de segurança e análise forense.[21]

Plano de dados

O plano de dados pode ser compreendido como um conjunto dos objetos que o constituem, listados abaixo.

Labels e Selectors

Labels (rótulos) são nomes associados a um recurso, como o nome de um pod. Selectors (seletores) são expressões que selecionam recursos baseado em alguma regra, como todos recursos com label igual a determinado valor.[18][19][20]

Pods

Um pod é um grupo de containers que compartilham um espaço de rede local. O pod é a unidade de trabalho básica no Kubernetes.[18][19][20]

Nodes

Os Nodes (nodos) são os servidores físicos ou virtuais onde os pods e seus containers rodam.[18][19][20]

  • Kubelet é responsável pelo estado de funcionamento de cada nó, garantindo que todos os recipientes no nó sejam saudáveis. Kubelet monitora o estado de uma cápsula e, se não estiver no estado desejado, a cápsula é redirecionada para o mesmo nó.[22] O estado do nó é retransmitido a cada poucos segundos através de mensagens de batimento cardíaco para o primário. Quando o primário detecta uma falha no nó, o Controlador de Replicação observa esta mudança de estado e lança os pods em outros nós saudáveis.[23]
  • O Kube-proxy é uma implementação de um proxy de rede e um equilibrador de carga, e suporta a abstração do serviço junto com outras operações de rede. É responsável por rotear o tráfego para o contêiner apropriado com base no IP e número da porta do pedido recebido.
  • Um contêiner reside dentro de uma cápsula. O contêiner é o nível mais baixo de um micro-serviço, que abriga a aplicação em funcionamento, bibliotecas e suas dependências. Os contêineres podem ser expostos ao mundo através de um endereço IP externo. A Kubernetes tem apoiado os contêineres Docker desde sua primeira versão. Em julho de 2016, o motor de contêineres rkt foi adicionado[24].

Namespaces

Os namespaces são divisões lógicas dos demais recursos do plano de dados, podendo ser usados para separar, por exemplo, ambiente de testes do de produção.[25][18][19][20]

ReplicaSets

Os ReplicaSets são um recurso utilizado para definir o número de replicas de um ou mais pods, identificados através de um seletor associado ao ReplicaSet.[18][19][20]

Deployments

Um Deployment define o estado desejado de Pods e ReplicaSets. No exemplo abaixo, o Deployment define um ReplicaSet com três replicas, para os Pods cujo rótulo seja encontrado através do seletor definido.[18][19][20]

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

DaemonSets

Os DaemonSets definem um ou mais pods que devem rodar em todos os nodos, sempre.[18][19][20]

Services

Um Service (serviço) no Kubernetes é uma entidade lógica constituida de um ou mais pods, selecionados através de um seletor. O serviço possui um endereço de IP associado a si, publicado através do serviço de DNS do Kubernetes, permitindo assim a sua descoberta por demais serviços do cluster ou externos a ele. Além disso, o Kubernetes realiza o balanceamento das conexões recebidas entre os pods que constituem esse serviço. No exemplo abaixo um serviço é definido, expondo uma porta para os pods selecionados através do seletor.[18][19][20]

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app.kubernetes.io/name: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

Volumes

O armazenamento dos containers é efêmero, isto é, ele deixa de existir quando os containers param de rodar. Os Volumes no Kubernetes são unidades lógicas de armazenamento que podem ser efêmeras ou persistentes, e que são acessíveis por todos containers de um pod.[18][19][20]

ConfigMaps

ConfigMaps são objetos lógicos que armazenam informação no formato chave-valor, informações essas que podem ser acessadas através de variáveis de ambientes, arquivos em um volume, ou através de uma API.[18][19][20]

Secrets

Secrets são como ConfigMaps, mas são feitos para armazenar dados sensíveis como senhas.[18][19][20]

Helm charts

Helm charts são pacotes para o Kubernetes, e Helm é o software que os gerencia. Os pacotes (charts) são nada mais nada menos que arquivos no formato YML dispostos em uma certa estrutura de diretórios, e que descrevem objetos com os descritos nas seções acima, além de um arquivo Chart.yml que descreve o pacote em si. O Helm por sua vez faz a gerência destes pacotes, como controle de versão e empacotamento, interação com o Kubernetes para aplicar os recursos descritos no pacote, entre outros.[26][27]

Referências

  1. ↑ «First GitHub commit for Kubernetes». 7 de junho de 2014
  2. ↑ «Release 1.36.0». 22 abril 2026. Consultado em 23 abril 2026
  3. ↑ https://github.com/kubernetes/kubernetes; data de acesso: 6 julho 2025.
  4. ↑ «kubernetes/kubernetes». GitHub (em inglês). Consultado em 28 de março de 2017. Cópia arquivada em 21 de abril de 2017
  5. ↑ «O que é Kubernetes e como ele funciona?». Red Hat. Consultado em 8 de Fevereiro de 2018
  6. ↑ «What is Kubernetes?». Kubernetes. Consultado em 31 de março de 2017
  7. ↑ MSV, Janakiram. «Why Kubernetes Developer Ecosystem Needs A PaaS». Forbes (em inglês). Consultado em 16 de maio de 2021
  8. ↑ «Google Made Its Secret Blueprint Public to Boost Its Cloud» (em inglês)
  9. ↑ «Google Open Sources Its Secret Weapon in Cloud Computing». Wired
  10. ↑ «Large-scale cluster management at Google with Borg». Proceedings of the European Conference on Computer Systems (EuroSys)
  11. ↑ «Borg, Omega, and Kubernetes - ACM Queue». queue.acm.org
  12. ↑ «Early Stage Startup Heptio Aims to Make Kubernetes Friendly»
  13. ↑ «As Kubernetes Hits 1.0, Google Donates Technology To Newly Formed Cloud Native Computing Foundation». TechCrunch
  14. ↑ «Cloud Native Computing Foundation»
  15. ↑ «Release v1.0: Merge pull request #277 from jackgr/master · helm/helm». GitHub (em inglês). Consultado em 16 de maio de 2021
  16. ↑ «Helm». helm.sh (em inglês). Consultado em 16 de maio de 2021
  17. ↑ Pandya, Spruha (26 de agosto de 2020). «Why do DevOps engineers love Helm?». Cloud Native Computer Foundation. Consultado em 25 de novembro de 2022
  18. 1 2 3 4 5 6 7 8 9 10 11 12 13 Ellingwood, Justin. «An Introduction to Kubernetes». DigitalOcean. Consultado em 20 de novembro de 2022
  19. 1 2 3 4 5 6 7 8 9 10 11 12 13 «Introduction to Kubernetes (LFS158x)». Linux Foundation. Consultado em 20 de novembro de 2022
  20. 1 2 3 4 5 6 7 8 9 10 11 12 13 «Concepts». Kubernetes. Consultado em 20 de novembro de 2022
  21. ↑ «Kubernetes Hardening Guide» (PDF). media.defense.gov (em inglês). Agosto de 2022. Consultado em 11 de dezembro de 2025
  22. ↑ Marhubi, Kamal (27 de agosto de 2015). «What [..] is a Kubelet?». kamalmarhubi.com. Consultado em 2 de novembro de 2015. Cópia arquivada em 13 de novembro de 2015
  23. ↑ «Kubernetes Security | Issues and Best Practices | Snyk». snyk.io (em inglês). 26 de julho de 2020. Consultado em 16 de maio de 2021
  24. ↑ «rktnetes brings rkt container engine to Kubernetes». kubernetes.io. 11 de julho de 2016
  25. ↑ «Kubernetes environment variables». Qualified.One. 29 de novembro de 2022
  26. ↑ «Charts». Helm. Consultado em 25 de novembro de 2022
  27. ↑ «Architechture». Helm. Consultado em 25 de novembro de 2022

Ligações externas