Olá, querido (a) aluno(a)!
Introdução ao Kubernetes
Kubernetes, comumente abreviado como K8s, é um sistema de orquestração de contêineres open-source, desenvolvido para automatizar a implantação, escalabilidade e gerenciamento de aplicações. Originalmente projetado pelo Google, agora é mantido pela Cloud Native Computing Foundation.
Como plataforma, o Kubernetes trabalha com diversos runtimes de contêineres, como containerd e CRI-O, e é adequado para gerenciar cargas de trabalho nativas da nuvem em grande escala.
Por Que Kubernetes?
Antes de Kubernetes, as organizações executavam aplicações em servidores físicos, sem a capacidade de definir limites de recursos para aplicações, levando a problemas de alocação de recursos.
A virtualização foi introduzida como solução, permitindo a execução de várias Máquinas Virtuais em um único servidor físico.
Contêineres, semelhantes a VMs, mas mais leves, vieram depois, oferecendo isolamento relaxado e portabilidade entre nuvens e distribuições de sistemas operacionais.
Vantagens do Kubernetes em Ambientes de Contêineres
Kubernetes oferece criação e implantação ágil de aplicações, separação de preocupações entre desenvolvimento e operações, observabilidade, consistência ambiental, portabilidade entre nuvens e sistemas operacionais, gerenciamento centrado na aplicação, isolamento de recursos e alta eficiência de utilização de recursos.
Gestão de Contêineres com Kubernetes
Em ambientes de produção, gerenciar contêineres que executam aplicações e garantir a ausência de tempo de inatividade é crítico.
Kubernetes automatiza a escalabilidade e failover de aplicações, padrões de implantação, e mais. Ele suporta:
- descoberta de serviços,
- balanceamento de carga,
- orquestração de armazenamento,
- implantações e reversões automatizadas,
- empacotamento binário automático,
- autorreparo,
- gerenciamento de segredos e configurações,
- execução de lotes e escalonamento horizontal.
Kubernetes – Além de um Simples PaaS
Diferente de sistemas PaaS tradicionais, Kubernetes opera no nível do contêiner em vez de no nível de hardware.
Ele fornece recursos comuns a ofertas de PaaS, como implantação, escalabilidade e balanceamento de carga, mas não é monolítico.
O Kubernetes fornece blocos de construção para plataformas de desenvolvedores, mas preserva a escolha e a flexibilidade do usuário onde é importante.
Componentes do Cluster Kubernetes – Plano de Controle
O plano de controle do Kubernetes gerencia o estado do cluster. Consiste em vários componentes, como o servidor API, que serve a API Kubernetes e processa solicitações REST, o etcd, um armazenamento de dados chave-valor distribuído que armazena dados de configuração do cluster, e o agendador, que seleciona em qual nó um pod não programado deve ser executado.
Workers (Trabalhadores) e Recursos do Nó
Cada nó no cluster Kubernetes, também conhecido como worker ou minion, é uma máquina onde os contêineres são implantados. Os nós devem executar um runtime de contêiner e componentes adicionais para a comunicação com a configuração de rede principal dos contêineres.
O kubelet é responsável pelo estado de execução de cada nó e o kube-proxy atua como um proxy de rede e balanceador de carga.
Gerenciamento de Recursos com Namespaces e Pods
Os namespaces no Kubernetes são usados para segregar recursos em coleções distintas e não-intersecionantes, úteis em ambientes com muitos usuários e equipes.
A unidade básica de agendamento no Kubernetes é um pod, que consiste em um ou mais contêineres garantidos de serem co-localizados no mesmo nó.
Volumes, Serviços e Gerenciamento de Configuração
Volumes no Kubernetes fornecem armazenamento persistente que existe pela vida útil do pod.
Um serviço Kubernetes é um conjunto de pods que trabalham juntos, definidos por um seletor de rótulos. Kubernetes também oferece mecanismos para gerenciar informações de configuração e dados sensíveis através de ConfigMaps e Secrets.
Flexibilidade e Extensibilidade do Kubernetes
Kubernetes permite aos clientes anexar rótulos a qualquer objeto da API no sistema, como pods e nós, facilitando a seleção de objetos correspondentes. Isso suporta padrões de implantação variados e oferece um acoplamento frouxo dentro da infraestrutura.
Kubernetes é projetado para ser extensível, permitindo adicionar funcionalidades ao cluster sem alterar o código fonte upstream.
Vamos ver como esse conteúdo já foi cobrada em concurso?
1) Ano: 2023 Banca: IF-ES Órgão: IF-ES Prova: IF-ES – 2023 – IF-ES – Analista de Tecnologia da Informação
No contexto de Kubernetes, identifique a opção que contém a afirmação INCORRETA:
A) Kubernetes é um sistema opensource que automatiza a implantação e o dimensionamento de aplicação em contêineres.
B) UID é o identificador único universal gerado para identificar objetos de forma única.
C) ETCD é um serviço de armazenamento “chave-valor” consistente e de alta disponibilidade, usado para gravar as informações do cluster Kubernetes.
D) O componente kube-scheduler seleciona um nó ideal para executar cada Pod recém-criado.
E) O Kubernetes pode ser utilizado para implantar código-fonte, construir a aplicação e fornecer serviços em nível de aplicação.
Gabarito: E.
Comentário: A afirmação “E) O Kubernetes pode ser utilizado para implantar código-fonte, construir a aplicação e fornecer serviços em nível de aplicação.” é incorreta porque o Kubernetes não é diretamente responsável por implantar o código-fonte ou construir a aplicação. Essas são responsabilidades de sistemas de integração contínua e entrega contínua (CI/CD), como Jenkins, GitLab CI, ou ferramentas de construção de imagens de contêiner como Docker.
O Kubernetes é uma plataforma de orquestração de contêineres que automatiza a implantação, o dimensionamento e a gestão de aplicações em contêineres. A principal função do Kubernetes é gerenciar a execução de contêineres em um cluster de servidores, lidando com a distribuição e agendamento dos contêineres, a saúde do sistema, o balanceamento de carga entre outros.
As outras opções (A, B, C, D) descrevem corretamente os componentes e funcionalidades dentro do ecossistema do Kubernetes:
A) Kubernetes é um sistema de código aberto para automação de implantação, dimensionamento e operações de aplicativos em contêineres.
B) UID é um identificador único universal que o Kubernetes gera para identificar objetos de forma única.
C) ETCD é um serviço de armazenamento de chave-valor confiável usado pelo Kubernetes para armazenar todas as informações do cluster.
D) kube-scheduler é o componente responsável por selecionar o nó mais adequado para executar um Pod recém-criado, com base em vários critérios, como recursos disponíveis, políticas de serviço, especificações de afinidade e antiafinidade, entre outros.
Então é isso!
Bons estudos e até o nosso próximo artigo.
Prof. Jósis Alves
Coordenador TI – Gran Concursos
Analista de TI no Supremo Tribunal Federal
Participe da conversa