Publicado: May 7, 2021
Hoje, estamos lançando o suporte do Amazon EMR no Amazon EKS a modelos de pod para simplificar a execução de trabalhos Spark em clusters EKS compartilhados. Um pod é um grupo de um ou mais contêineres, com armazenamento e recursos de rede compartilhados, além de uma especificação de como executar esses contêineres. Modelos de pod são especificações que determinam como cada pod é executado. Os clientes geralmente consolidam várias aplicações em um cluster EKS compartilhado para melhorar a utilização e economizar os custos. No entanto, cada aplicação pode ter requisitos diferentes. Por exemplo, você pode querer executar workloads que exigem muita performance, como trabalhos de treinamento de modelos de ML em instâncias com SSD para melhor performance ou workloads ad-hoc em instâncias Spot por um menor custo. Você também pode agendar um contêiner de registro em log separado para encaminhar logs à aplicação de monitoramento existente. Com esta versão, você pode usar modelos de pod com o EMR on EKS para configurar como executar trabalhos Spark em clusters EKS compartilhados.
Para reduzir os custos, os clientes podem programar pods de driver Spark para serem executados em instâncias sob demanda do EC2, ao mesmo tempo em que programa pods executores Spark para execução em instâncias Spot do EC2. Os clientes do Kubernetes costumam usar taints, tolerâncias e rótulos para garantir que os pods sejam programados nos nós operadores certos. Um taint é uma propriedade de um nó operador que permite restringir quais pods podem ser executados nele. Por outro lado, uma tolerância permite que um pod seja programado sobre um taint correspondente. O rótulo é usado com nodeSelectors para direcionar o pod ao operador. Agora, modelos de pod podem ser usados para aplicar tolerâncias ao pod de driver Spark, para que ele seja executado em uma instância Sob demanda do EC2, e uma tolerância separada para o pod executor Spark, para que ele apenas seja executado em instâncias Spot do EC2.
Para encaminhar logs à aplicação de registro em log centralizado, os clientes podem implantar um contêiner lateral com seus trabalhos Spark. Um contêiner sidecar é implantado no mesmo pod que o contêiner da aplicação, mas fornece funcionalidade adicional. Nesse caso, ele encaminha logs de trabalho. O EMR on EKS fornece encaminhamento de log integrado ao Amazon CloudWatch e ao Amazon S3. No entanto, se um cliente quiser encaminhar logs para sua própria aplicação de registro em log, ele deverá implantar um encaminhador de log como um daemonset. Daemonsets são executados diretamente nos nós operadores Kubernetes. Agora, modelos de pod podem ser usados para implantar o encaminhamento de log como um contêiner sidecar por tarefa ou por pod.
Para aumentar a utilização de recursos, os clientes podem oferecer suporte a várias equipes que executam suas workloads no mesmo cluster EKS. Frequentemente, cada equipe receberá um grupo de nós designado do EC2 para executar suas workloads. Antes, as workloads só podiam ser direcionadas ao grupo de nós correto usando rótulos e afinidade. Os clientes podem aplicar taints ao grupo de nós de uma equipe e agora usar modelos de pod para aplicar uma tolerância correspondente à workload. Isso garante que somente a equipe designada possa agendar trabalhos para seus grupos de nós.
Para implementar o grupo de nós baseado em equipe, comece com a criação de um grupo de nós que inclua um rótulo e um taint representando a equipe. Um taint é uma propriedade de um nó operador que permite restringir quais pods podem ser executados nele. Por outro lado, uma tolerância permite que um pod seja programado sobre um taint correspondente. O rótulo, usando afinidade, direciona a aplicação ao grupo de nós designado pela equipe, e uma tolerância permite que ele faça programações sobre o taint. Crie um modelo de pod que inclua a tolerância e a afinidade correspondentes e armazene-o em um bucket do S3 que o seu trabalho possa acessar. Modelos de pod podem ser criados para os pods de driver e executor Spark para fornecer diferentes opções de implantação, e você especifica o local dos modelos durante o envio da tarefa.
Para obter mais informações sobre a funcionalidade e casos de uso de modelos de pod, acesse nossa documentação. Para obter mais informações sobre o Amazon EMR on EKS, acesse a documentação do Amazon EMR on EKS ou assista à nossa deep-dive tech talk sobre o Amazon EMR on EKS.