Ku­ber­ne­tes é uma pla­ta­forma de código aberto para im­plan­ta­ção, es­ca­lo­na­mento e ge­ren­ci­a­mento au­to­ma­ti­zado de apli­ca­ções con­tei­ne­ri­za­das. Ela organiza con­têi­ne­res em clusters e garante que os serviços funcionem de maneira confiável e eficiente. Com fun­ci­o­na­li­da­des como ba­lan­ce­a­mento de carga, autocura e rollouts, o Ku­ber­ne­tes sim­pli­fica sig­ni­fi­ca­ti­va­mente a operação de apli­ca­ções modernas.

Managed Ku­ber­ne­tes da IONOS
O jeito mais simples de gerenciar cargas de trabalho em con­têi­ne­res.

Ins­ta­la­ção de clusters Ku­ber­ne­tes to­tal­mente au­to­ma­ti­zada, vi­si­bi­li­dade máxima e controle de clusters K8s.

O que é Ku­ber­ne­tes

Ku­ber­ne­tes (K8s) é um sistema open-source para or­ques­tra­ção de con­têi­ne­res, ori­gi­nal­mente de­sen­vol­vido pelo Google e atu­al­mente ad­mi­nis­trado pela Cloud Native Computing Foun­da­tion (CNCF). Ele gerencia apli­ca­ções em con­têi­ne­res em ambientes dis­tri­buí­dos, au­to­ma­ti­zando o início (ou reinício), es­ca­lo­na­mento, mo­ni­to­ra­mento e subs­ti­tui­ção de con­têi­ne­res conforme ne­ces­sá­rio.

A ar­qui­te­tura, escrita na linguagem de pro­gra­ma­ção Go, está es­tru­tu­rada em um master node e vários worker-nodes, com com­po­nen­tes di­fe­ren­tes, como o scheduler, res­pon­sá­veis por tarefas ad­mi­nis­tra­ti­vas centrais. Por meio de con­fi­gu­ra­ções de­cla­ra­ti­vas (por exemplo, em arquivos YAML), define-se estados desejados que o Ku­ber­ne­tes assegura con­ti­nu­a­mente. A fer­ra­menta tem como objetivo tanto o uso da nuvem quanto a im­ple­men­ta­ção em com­pu­ta­do­res locais ou em data centers on-premises.

Como funciona o Ku­ber­ne­tes?

Ku­ber­ne­tes é um sistema de or­ques­tra­ção de con­têi­ne­res. Isso significa que o software não tem como objetivo criar con­têi­ne­res, mas sim gerenciá-los. Para isso, o Ku­ber­ne­tes aposta na automação de processos. Isso facilita para de­sen­vol­ve­do­res testarem, manterem ou pu­bli­ca­rem apli­ca­ções. A ar­qui­te­tura do Ku­ber­ne­tes se compõe de uma hi­e­rar­quia clara:

  • Contêiner: um contêiner contém apli­ca­ções e ambientes de software.
  • Pod: esta unidade na ar­qui­te­tura do Ku­ber­ne­tes reúne con­têi­ne­res que precisam trabalhar juntos para uma aplicação.
  • Node: um ou mais pods do Ku­ber­ne­tes rodam em um node, que pode ser tanto uma máquina virtual quanto uma física.
  • Cluster: vários nodes são agrupados em um cluster do Ku­ber­ne­tes.

Além disso, a ar­qui­te­tura do Ku­ber­ne­tes baseia-se no princípio de master e worker nodes. Como worker nodes, ou seja, as partes con­tro­la­das do sistema, são usados os nodes descritos. Eles estão sob a gestão e controle do node master do Ku­ber­ne­tes.

Entre as tarefas de um master está, por exemplo, dis­tri­buir pods nos nodes. Por meio da mo­ni­to­ri­za­ção constante, o master pode intervir assim que um node falhar, du­pli­cando-o ime­di­a­ta­mente para compensar a falha. O estado atual é sempre comparado com um estado desejado e ajustado conforme ne­ces­sá­rio. Esses processos ocorrem au­to­ma­ti­ca­mente. O master também é o ponto de acesso para ad­mi­nis­tra­do­res, que podem or­ques­trar os con­têi­ne­res por meio dele.

Cloud Compute Engine da IONOS

Empresas de médio e grande porte optam pela nuvem da Alemanha. Serviços IaaS e PaaS são para campeões.

  • Seguro
  • Confiável
  • Flexível

Nodes no Ku­ber­ne­tes

O worker node é um servidor físico ou virtual, onde um ou mais con­têi­ne­res estão ativos. No node, há um ambiente de execução para os con­têi­ne­res. Além disso, o chamado Kubelet está ativo. Trata-se de um com­po­nente que permite a co­mu­ni­ca­ção com o master. O com­po­nente também inicia e para con­têi­ne­res. Com o cAdvisor, o Kubelet possui um serviço que registra o uso de recursos, o que é in­te­res­sante para análises. Por fim, existe o Kube-proxy, com o qual o sistema realiza load balancing e permite conexões de rede via TCP ou outros pro­to­co­los.

Master no Ku­ber­ne­tes

O master também é um servidor. Para garantir o controle e a mo­ni­to­ri­za­ção dos nodes, o con­trol­ler manager é executado no master. Esse com­po­nente, por sua vez, une vários processos em si:

  • O node con­trol­ler monitora os nodes e reage quando um deles falha.
  • O re­pli­ca­tion con­trol­ler garante que sempre haja o número desejado de pods em execução si­mul­tâ­nea. Em con­fi­gu­ra­ções modernas, ele é am­pla­mente subs­ti­tuído por Re­pli­ca­Sets, que ge­ral­mente são geridos por meio de de­ploy­ments.
  • O endpoints con­trol­ler é res­pon­sá­vel pelo objeto endpoint, que cuida da conexão entre services e pods.
  • Service account e token con­trol­ler gerenciam o namespace e criam tokens de acesso ao API.

Além do con­trol­ler manager, uma base de dados chamada etcd é executada. Nesse banco de dados chave-valor, a con­fi­gu­ra­ção do cluster, pelo qual o master é res­pon­sá­vel, é ar­ma­ze­nada. Com o com­po­nente scheduler, o master pode au­to­ma­ti­zar a dis­tri­bui­ção de pods nos nodes. A conexão com o node é feita pelo servidor API integrado no master. Este fornece uma interface REST e troca in­for­ma­ções com o cluster por meio de JSON. Por exemplo, dessa maneira, os di­fe­ren­tes con­tro­la­do­res também poderiam acessar os nodes.

Ku­ber­ne­tes e Docker: con­cor­ren­tes?

A com­pe­ti­ção Ku­ber­ne­tes vs. Docker de quem performa melhor não é uma questão, pois os dois programas são usados juntos. Docker (ou outra pla­ta­forma de container como rkt) também é res­pon­sá­vel por criar e executar con­tai­ners no Ku­ber­ne­tes. O Ku­ber­ne­tes acessa esses con­tai­ners e assume a or­ques­tra­ção ou a automação de processos. Ku­ber­ne­tes sozinho não pode realizar a criação de con­tai­ners.

Uma com­pe­ti­ção existe, no máximo, com o Docker Swarm. Trata-se de uma fer­ra­menta para or­ques­tra­ção de Docker. Esta fer­ra­menta também trabalha com clusters e oferece fun­ci­o­na­li­da­des se­me­lhan­tes ao Ku­ber­ne­tes.

Vantagens do Ku­ber­ne­tes

O Ku­ber­ne­tes im­pres­si­ona com uma variedade de be­ne­fí­cios que melhoram tanto a es­ca­la­bi­li­dade quanto a segurança ope­ra­ci­o­nal e a efi­ci­ên­cia.

