Top Qs
Linha do tempo
Chat
Contexto

Kubernetes

software para gerenciar contêineres em um cluster de servidor Da Wikipédia, a enciclopédia livre

Remove ads

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.[3][4] Ele foi originalmente projetado pelo Google e agora é mantido pela Cloud Native Computing Foundation.[5] Ele funciona com uma variedade de ferramentas de conteinerização, incluindo Docker.

Factos rápidos
Remove ads

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. [6]

Remove ads

História

Thumb
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,[7] a quem se juntaram rapidamente outros engenheiros da Google, incluindo Brian Grant e Tim Hockin, e foi anunciado pelo Google em meados de 2014.[8] Seu desenvolvimento e design são fortemente influenciadas pelo sistema Google Borg,[9][10] 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".[11] 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.[12] Juntamente com o lançamento, o Google fez uma parceria com a Linux Foundation para formar a Cloud Native Computing Foundation (CNCF)[13] e ofereceu Kubernetes como uma tecnologia de base.

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

Remove ads

Conceitos

Resumir
Perspectiva

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.[17][18][19]

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.[17][18][19]

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.[17][18][19]

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.[17][18][19]

Nodes

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

  • 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ó.[20] 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.[21]
  • 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[22].

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.[23][17][18][19]

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.[17][18][19]

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.[17][18][19]

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.[17][18][19]

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.[17][18][19]

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.[17][18][19]

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.[17][18][19]

Secrets

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

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.[24][25]

Remove ads

Referências

  1. «Release 1.33.0». 23 abril 2025. Consultado em 24 abril 2025
  2. «kubernetes/kubernetes». GitHub (em inglês). Consultado em 28 de março de 2017. Cópia arquivada em 21 de abril de 2017
  3. «O que é Kubernetes e como ele funciona?». Red Hat. Consultado em 8 de Fevereiro de 2018
  4. «What is Kubernetes?». Kubernetes. Consultado em 31 de março de 2017
  5. MSV, Janakiram. «Why Kubernetes Developer Ecosystem Needs A PaaS». Forbes (em inglês). Consultado em 16 de maio de 2021
  6. «Large-scale cluster management at Google with Borg». Proceedings of the European Conference on Computer Systems (EuroSys)
  7. «Release v1.0: Merge pull request #277 from jackgr/master · helm/helm». GitHub (em inglês). Consultado em 16 de maio de 2021
  8. «Helm». helm.sh (em inglês). Consultado em 16 de maio de 2021
  9. Pandya, Spruha (26 de agosto de 2020). «Why do DevOps engineers love Helm?». Cloud Native Computer Foundation. Consultado em 25 de novembro de 2022
  10. Ellingwood, Justin. «An Introduction to Kubernetes». DigitalOcean. Consultado em 20 de novembro de 2022
  11. «Introduction to Kubernetes (LFS158x)». Linux Foundation. Consultado em 20 de novembro de 2022
  12. «Concepts». Kubernetes. Consultado em 20 de novembro de 2022
  13. 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
  14. «Kubernetes Security | Issues and Best Practices | Snyk». snyk.io (em inglês). 26 de julho de 2020. Consultado em 16 de maio de 2021
  15. «Kubernetes environment variables». Qualified.One. 29 de novembro de 2022
  16. «Charts». Helm. Consultado em 25 de novembro de 2022
  17. «Architechture». Helm. Consultado em 25 de novembro de 2022
Remove ads

Ligações externas

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads