O que é o AKS?
O Azure Kubernetes Service (AKS) é um serviço gerenciado do Kubernetes do Microsoft Azure que visa simplificar a implantação e o gerenciamento de clusters do Kubernetes. Para isso, o AKS transfere as tarefas operacionais de gerenciamento de cluster para o Azure, que trabalha com o painel de controle do Kubernetes e simplifica a configuração dos nós de trabalho. O serviço do AKS é gratuito e você só paga pelo tempo de atividade do nó de trabalho.
Usar o AKS traz diversos benefícios:
- Desenvolvimento mais rápido de aplicações: o AKS cuida das correções, atualização automática, monitoramento, dimensionamento e autocorreção. Isso libera as equipes de desenvolvimento das tarefas operacionais e permite que se concentrem em criar serviços.
- Utilização dinâmica de recursos: como um serviço totalmente gerenciado, o AKS permite a você implementar e executar serviços em containers utilizando uma infraestrutura elástica que escala com a demanda, sem a necessidade de gerenciar nenhum componente do Kubernetes diretamente.
- Segurança e conformidade: o AKS está em conformidade com várias normas, incluindo PCI-DSS e SOC.
O que é o Kubernetes?
Kubernetes é um sistema de orquestração de código aberto que facilita a implementação e dimensionamento de workloads em container. Apesar de sua popularidade e ampla utilização, implementar manualmente e manter um cluster do Kubernetes ainda não é uma tarefa fácil. O Azure Kubernetes Service (AKS) da Microsoft ajuda os engenheiros a gerenciar clusters do Kubernetes. Com o AKS, as tarefas operacionais de gerenciamento de ambientes do Kubernetes ficam mais fáceis.
Os containers são uma maneira excelente de empacotar e executar aplicações, mas executá-los em produção apresenta vários desafios, incluindo:
- Tratamento de failover
- Dimensionamento horizontal
- Descoberta de serviço
- Implementação de diferentes padrões de implantação
- Segurança para containers
Saiba mais
Leia nossa postagem sobre segurança para containers para saber mais sobre a importância e as práticas recomendadas para garantir que todos os containers fiquem protegidos.
Capacidades do Kubernetes
Algumas das principais capacidades do Kubernetes:
Descoberta de serviço
Os workloads hospedados no Kubernetes podem ser descobertos e expostos automaticamente por meio de DNS ou endereços IP, facilitando que outros workloads encontrem esses serviços e iniciem uma comunicação.
Balanceamento de carga
Com workloads abstraídos como serviços, o Kubernetes pode oferecer capacidades de balanceamento de carga básicas entre várias réplicas do mesmo workload.
Orquestração de armazenamento
O Kubernetes facilita a montagem de um sistema de armazenamento e a disponibilização dele para seu container para dados persistentes. O Kubernetes pode se integrar a um armazenamento local do nó e a volumes remotos hospedados na nuvem.
Implementação de workload
Os workloads hospedados no Kubernetes são descritos de forma declarativa e o mecanismo do Kubernetes lida com a implementação real, garantindo que todas as dependências necessárias estejam presentes. Ao utilizar conceitos como implementações, os workloads podem ser facilmente declarados, incluindo suas estratégias de distribuição e reversão.
Bin packing
O Kubernetes permite especificar o número de recursos (solicitações e limites) que cada réplica de workload pode usar. Isso possibilita um melhor uso dos recursos de computação, evitando o desperdício de recursos e protegendo contra o consumo de recursos de outros workloads.
Autocorreção
Usando investigações de atividade, preparação e inicialização, o Kubernetes garante que os serviços estejam íntegros e sejam capazes de receber tráfego, reiniciando-os quando necessário.
Gerenciamento de configurações e segredos
ConfigMaps e segredos facilitam para que workloads obtenham os parâmetros de configuração, detalhes de conexão e credenciais necessários de locais centralizados e seguros. Isso ajuda a reduzir a dependência de configurações ou gerenciadores de segredos de terceiros.
Componentes do Kubernetes
O Kubernetes consiste em vários componentes que são executados entre um painel de controle e nós de trabalho. Os componentes do painel de controle lidam com as funções administrativas de um cluster do Kubernetes. Esses componentes tomam decisões que afetam a operação geral do cluster. Diferentes componentes são responsáveis por gerenciar tarefas distintas.
| Componentes | Descrição |
|---|---|
| kube-apiserver | Todas as comunicações com um cluster do Kubernetes passam pelo kube-apiserver. Esse componente expõe a API do Kubernetes e serve como seu "front-end". Por padrão, o kube-apiserver pode ser dimensionado horizontalmente para lidar com aumento de carga. |
| etcd | O mecanismo do Kubernetes usa etcd, um repositório de chave-valor, para armazenar todas as informações relacionadas ao cluster, como novos recursos, configurações, atualizações e muito mais. |
| kube-scheduler | Este componente é responsável pelo agendamento de novos pods. O kube-scheduler busca pods sem um nó atribuído e decide onde agendá-los. Ele toma decisões de agendamento complexas, considerando fatores como requisitos de hardware ou restrições de afinidade e antiafinidade. |
| kube-controller-manager | O kube-controller-manager executa os processos do controlador. Os clusters do Kubernetes podem ter vários controladores (por exemplo, um controlador de nó ou um controlador de trabalho) e o kube-controller-manager garante que sejam executados corretamente. |
| cloud-controller-manager | O comando cloud-controller-manager executa controladores específicos para diferentes provedores de nuvem. Isso facilita o uso da funcionalidade de um provedor específico (como a criação de volumes de disco), quando necessário. Os componentes do nó são executados em todo nó de trabalho, e cada cluster precisa ter pelo menos um nó de trabalho. Esses componentes executam tarefas como garantir que os pods estejam executando ou comunicando o status do nó ao kube-apiserver. |
| kubelet | kubelet é executado em cada nó de trabalho e confirma se os containers estão em execução e em boas condições. Ele usa especificações de pod para garantir isso. |
| kube-proxy | Este proxy de rede do Kubernetes gerencia regras de rede no nível do nó e contribui para a implementação da abstração de serviço. |
| Runtime de container | Um runtime de container executa containers. Cada nó precisa de um runtime de container, e o Kubernetes oferece suporte a vários, como containerd ou CRI-O. |
Oito capacidades do AKS
Algumas das capacidades do Azure Kubernetes Services (AKS):
1. Integração com Entra ID (Azure ID)
O AKS oferece uma integração fácil com o serviço Entra ID (anteriormente Azure AD). Você pode fornecer aos usuários e grupos existentes do AD acesso ao ambiente do cluster por meio de logon integrado, simplificando o gerenciamento de usuários. Também pode proteger o acesso ao cluster para essas identidades existentes.
2. Registro em log e monitoramento integrados
A execução de workloads envolve o monitoramento de seu desempenho e capacidade para evitar interrupções indesejadas. O Azure Monitor possibilita coletar métricas de containers, nós, clusters e logs de componentes do AKS. O Azure simplifica sua capacidade de armazenar esses dados em um workspace do Log Analytics e o disponibiliza para consumo por meio do Azure Portal, Azure CLI ou Azure API.
3. Dimensionamento de nó de cluster e pod
Os clusters do Kubernetes precisam de ampliação ou redução de acordo com a demanda. Isso envolve o dimensionamento de pods e nós. O dimensionador automático de cluster do AKS pode redimensionar clusters do Kubernetes automaticamente ajustando as contagens de nó para satisfazer o tráfego da aplicação.
4. Nós habilitados para GPU
Os nós habilitados para GPU são ideais para tarefas que demandam muita computação, como processamento gráfico ou machine learning. O AKS simplifica o provisionamento desses tipos de nós e sua vinculação aos clusters do Kubernetes sob demanda.
5. Atualizações de nó do cluster
As versões de API do Kubernetes mudam com frequência, e as empresas que executam grandes frotas de clusters do Kubernetes podem rapidamente perder o controle de quais versões estão executando para diferentes workloads em vários ambientes. O AKS oferece suporte à execução simultânea de várias versões do Kubernetes, dando a você tempo para testar a funcionalidade antes de atualizar. Assim que você optar pela atualização, o AKS cuida da atualização do cluster e da migração de workloads para nós que estão sendo executados na nova versão, minimizando a interrupção.
6. Suporte ao volume de armazenamento
A maioria das aplicações, seja em container ou não, precisa de informações persistentes. Algumas aplicações em container podem precisar de acesso ao mesmo volume de armazenamento depois que seus pods são agendados para um novo nó. O AKS permite que workloads provisionem volumes dinâmicos ou estáticos para dados persistentes.
7. Suporte para imagem Docker e seu próprio registro de container privado
O AKS é está em conformidade com a OCI e oferece suporte ao formato de imagem Docker. O Azure também oferece suporte a registros de imagem privados, oferecendo o Azure Container Registry (ACR), que se integra facilmente ao AKS.
8. Redes virtuais do Azure
O AKS oferece dois modelos de rede: Kubenet e Azure Container Networking Interface (CNI). Você pode definir sua configuração de rede desejada e o AKS cuidará da implementação.
Saiba mais
Leia nossa postagem que compara tecnologias de containers do Kubernetes e do Docker e os benefícios de utilizá-las juntas.
O desafio do Kubernetes autogerenciado
Dada a natureza complexa dos componentes listados acima, executar e gerenciar um cluster do Kubernetes em escala exige esforço e conhecimento. Além dos componentes de infraestrutura subjacentes (como servidores, armazenamento e rede), todos os componentes descritos anteriormente devem estar ativos para o Kubernetes funcionar. Eles também deve estar protegidos, mantidos, dimensionados e atualizados quando necessário.
A execução de seu cluster do Kubernetes personalizado pode demandar uma equipe dedicada de engenheiros para todas as tarefas operacionais. Isso é ideal se seus negócios principais envolvem a criação de ferramentas para o ecossistema do Kubernetes ou se têm algum requisito que force você a executar seus próprios clusters. No entanto, na maioria dos casos, é melhor transferir essas tarefas de gerenciamento de cluster para um serviço dedicado. É aqui que entra o AKS.
Além de lidar com a maioria dos aspectos operacionais da execução de clusters do Kubernetes, o AKS oferece funcionalidade extra que o torna uma plataforma atrativa para organizações que executam workloads em container.
Como a CrowdStrike pode ajudar com o registro em log do AKS
O Kubernetes facilita a execução de workloads em container. Ele aborda problemas como descoberta de serviço e autocorreção. No entanto, manter um sistema baseado em Kubernetes em escala não é uma tarefa fácil. O Azure Kubernetes Service pode abstrair muitas dessas tarefas operacionais, como gerenciamento de painel de controle e alocação dinâmica de recursos.
Os logs de workloads hospedados no AKS são úteis para depuração da aplicação e podem ser usados para detecção de ameaças. O CrowdStrike Falcon® LogScale é uma plataforma SaaS de registro em log que pode armazenar volumes ilimitados de logs do seu cluster do AKS e outras fontes.
Como a CrowdStrike ajuda com o registro em log do AKS?
Ela permite que a sua organização execute consultas avançadas sobre seus logs, crie painéis e configure alertas.