Um mergulho profundo de um arquiteto de soluções na arquitetura do Kubernetes e nos benefícios
by Raof Ahmed, Kubernetes Solution Architect, Rackspace Technology


Recent Posts
Acelere sua jornada na nuvem com os pods dedicados da Rackspace Elastic Engineering
Junho 12th, 2025
Porque é que a tecnologia de nuvem é essencial para as operações dos cuidados de saúde modernos
Junho 11th, 2025
Conformidade baseada em IA: Desbloquear a eficiência e melhorar a segurança na nuvem, inclusive para CMMC
Junho 9th, 2025
Related Posts
Products
Acelere sua jornada na nuvem com os pods dedicados da Rackspace Elastic Engineering
Junho 12th, 2025
Cloud Insights
Porque é que a tecnologia de nuvem é essencial para as operações dos cuidados de saúde modernos
Junho 11th, 2025
Cloud Insights
Conformidade baseada em IA: Desbloquear a eficiência e melhorar a segurança na nuvem, inclusive para CMMC
Junho 9th, 2025
Cloud Insights
CDOs: A IA, a colaboração entre equipas e a governação de dados são fundamentais para o sucesso dos dados
Maio 27th, 2025
Cloud Insights
Reforçar os cuidados aos doentes através de uma segurança de nuvem resiliente
Maio 20th, 2025
A Rackspace Technology compartilha uma visão geral da Kubernetes para garantir que as organizações entendam totalmente os excelentes recursos dessa tecnologia.
Em 2021, 96% das organizações que participaram da pesquisa da Cloud Native Computing Foundation usavam ou avaliavam a tecnologia de contêiner. No Container Report de 2022, a Datadog descobriu que quase metade de todas as organizações que usam contêineres executavam o Kubernetes® (também conhecido como K8s) para implementar e gerenciar pelo menos alguns desses contêineres.
Apesar do crescimento generalizado de contêineres e Kubernetes, descobrimos que algumas organizações ainda não compreendem totalmente os recursos deles. Como resultado, elas não aproveitam todo o potencial dessa tecnologia. Alguns dos recursos que as organizações podem estar perdendo incluem automação, autocorreção, proteção de perda dos dados e um desempenho rentável em ambientes multinuvens e multilocatários.
Neste artigo do blog, procuro dar uma visão geral abrangente do Kubernetes e tirar algumas dúvidas para que a sua organização aproveite as oportunidades que essa excelente tecnologia de contêiner oferece.
Por que o Kubernetes?
Kubernetes é uma plataforma de código aberto para orquestração de contêineres que visa à gestão de serviços e volumes de trabalho em contêineres. Ele automatiza o ciclo de vida de aplicativos em contêineres em infraestruturas modernas - essencialmente, gerencia aplicativos em um sistema distribuído para operar como um sistema operacional de data center.
O Kubernetes faz um excelente trabalho em automatizar ambientes em contêineres, de modo que as organizações economizem tempo e aumentem a produtividade. Além disso, as organizações podem colocar o volume de trabalho em contêineres e deixar tudo como automático.
A maioria dos nossos clientes nos pede para implementar o Kubernetes no ambiente e treinar os engenheiros após a implementação. Isso é feito por uma equipe de Engenharia Elástica da Rackspace, que oferece serviços flexíveis até que os clientes se sintam autossuficientes. Já outros clientes querem que a Rackspace Technology gerencie totalmente o Kubernetes para se dedicarem a outros aspectos da empresa. Esses clientes interagem conosco pelo nosso serviço Rackspace Managed Platform for Kubernetes.
Quais são os principais recursos do Kubernetes ?
Essa tecnologia de contêiner oferece seis recursos essenciais:
- Orquestração do contêiner: automatiza a implementação, o tamanho e o balanceamento de carga de aplicativos em contêiner.
- Configuração declarativa: permite definir declarativamente o estado desejado dos seus aplicativos e infraestrutura, facilitando a gestão e a manutenção.
- Descoberta de serviços: inclui um mecanismo para que os aplicativos encontrem e se comuniquem entre si.
- Balanceamento de carga: distribui o tráfego em várias instâncias de um aplicativo e já vem com balanceamento de carga.
- Ajuste automático do tamanho: ajusta automaticamente o tamanho dos aplicativos com base no uso de recursos ou outras métricas.
- Atualizações contínuas: atualiza os aplicativos sem tempo de inatividade.
O que é modelo de arquitetura de nó de trabalho máster do Kubernetes?
A arquitetura do Kubernetes é construída em torno de um modelo de nó de trabalho máster, como visto neste diagrama.
1. Nó máster do Kubernetes: o nó máster (também conhecido como nó do plano de controle) é responsável por gerenciar o cluster e os respectivos recursos. Esse plano de controle serve como o sistema nervoso central do cluster. Ele supervisiona a gestão do estado do cluster, o agendamento dos aplicativos e o tratamento da comunicação entre os nós. O nó máster também armazena e gerencia os dados de configuração do cluster.
Os principais elementos do nó máster são:
- Servidor de API: componente central do nó principal, expõe a API do Kubernetes a outros componentes do cluster. O servidor API lida com toda a comunicação entre os componentes do cluster.
- Etcd: armazenamento do valor-chave distribuído, usado para armazenar dados de configuração do cluster. É um componente essencial do nó máster do Kubernetes porque armazena o estado do cluster.
- Agendador: supervisiona a atribuição de pods para agrupar nós com base na disponibilidade dos recursos e nos requisitos do volume de trabalho. Para que o cluster seja executado de forma eficiente, o agendador toma decisões inteligentes sobre onde colocar os volumes de trabalho.
- Gerente do controlador: essa função supervisiona a gestão dos vários controladores que mantêm o cluster no estado desejado. O gerenciador do controlador também contém o controlador de replicação, que garante que o número desejado de réplicas esteja sempre em execução.
As funções e responsabilidades do nó máster são:
- Administração do cluster: supervisiona o estado geral do cluster do Kubernetes. Ele garante que todos os nós do cluster estejam operacionais e que os dados de configuração estejam atualizados.
- Alocação dos recursos: supervisiona a gestão da alocação dos recursos em todo o cluster, garantindo que os volumes de trabalho sejam distribuídos uniformemente em todos os nós disponíveis e que o cluster seja executado com máxima eficiência.
- Ajuste do tamanho: supervisiona a expansão ou a contração do cluster com base no volume de trabalho. Ele pode adicionar ou retirar nós conforme necessário para manter o cluster em execução na capacidade máxima.
- Alta disponibilidade: oferece alta disponibilidade para manter os clusters em funcionamento, mesmo que um ou mais nós falhem. Para isso, emprega mecanismos de replicação e failover.
2. Nós de trabalho do Kubernetes: nó de trabalho (às vezes chamado de nó minion) é um componente do cluster que executa aplicativos no contêiner. Ele executa tarefas delegadas pelo plano de controle, como executar contêineres e gerenciar o armazenamento.
O nó de trabalho pode ser uma máquina física ou virtual que executa o sistema operacional Linux® ou Windows®. Cada nó de trabalho possui um conjunto de recursos de hardware que podem ser alocados a contêineres, como CPU, memória e armazenamento.
O nó de trabalho é alimentado por um sistema operacional que fornece a infraestrutura para a execução dos contêineres. Ele é composto de várias partes que funcionam juntas para executar aplicativos em contêineres:
- Kubelet: um agente do nó de trabalho que se comunica com o plano de controle. É responsável por gerenciar o estado do nó, iniciar e parar contêineres e relatar o status do nó ao plano de controle.
- Kube-proxy: proxy de rede executado em cada nó de trabalho. É responsável por gerenciar o tráfego de rede entre contêineres e serviços de cluster.
- Tempo de execução do contêiner: o software que executa contêineres no nó de trabalho. Docker, Containerd e CRI-O estão entre os tempos de execução do contêiner aceitos pelo Kubernetes.
Ao implementar um aplicativo em contêineres em um cluster do Kubernetes, o plano de controle programa o aplicativo para ser executado em um nó de trabalho, que usa os recursos para executar o contêiner.
O kubelet se comunica com o plano de controle para obter informações, como requisitos de imagem e recursos, do contêiner. Em seguida, ele recupera a imagem do contêiner de um registro de contêiner e a inicia no nó de trabalho.
O kube-proxy gerencia o tráfego de rede entre contêineres e serviços de cluster. Ele garante que cada contêiner tenha um endereço IP distinto e possa se comunicar com outros contêineres e serviços. O contêiner é gerenciado pelo tempo de execução do contêiner no nó de trabalho. Ele protege e isola o ambiente do contêiner; e gerencia recursos como CPU, memória e armazenamento.
O que é pod do Kubernetes?
Pod do Kubernetes é a menor unidade implementável que representa uma única instância de um processo em execução no cluster. É um host lógico para um ou mais contêineres, completo e com recursos compartilhados e um espaço de nomes de rede. Ele engloba um ou mais contêineres, recursos de armazenamento e componentes de rede; e representa uma única instância de um processo em execução em um cluster. Além disso, os pods podem ser criados, ajustados ou excluídos a qualquer momento pelo Kubernetes com base na configuração da implementação.
Os pods servem para executar um ou mais contêineres intimamente relacionados, como um servidor da web e o respectivo banco de dados. Os contêineres dentro de um pod têm o mesmo espaço de nome de rede e endereço IP e podem se comunicar pela interface de rede do localhost. Os pods também compartilham o mesmo volume de armazenamento, normalmente usado para armazenar dados de aplicativos compartilhados ou arquivos de configuração entre contêineres. Isso simplifica a gestão dos dados e padroniza todo o aplicativo.
Uma das principais vantagens de usar pods é a capacidade de eles seres ampliados ou reduzidos em resposta à demanda. Se o volume de trabalho de um aplicativo aumentar, por exemplo, o Kubernetes pode criar pods para lidar com a esse volume extra. Se o volume de trabalho cair, o Kubernetes pode reduzir o número de pods em execução para otimizar o uso dos recursos.
Cada pod do Kubernetes tem o próprio endereço IP, bem como um nome de domínio totalmente qualificado (FQDN) que pode ser usado para se comunicar com outros pods e serviços no cluster. Isso facilita a gestão e a vinculação de vários pods em um aplicativo distribuído.
Os pods também podem ser configurados com vários ganchos de ciclo de vida, que permitem a execução de lógica personalizada durante o ligamento, o desligamento ou atualização de um pod. Isso pode ser útil para tarefas como iniciação dos dados, migrações de banco de dados e alterações de configuração em um aplicativo.
O que é réplica do Kubernetes?
O Kubernetes oferece vários recursos para gerenciar e operar aplicativos em contêiner, incluindo a capacidade de criar e gerenciar réplicas de aplicativos. Réplica é a cópia de um pod criado para gerar redundância e alta disponibilidade. No Kubernetes, os usuários podem criar várias réplicas de um pod e as distribuir por vários nós em um cluster. Com isso, se um pod falhar ou ficar indisponível, outro pod pode entrar e continuar atendendo ao tráfego sem interrupções.
Para gerenciar as réplicas de um pod, o Kubernetes tem dois tipos de controladores: replicação e ReplicaSet. Controladores de replicação são um mecanismo mais antigo para gerenciar réplicas do Kubernetes. ReplicaSet é o método mais novo e preferido.
O ReplicaSet é mais eficiente e flexível do que os controladores de replicação mais antigos. Ele oferece um conjunto mais robusto de recursos para a gestão das réplicas. Os usuários podem usar o ReplicaSet para expandir ou reduzir o número de réplicas com base na demanda; criar estratégias para implementar atualizações; e trocar automaticamente as réplicas com falha.
Ao criar um ReplicaSet, os usuários definem um modelo que descreve o pod a ser replicado e o número de réplicas desejadas. Em seguida, para garantir que o número desejado de réplicas esteja sempre em execução, o Kubernetes adiciona ou retira réplicas conforme necessário.
O ReplicaSet também pode ser combinado com o Kubernetes Service, uma camada de abstração que define um conjunto lógico de pods e fornece um endereço IP e um nome DNS consistentes para um grupo de réplicas. Os usuários podem acessar as réplicas de um pod com um URL consistente, independentemente de qual réplica atende à solicitação.
O que é implementação do Kubernetes?
O processo de implementação de aplicativos em contêineres em clusters do Kubernetes é conhecido como implementação do Kubernetes. Implementação é uma camada de abstração que define o estado desejado de um aplicativo em contêiner e traz uma maneira de gerenciá-lo. Ele lida com a implementação de contêineres, a expansão e atualizações contínuas.
A implementação do Kubernetes é realizada com a criação e a gestão de conjuntos de réplicas, como mostrado na imagem abaixo. Pode ser comparado a um projeto de um aplicativo em contêiner. Ele especifica o estado desejado do aplicativo, incluindo o número de réplicas, a imagem do contêiner a ser usada e quaisquer configurações. Ao criar e gerenciar um conjunto de réplicas, a implementação do Kubernetes garante que o estado desejado do aplicativo seja mantido.
A implementação do Kubernetes também aceita atualizações contínuas para atualizar a imagem ou a configuração do contêiner de um aplicativo sem tempo de inatividade. A atualização contínua gradualmente troca as réplicas existentes por novas, a fim de atualizar o conjunto de réplicas de forma controlada.
O uso do Kubernetes vem se expandindo à medida que mais empresas notam os benefícios, como economia na orquestração dos contêineres, implementação do volume de trabalho em várias nuvens, automação da implementação e do ajuste do tamanho e muito mais. A Rackspace Technology é a principal parceira de várias empresas líderes que desejam aproveitar as oportunidades que essa excelente tecnologia de contêineres oferece.
Nos diga como podemos ajudar sua organização a lançar e otimizar o Kubernetes - e aproveite a expertise de uma equipe dedicada e flexível de Engenharia Elástica da Rackspace.
Tags: