O que é o Azure Kubernetes Service?
Vamos começar com algumas definições e um tour rápido pelo Serviço Kubernetes do Azure (AKS). Esta visão geral fornece informações para ajudá-lo a decidir se o AKS é uma boa plataforma para sua estratégia de gerenciamento de conteinerização.
O que é um contentor?
Um contentor é uma unidade atómica de software que empacota código, dependências e configuração para uma aplicação específica. Os contentores permitem dividir aplicações monolíticas em serviços individuais que compõem a solução. Essa rearquitetura de nosso aplicativo nos permite implantar esses serviços separados por meio de contêineres.
Porque é que deve utilizar um contentor?
Suponha que sua solução de rastreamento de ativos inclua três aplicativos principais:
Um site de rastreamento que inclui mapas e informações sobre os ativos que estão sendo rastreados
Um serviço de processamento de dados que coleta e processa informações enviadas de ativos rastreados
Um banco de dados MSSQL para armazenar informações de clientes capturadas do site
Você percebe que, para atender à demanda do cliente, você tem que expandir sua solução.
Máquinas virtuais (VMs)
Uma opção é implantar uma nova máquina virtual para cada aplicativo, hospedado em várias regiões. Em seguida, copie os aplicativos para suas novas VMs. No entanto, isso torna você responsável pelo gerenciamento de cada VM que você usa.
A sobrecarga de manutenção aumenta à medida que você dimensiona. Você precisa provisionar e configurar as versões e dependências do sistema operacional (SO) da VM para que cada aplicativo corresponda. Quando você aplica atualizações para seus aplicativos que afetam o sistema operacional e alterações importantes, há precauções. Se algum erro aparecer durante a atualização, você precisará reverter a instalação, o que causa interrupções, como tempo de inatividade ou atrasos.
A implantação no diagrama anterior é complicada, às vezes propensa a erros, e não dimensiona facilmente serviços únicos. Por exemplo, você não pode dimensionar facilmente apenas o serviço de cache usado no aplicativo Web. Os contentores ajudam a resolver estes tipos de problemas.
O conceito de contentor dá-nos quatro grandes benefícios:
Imutabilidade: A natureza imutável de um contentor permite que ele seja implantado e executado de modo fiável com o mesmo comportamento entre ambientes de computação. Uma imagem de contentor testada num ambiente de Perguntas e Respostas é a mesma imagem de contentor implementada num ambiente de Produção.
Menor Tamanho: Um contêiner é semelhante a uma VM, mas sem o kernel para cada máquina. Em vez disso, eles compartilham um kernel de host. As VMs usam um arquivo de imagem grande para armazenar o sistema operacional e o aplicativo que você deseja executar. Por outro lado, um contentor não precisa de um SO, mas apenas da aplicação.
Lightweight: O contêiner sempre depende do sistema operacional instalado no host para serviços específicos do kernel. A propriedade leve torna os contêineres menos intensivos em recursos, portanto, a instalação de vários contêineres é possível dentro do mesmo ambiente de computação.
inicialização é rápida: os contêineres são iniciados em poucos segundos, ao contrário das VMs, que podem levar minutos para serem iniciadas.
Esses benefícios tornam os contêineres uma escolha popular para desenvolvedores e operações de TI, e é por isso que muitos estão mudando de VMs.
O que é a gestão de contentores?
Embora os contêineres sejam funcionalmente semelhantes às VMs, suas finalidades variam. Um contêiner tem um ciclo de vida distinto que existe como uma máquina temporária. Seu estado passa pelas fases de pendente, em execução e terminado. Esse ciclo de vida torna os contêineres mais descartáveis e afeta a forma como os desenvolvedores e as operações de TI pensam sobre o gerenciamento de grandes aplicativos interconectados. O gerenciamento de contêineres envolve implantação, atualização, monitoramento e remoção de contêineres.
Por exemplo, suponha que você descubra que ao meio-dia há mais tráfego do site, portanto, você precisa de mais instâncias do serviço de cache do site para gerenciar o desempenho. Você planeja resolver esse problema adicionando mais contêineres de serviço de cache.
Agora é hora de lançar uma nova versão do seu serviço de cache. Como você atualiza todos os contêineres? Como remover todas as versões mais antigas?
Esses tipos de questões de balanceamento de carga exigem um sistema para gerir a sua implantação de contentores.
O que é o Kubernetes?
O Kubernetes é uma plataforma portátil, extensível e de código aberto que automatiza a implantação, o dimensionamento e o gerenciamento de cargas de trabalho em contêineres. O Kubernetes abstrai o gerenciamento complexo de contêineres e nos fornece uma configuração declarativa para orquestrar contêineres em diferentes ambientes de computação. Esta plataforma de orquestração proporciona a mesma facilidade de utilização e flexibilidade que as ofertas de Plataforma como um Serviço (PaaS) e Infraestrutura como um Serviço (IaaS).
O Kubernetes permite-lhe ver o seu datacenter como um grande computador. Não temos de nos preocupar sobre como e onde implementamos os nossos contentores, mas apenas com a implementação e dimensionamento das nossas aplicações, conforme necessário.
Aqui estão mais alguns aspetos a ter em mente sobre o Kubernetes:
O Kubernetes não é uma oferta de PaaS completa. Opera ao nível do contentor e oferece apenas um conjunto comum de funcionalidades de PaaS.
O Kubernetes não é monolítico. Não é uma única aplicação que está instalada. Alguns aspetos, como a implementação, o dimensionamento, o balanceamento de carga, o registo e a monitorização, são opcionais.
O Kubernetes não limita os tipos de aplicativos que você pode executar. Se seu aplicativo pode ser executado em um contêiner, ele é executado no Kubernetes.
Seus desenvolvedores precisam entender conceitos como arquitetura de microsserviços para fazer o uso ideal de soluções de contêiner.
O Kubernetes não fornece middleware, estruturas de processamento de dados, bancos de dados, caches ou sistemas de armazenamento em cluster. Todos estes itens são executados como contentores ou como parte de outra oferta de serviço.
Uma implementação do Kubernetes é configurada como um cluster. Um cluster consiste em pelo menos uma máquina primária ou plano de controle e uma ou mais máquinas de trabalho. Para implantações de produção, a configuração preferida é uma implantação de alta disponibilidade com três a cinco máquinas de plano de controle replicadas que são chamadas de nós ou nós de agente.
Com todos os benefícios que você recebe com o Kubernetes, você é responsável por encontrar a melhor solução que atenda às suas necessidades para lidar com esses aspetos. Lembre-se de que você é responsável pela manutenção do cluster do Kubernetes. Por exemplo, precisa de gerir as atualizações do SO, bem como as atualizações e a instalação do Kubernetes. Também precisa de gerir a configuração de hardware dos computadores anfitriões, como a rede, memória e armazenamento.
Nota
Por vezes, o nome do Kubernetes é abreviado para K8s. O número 8 representa os oito carateres entre a letra "K" e a letra "s" da palavra K(ubernete)s.
O que é o Serviço Kubernetes do Azure (AKS)?
O AKS gerencia seu ambiente Kubernetes hospedado e simplifica a implantação e o gerenciamento de aplicativos em contêineres no Azure. O seu ambiente do AKS está ativado com funcionalidades como o dimensionamento simples, autorrecuperação e atualizações automatizadas. O Azure gerencia o plano de controle do cluster Kubernetes gratuitamente. A gestão dos nós de agente no cluster é feita por si e só paga as VMs nas quais os seus nós são executados.
Você pode criar e gerenciar seu cluster no portal do Azure ou com a CLI do Azure. Quando você cria o cluster, há modelos do Resource Manager para automatizar a criação do cluster. Com esses modelos, você tem acesso a recursos como opções avançadas de rede, identidade do Microsoft Entra e monitoramento de recursos. Em seguida, você pode configurar gatilhos e eventos para automatizar a implantação do cluster para vários cenários.
Com o AKS, você obtém os benefícios do Kubernetes de código aberto sem a complexidade adicional ou a sobrecarga operacional que usar apenas o Kubernetes pode acarretar.