Es­ca­lo­na­mento au­to­ma­ti­zado: para eco­no­mi­zar custos, o Ku­ber­ne­tes pode utilizar recursos de forma perfeita. Em vez de deixar máquinas não ne­ces­sá­rias em fun­ci­o­na­mento, o Ku­ber­ne­tes pode liberar esses recursos e usá-los para outras tarefas ou sim­ples­mente não utilizá-los, o que pode eco­no­mi­zar custos.

Alta dis­po­ni­bi­li­dade: por meio de re­pli­ca­ção e re­cu­pe­ra­ção au­to­má­tica, o Ku­ber­ne­tes garante que as apli­ca­ções continuem a funcionar mesmo em caso de falhas ou falhas de com­po­nen­tes in­di­vi­du­ais.

Or­ques­tra­ção eficiente de recursos: pods e con­tai­ners são dis­tri­buí­dos de forma in­te­li­gente nos nós dis­po­ní­veis, o que otimiza o uso da ca­pa­ci­dade de pro­ces­sa­mento.

Im­plan­ta­ção e reversão simples: novas versões de apli­ca­ções podem ser dis­tri­buí­das com esforço mínimo. Se ne­ces­sá­rio, também é possível reverter ra­pi­da­mente para versões an­te­ri­o­res.

In­de­pen­dên­cia de pla­ta­forma: o Ku­ber­ne­tes funciona em ser­vi­do­res locais, na nuvem ou em uma nuvem híbrida; os workloads per­ma­ne­cem portáteis.

Des­co­berta de serviço e load balacing: o Ku­ber­ne­tes detecta au­to­ma­ti­ca­mente serviços dentro do cluster e distribui o tráfego de forma equi­li­brada, sem ne­ces­si­dade de ba­lan­ce­a­do­res de carga externos.

Ge­ren­ci­a­mento eficiente com o uso de APIs: por meio de um API central, todos os com­po­nen­tes do cluster podem ser ge­ren­ci­a­dos e au­to­ma­ti­za­dos, inclusive por fer­ra­men­tas externas e pipelines CI/CD.

Para que serve o Ku­ber­ne­tes

Ku­ber­ne­tes é es­pe­ci­al­mente adequado quando apli­ca­ções são operadas em con­têi­ne­res e uma in­fra­es­tru­tura escalável e altamente dis­po­ní­vel é ne­ces­sá­ria. Além disso, os seguintes casos de uso podem ser iden­ti­fi­ca­dos:

  • Ar­qui­te­tu­ras de mi­cros­ser­vi­ços: na prática, o K8s é fre­quen­te­mente usado para operar ar­qui­te­tu­ras de mi­cros­ser­vi­ços, nas quais muitos pequenos serviços são de­sen­vol­vi­dos, testados e atu­a­li­za­dos de forma in­de­pen­dente. As empresas utilizam o Ku­ber­ne­tes para au­to­ma­ti­zar ambientes de de­sen­vol­vi­mento e produção e responder mais ra­pi­da­mente a novas demandas.
  • CI/CD: Ku­ber­ne­tes também é utilizado no campo da in­te­gra­ção contínua e im­plan­ta­ção contínua, pois permite au­to­ma­ti­zar im­ple­men­ta­ções e gerenciar versões de forma eficiente.
  • Multi cloud e hybrid cloud: em es­tra­té­gias de multi cloud ou hybrid cloud, o Ku­ber­ne­tes é usado para dis­po­ni­bi­li­zar cargas de trabalho de forma in­de­pen­dente de pla­ta­forma e se mover de maneira flexível entre di­fe­ren­tes pro­ve­do­res de nuvem ou data centers.
  • Big data: além disso, o Ku­ber­ne­tes também é adequado para projetos de big data e machine learning, nos quais muitos con­têi­ne­res de curta duração são exe­cu­ta­dos em paralelo.
  • Grandes pla­ta­for­mas: Ku­ber­ne­tes é in­dis­pen­sá­vel para grandes pla­ta­for­mas com um alto número de usuários, a fim de gerenciar au­to­ma­ti­ca­mente picos de tráfego e garantir a re­si­li­ên­cia contra falhas.
Ir para o menu principal