Com a KubeCon Europe acontecendo esta semana, a Microsoft fez uma enxurrada de anúncios do Azure Kubernetes. Além de uma nova estrutura para executar cargas de trabalho de aprendizado de máquina, novos recursos de agendamento de carga de trabalho, novas proteções de implantação e melhorias de segurança e escalabilidade, a Microsoft colocou forte ênfase na produtividade do desenvolvedor, trabalhando para melhorar a experiência do desenvolvedor e ajudando a reduzir os riscos de erro. .
Antes do evento conversei com Brendan Burns, um dos criadores do Kubernetes, e agora CVP, Azure Open Source e Cloud-Native na Microsoft. Conversamos sobre o que a Microsoft estava anunciando na KubeCon Europe, os objetivos da Microsoft para o Kubernetes e a importância do Kubernetes para a Microsoft como fornecedor e usuário do sistema de gerenciamento de contêineres. Burns também forneceu atualizações sobre o progresso da Microsoft no fornecimento de uma versão de suporte de longo prazo do Kubernetes.
Este é um momento interessante para o Kubernetes, pois ele faz a transição de uma tecnologia de ponta para uma plataforma madura. É uma mudança essencial pela qual toda tecnologia precisa passar, mas é mais difícil para um projeto de código aberto no qual muitos provedores de nuvem diferentes e muitos outros desenvolvedores de aplicativos confiam.
Kaito: Implantando modelos de inferência de IA no Kubernetes
Muito do que a Microsoft está fazendo no momento em torno de seu Azure Kubernetes Service (AKS) e do Azure Container Service (ACS) relacionado, está focado em fornecer aquela proverbial plataforma madura e confiável, com seu próprio plano de suporte de longo prazo que vai além o atual ciclo de vida do Kubernetes. A empresa também está trabalhando em ferramentas que ajudam a suportar as cargas de trabalho que os desenvolvedores criam tanto dentro da Microsoft quanto em seus serviços de nuvem públicos.
Portanto, não foi surpreendente descobrir que a nossa conversa se voltou rapidamente para a IA e as ferramentas necessárias para suportar as cargas de trabalho em grande escala resultantes no AKS.
Uma das novas ferramentas sobre as quais Burns falou foi o Kubernetes AI Toolchain Operator para AKS. Esta é uma ferramenta para executar grandes cargas de trabalho em enormes clusters Kubernetes. Se você estiver monitorando os repositórios GitHub do Azure, reconhecerá isso como o projeto Kaito de código aberto que a Microsoft tem usado para gerenciar projetos e serviços LLM, muitos dos quais estão hospedados em instâncias do Azure Kubernetes. Ele foi projetado para funcionar com grandes modelos de inferência de código aberto.
Você começa definindo um espaço de trabalho que inclui os requisitos de GPU do seu modelo. Kaito então implantará imagens de modelo de seus repositórios em nós de GPU provisionados. À medida que você trabalha com configurações predefinidas, o Kaito implantará imagens de modelo onde elas poderão ser executadas sem ajustes adicionais. Tudo o que você precisa fazer é definir uma configuração inicial de nodepool usando um SKU de host do Azure com uma GPU compatível. Como parte da configuração de nós usando o Kaito, o AKS configura automaticamente os drivers corretos e quaisquer outros pré-requisitos necessários.
Ter Kaito no AKS é um desenvolvimento importante para a implantação de aplicativos baseados em modelos de IA de código aberto pré-treinados. E construir sobre um projeto de código aberto existente hospedado no GitHub permite que a comunidade mais ampla ajude a moldar sua direção futura.
Frota: Gerenciando Kubernetes em grande escala
O gerenciamento de cargas de trabalho é um grande problema para muitas organizações que migraram para arquiteturas de aplicativos nativas em nuvem. À medida que mais aplicações e serviços migram para o Kubernetes, o tamanho e o número de clusters se tornam um problema. Onde os experimentos podem ter envolvido o gerenciamento de um ou dois clusters AKS, agora temos que trabalhar com centenas ou até milhares e gerenciar esses clusters em todo o mundo.
Embora você possa criar suas próprias ferramentas para lidar com esse nível de orquestração, há questões complexas de posicionamento de carga de trabalho que precisam ser consideradas. A AKS tem desenvolvido ferramentas de gestão de frota como um programador de nível superior acima dos serviços básicos do Kubernetes. Isto permite-lhe gerir cargas de trabalho utilizando um conjunto diferente de heurísticas, por exemplo, utilizando métricas como o custo da computação ou a disponibilidade global de recursos numa região de Azure.
O Azure Kubernetes Fleet Manager foi projetado para ajudar você a aproveitar ao máximo seus recursos do Kubernetes, permitindo que clusters ingressem e saiam de uma frota conforme necessário, com um plano de controle central para dar suporte à orquestração de carga de trabalho. Você pode pensar no Fleet como uma forma de agendar e orquestrar grupos de aplicativos, com o Kubernetes cuidando dos aplicativos que compõem uma carga de trabalho. A Microsoft precisa de uma ferramenta como essa tanto quanto qualquer empresa, pois executa muitos de seus próprios aplicativos e serviços no Kubernetes.
Com o Microsoft 365 a funcionar em contentores alojados no AKS, a Microsoft tem um forte incentivo económico para obter o máximo valor dos seus recursos, para maximizar o lucro, garantindo a utilização ideal dos seus recursos. Assim como o Kaito, o Fleet é construído em um projeto de código aberto, hospedado em um dos repositórios GitHub do Azure. Esta abordagem também permite à Microsoft aumentar os tamanhos disponíveis para clusters AKS, agora até 5.000 nós e 100.000 pods.
Burns me disse que esta é a filosofia por trás de muito do que a Microsoft está fazendo com o Kubernetes no Azure: “Começar com um projeto de código aberto, mas depois trazê-lo como uma parte suportada do serviço Azure Kubernetes. E então, obviamente, também comprometido em pegar essa tecnologia e torná-la fácil e disponível para todos.”
Esse ponto sobre “tornar as coisas mais fáceis” está no cerne de muito do que a Microsoft anunciou na KubeCon Europe, com base nos serviços e recursos existentes. Como exemplo, Burns apontou o suporte para AKS no Azure Copilot, onde em vez de usar ferramentas complexas, você pode simplesmente fazer perguntas.
“Usando um modelo de linguagem natural, você também pode descobrir o que está acontecendo em seu cluster – você não precisa vasculhar várias telas e arquivos YAML diferentes para descobrir onde está o problema”, disse Burns. . “O modelo informará e identificará os problemas que você possui no cluster.”
Reduzindo o risco de implantação com políticas
Outra nova ferramenta AKS visa reduzir os riscos associados às implantações do Kubernetes. As salvaguardas de implantação do AKS baseiam-se na experiência da Microsoft na execução de seus próprios aplicativos Kubernetes e dos de seus clientes. Essas lições são resumidas em um conjunto de práticas recomendadas usadas para ajudá-lo a evitar erros comuns de configuração.
A implantação do AKS protege os arquivos de configuração de varredura antes que os aplicativos sejam implantados, oferecendo opções de “aviso” ou “aplicação”. Os avisos fornecem informações sobre problemas, mas não interrompem a implantação, enquanto a aplicação bloqueia a implantação de erros, reduzindo os riscos de códigos fora de controle gerarem contas significativas.
“O serviço Kubernetes já existe no Azure há sete anos”, observou Burns. “E, você sabe, vimos muitos erros – erros que você pode cometer que tornam seu aplicativo menos confiável, mas também erros que você pode cometer que tornam seu aplicativo inseguro.” O conhecimento coletivo resultante das equipes de engenharia do Azure, incluindo engenheiros de campo que trabalham com clientes e engenheiros do grupo de produtos Azure Kubernetes, foi usado para construir esses guarda-corpos. Outras contribuições vieram da equipe de segurança do Azure.
No centro das salvaguardas de implantação está um mecanismo de política instalado em clusters gerenciados. Isto é usado para confirmar configurações, rejeitando ativamente aquelas que não seguem as melhores práticas. Atualmente as políticas são genéricas, mas desenvolvimentos futuros podem permitir que você direcione políticas para tipos de aplicativos específicos, com base na descrição do código feita pelo usuário.
Burns está definitivamente otimista sobre o futuro do Kubernetes no Azure e seu papel no suporte à geração atual e futura de aplicativos de IA. “Continuamos vendo como podemos ajudar a levar a comunidade Kubernetes adiante na forma como eles pensam sobre IA. E eu acho que esse tipo de projeto é o começo disso. Mas há muitos detalhes sobre como você faz IA muito bem no Kubernetes. E acho que estamos em uma posição única como fornecedor de Kubernetes, mas também como usuário frequente de Kubernetes para IA, para contribuir para essa discussão.”