Editar

Partilhar via


Gestão de custos para Kubernetes

Azure Cost Management
Azure Kubernetes Service (AKS)
Azure Managed Disks
Azure Storage
Azure Virtual Machines

Este guia explica como o gerenciamento de preços e custos funcionam no Serviço Kubernetes do Azure (AKS) em comparação com o Amazon Elastic Kubernetes Service (Amazon EKS). O artigo descreve como otimizar custos e implementar soluções de governança de custos para seu cluster AKS.

Nota

Este artigo faz parte de uma série de artigos que ajudam os profissionais familiarizados com o Amazon EKS a entender o AKS.

Noções básicas de custo do Amazon EKS

No Amazon EKS, você paga um preço fixo por hora para cada cluster do Amazon EKS. Você também paga pela rede, pelas ferramentas de operações e pelo armazenamento que o cluster usa.

Os nós de trabalho do Amazon EKS são instâncias padrão do Amazon EC2, portanto, incorrem em preços regulares do Amazon EC2. Você também paga por outros recursos da Amazon Web Services (AWS) provisionados para executar os nós de trabalho do Kubernetes.

Não há custos extras para usar grupos de nós gerenciados pelo Amazon EKS. Você paga apenas pelos recursos da AWS provisionados, incluindo instâncias do Amazon EC2, volumes do Amazon EBS, horas de cluster do Amazon EKS e qualquer outra infraestrutura da AWS.

Ao criar um grupo de nós gerenciados, você pode optar por usar o tipo de capacidade Instâncias sob demanda ou spot para gerenciar o custo dos nós do agente. O Amazon EKS implanta um grupo de nós gerenciados com um grupo do Amazon EC2 Auto Scaling que contém todas as instâncias On-Demand ou Spot.

Com as instâncias sob demanda, você paga pela capacidade de computação por segundo, sem compromissos de longo prazo. As instâncias spot do Amazon EC2 são capacidade sobressalente do Amazon EC2 que oferece descontos em comparação com os preços sob demanda.

  • As instâncias spot do Amazon EC2 podem ser interrompidas com um aviso de interrupção de dois minutos quando o EC2 precisar da capacidade de volta.

  • A Amazon fornece o Spot Fleet, um método para automatizar grupos de instâncias On-Demand e Spot, e o Spot Instance Advisor para ajudar a prever qual região ou zona de disponibilidade pode fornecer interrupções mínimas.

  • Os preços das instâncias spot da AWS variam. A AWS define o preço dependendo das tendências de oferta e demanda de longo prazo para a capacidade da instância spot e você paga o preço em vigor pelo período em que a instância estiver ativa.

Noções básicas de custo do AKS

A arquitetura do Kubernetes é baseada em duas camadas, o plano de controle e um ou mais nós ou pools de nós. O modelo de preços do AKS é baseado nas duas camadas de arquitetura do Kubernetes.

  • O plano de controle fornece os principais serviços do Kubernetes, como o servidor de API e etcdo , e orquestração da carga de trabalho do aplicativo. A plataforma Azure gerencia o plano de controle AKS e, para o nível livre do AKS, o plano de controle não tem custo.

  • Os nós, também chamados nós de agente ou nós de trabalho, hospedam cargas de trabalho e aplicativos do Kubernetes. No AKS, os clientes gerenciam e pagam todos os custos pelos nós do agente.

O diagrama a seguir mostra a relação entre o plano de controle e os nós em uma arquitetura Kubernetes AKS.

Diagrama que mostra o plano de controle e os nós na arquitetura AKS.

Plano de controlo

O Azure provisiona e configura automaticamente a camada do plano de controle quando você cria um cluster AKS. Para o nível AKS Free, o plano de controle é gratuito.

Para um contrato de nível de serviço (SLA) de plano de controle mais alto, você pode criar um cluster AKS na camada Standard. O SLA de tempo de atividade é incluído por padrão na camada Standard e é habilitado por cluster. O preço é de US$ 0,10 por cluster por hora. Para obter mais informações, consulte Detalhes de preços do AKS.

Os clusters na camada Standard têm mais recursos do plano de controle, como o número de instâncias do servidor de API, limites de recursos Etcd, escalabilidade de até 5.000 nós e o suporte existente ao SLA de tempo de atividade com suporte financeiro. O AKS usa réplicas de nó principal em domínios de atualização e falha para atender aos requisitos de disponibilidade.

É melhor usar a camada Standard em cargas de trabalho de produção para fornecer maior disponibilidade de componentes do plano de controle. Os clusters de camada livre têm menos réplicas e recursos limitados do plano de controle e não são recomendados para cargas de trabalho de produção.

Nós

No AKS, você cria nós de agente ou de trabalho em um ou mais pools de nós, que podem usar muitos recursos principais do Azure no ambiente do Kubernetes. O AKS cobra apenas pelos nós conectados ao cluster AKS.

Os nós AKS usam vários recursos de infraestrutura do Azure, incluindo conjuntos de escala de máquina virtual, redes virtuais e discos gerenciados. Por exemplo, você pode usar a maioria dos tipos de máquina virtual (VM) do Azure diretamente no AKS. Você pode usar as Reservas do Azure e o plano de economia do Azure para computação para obter descontos significativos nesses recursos.

O preço do cluster AKS é baseado na classe, no número e no tamanho das VMs nos pools de nós. O custo da VM depende do tamanho, do tipo de CPU, do número de vCPUs, da memória, da família e do tipo de armazenamento disponível, como unidade de estado sólido (SSD) de alto desempenho ou HDD padrão. Para obter mais informações, consulte Série de máquinas virtuais. Planeje o tamanho do nó de acordo com os requisitos do aplicativo, o número de nós e as necessidades de escalabilidade do cluster.

Para obter mais informações sobre nós de agente e pools de nós, consulte o artigo Pools de nós desta série e Criar e gerenciar vários pools de nós para um cluster no Serviço Kubernetes do Azure (AKS).

Implantação de cluster AKS

Cada implantação do AKS abrange dois grupos de recursos do Azure.

  • Você cria o primeiro grupo de recursos, que contém apenas o recurso de serviço do Kubernetes e não tem custos associados a ele.

  • O provedor de recursos AKS cria automaticamente o segundo grupo de recursos ou o grupo de recursos do nó durante a implantação. O nome padrão para esse grupo de recursos é MC_<resourcegroupname>_<clustername>_<location>, mas você pode especificar outro nome. Para obter mais informações, consulte Fornecer meu próprio nome para o grupo de recursos do nó AKS.

    O grupo de recursos de nó contém todos os recursos de infraestrutura de cluster e é aquele que mostra as cobranças da sua assinatura. Os recursos incluem as VMs do nó Kubernetes, rede virtual, armazenamento e outros serviços. O AKS exclui automaticamente o grupo de recursos do nó quando o cluster é excluído, portanto, você deve usá-lo apenas para recursos que compartilham o ciclo de vida do cluster.

Custos de cálculo

Você paga por VMs do Azure de acordo com seu tamanho e uso. Para obter informações sobre como a computação do Azure se compara à AWS, consulte Serviços de computação no Azure e na AWS.

Geralmente, quanto maior o tamanho da VM selecionada para um pool de nós, maior o custo por hora para os nós do agente. Quanto mais especializada for a série de VMs usada para o pool de nós, por exemplo, habilitada para unidade de processamento gráfico (GPU) ou otimizada para memória, mais caro será o pool.

Ao investigar os preços da VM do Azure, esteja ciente dos seguintes pontos:

  • O preço difere de região para região e nem todos os serviços e tamanhos de VM estão disponíveis em todas as regiões.

  • Existem várias famílias de VMs, otimizadas para diferentes tipos de cargas de trabalho.

  • Os discos gerenciados usados como unidades de sistema operacional são cobrados separadamente e você deve adicionar seu custo às suas estimativas. O tamanho do disco gerenciado depende da classe, como HDDs padrão, SSDs padrão, SSDs Premium ou SSDs Ultra. As operações de entrada-saída por segundo (IOPS) e a taxa de transferência em MB/s dependem do tamanho e da classe. Os discos efêmeros do sistema operacional são gratuitos e estão incluídos no preço da VM.

  • Os discos de dados, incluindo aqueles criados com declarações de volume persistentes, são opcionais e são cobrados individualmente com base na sua classe, como HDDs padrão, SSDs padrão, SSDs Premium e SSDs Ultra. Você deve adicionar explicitamente discos de dados às estimativas de custo. O número de discos de dados permitidos, SSDs de armazenamento temporário, IOPS e taxa de transferência em MB/s depende do tamanho e da classe da VM.

  • Quanto mais tempo os nós do agente estiverem ativos e em execução, maior será o custo total do cluster. Os ambientes de desenvolvimento geralmente não precisam ser executados continuamente.

  • As interfaces de rede (NICs) são gratuitas.

Custos de armazenamento

A Container Storage Interface (CSI) é um padrão para expor sistemas de armazenamento de blocos e arquivos a cargas de trabalho em contêineres no Kubernetes. Ao adotar e usar o CSI, o AKS pode escrever, implantar e iterar plug-ins que expõem os sistemas de armazenamento do Kubernetes sem tocar no código principal do Kubernetes ou esperar por seus ciclos de lançamento.

Se você executar cargas de trabalho que usam volumes persistentes CSI em seu cluster AKS, considere o custo associado ao armazenamento que seus aplicativos provisionam e usam. Os drivers de armazenamento CSI no AKS fornecem suporte nativo para as seguintes opções de armazenamento:

  • O Azure Disks cria recursos de disco de dados do Kubernetes. Os discos podem usar o Armazenamento Premium do Azure, apoiado por SSDs de alto desempenho, ou o Armazenamento Padrão do Azure, apoiado por HDDs regulares ou SSDs Padrão. A maioria das cargas de trabalho de produção e desenvolvimento usa o Armazenamento Premium. Os discos do Azure são montados como ReadWriteOnce, o que os torna disponíveis para apenas um nó AKS. Para volumes de armazenamento que vários pods podem acessar simultaneamente, use os Arquivos do Azure. Para obter informações sobre custos, consulte Preços de discos gerenciados.

  • O Azure Files monta compartilhamentos de arquivos SMB (bloco de mensagens do servidor) 3.0/3.1 com suporte de uma conta de Armazenamento do Azure em pods AKS. Você pode compartilhar dados entre vários nós e pods. Os Arquivos do Azure podem usar o armazenamento padrão apoiado por HDDs regulares ou o armazenamento Premium apoiado por SSDs de alto desempenho. Os Arquivos do Azure usam uma conta de Armazenamento do Azure e acumulam encargos com base nos seguintes fatores:

    • Serviço: Blob, Arquivo, Fila, Tabela ou discos não gerenciados
    • Tipo de conta de armazenamento: GPv1, GPv2, Blob ou Blob Premium
    • Resiliência: Armazenamento com redundância local (LRS), armazenamento com redundância de zona (ZRS), armazenamento com redundância geográfica (GRS) ou armazenamento com redundância geográfica de acesso de leitura (RA-GRS)
    • Camada de acesso: quente, legal ou arquivar
    • Operações e transferências de dados
    • Capacidade utilizada em GB
  • Os Arquivos NetApp do Azure estão disponíveis em várias camadas de SKU e exigem uma capacidade mínima provisionada de 4 TiB, com incrementos de 1 TiB. As cobranças dos Arquivos NetApp do Azure são baseadas nos seguintes fatores:

    • SKU
    • Resiliência: LRS, ZRS ou GRS
    • Dimensão ou capacidade provisionada, não capacidade utilizada
    • Operações e transferência de dados
    • Backups e restaurações

Custos de redes

Vários serviços de rede do Azure podem fornecer acesso aos seus aplicativos executados no AKS:

  • Balanceador de Carga do Azure. Por padrão, o Load Balancer usa SKU padrão. As cobranças do balanceador de carga são baseadas em:

    • Regras: o número de regras de balanceamento de carga e de saída configuradas. As regras NAT (conversão de endereços de rede) de entrada não contam no número total de regras.
    • Dados processados: A quantidade de dados processados de entrada e saída, independente de regras. Não há cobrança por hora para o Standard Load Balancer sem regras configuradas.
  • Azure Application Gateway. O AKS geralmente usa o Application Gateway por meio do Application Gateway Ingress Controller, ou frontando um controlador de entrada diferente com o Application Gateway gerenciado manualmente. O Application Gateway suporta roteamento de gateway, terminação TLS (Transport Layer Security) e funcionalidade WAF (Web Application Firewall). As cobranças do Application Gateway são baseadas em:

    • Preço fixo definido por hora ou hora parcial.
    • Preço unitário da capacidade, um custo acrescido baseado no consumo. Cada unidade de capacidade tem no máximo uma unidade de computação, 2.500 conexões persistentes e taxa de transferência de 2,22 Mbps.
  • os endereços IP públicos têm um custo associado que depende:

    • Associação reservada vs. dinâmica.
    • Nível Standard básico vs. seguro e redundante de zona.

Custos de expansão

Há várias opções para dimensionar um cluster AKS para adicionar capacidade extra aos pools de nós:

  • Sob demanda, você pode atualizar manualmente o número de VMs que fazem parte de um pool de nós ou adicionar mais pools de nós.

  • O autoscaler de cluster AKS observa pods que não podem ser agendados em nós devido a restrições de recursos e aumenta automaticamente o número de nós.

  • O AKS dá suporte à execução de contêineres em Instâncias de Contêiner do Azure usando a implementação de kubelet virtual. Um nó virtual AKS provisiona pods de Instâncias de Contêiner que começam em segundos, permitindo que o AKS seja executado com capacidade suficiente para uma carga de trabalho média. Como o cluster AKS fica sem capacidade, você pode expandir mais pods de instâncias de contêiner sem gerenciar servidores adicionais. Você pode combinar essa abordagem com o autoscaler de cluster e o dimensionamento manual.

Se você usar o dimensionamento sob demanda ou o escalonador automático de cluster, contabilize as VMs adicionadas. As cobranças de instâncias de contêiner são baseadas nos seguintes fatores:

  • Faturamento de métricas baseadas no uso por grupo de contêineres
  • Coleção vCPU e memória
  • Uso de contêiner único ou compartilhamento de vários contêineres
  • Uso de contêineres coagendados que compartilham o ciclo de vida da rede e do nó
  • Duração de utilização calculada desde o início ou reinício da receção da imagem até à paragem
  • Cobrança adicional para grupos de contêineres do Windows

Custos de atualização

Parte do ciclo de vida do cluster AKS envolve atualizações periódicas para a versão mais recente do Kubernetes. É importante aplicar as versões de segurança mais recentes e obter as funcionalidades mais recentes. Você pode atualizar clusters AKS e pools de nó único manualmente ou automaticamente. Para obter mais informações, veja Atualizar um cluster do Azure Kubernetes Service (AKS).

Por padrão, o AKS configura as atualizações para aumentar com um nó extra. Um valor padrão de para a configuração minimiza a max-surge interrupção da carga de trabalho criando um nó extra para substituir nós com versões mais antigas antes de 1 cortar ou drenar aplicativos existentes. Você pode personalizar o valor por pool de nós para permitir uma compensação entre a velocidade de atualização e a max-surge interrupção da atualização. Aumentar o max-surge valor conclui o processo de atualização mais rapidamente, mas um grande valor para max-surge pode causar interrupções durante o processo de atualização e incorrer em custos adicionais para VMs extras.

Outros custos

Dependendo do uso e dos requisitos, os clusters AKS podem incorrer nos seguintes custos adicionais:

Otimização de custos

As recomendações a seguir ajudam a otimizar os custos do cluster AKS:

  • Analise a seção Otimização de custos do Azure Well-Architected Framework for AKS.

  • Para soluções multilocatário, o isolamento físico é mais caro e adiciona sobrecarga de gerenciamento. O isolamento lógico requer mais experiência em Kubernetes e aumenta a área de superfície para alterações e ameaças à segurança, mas compartilha os custos.

  • As Reservas do Azure podem ajudá-lo a economizar dinheiro comprometendo-se com planos de um ou três anos para vários produtos, como as VMs em seu cluster AKS. Você obtém descontos reservando a capacidade. Use as Reservas do Azure para Armazenamento e Computação para reduzir o custo dos nós do agente.

    As reservas podem reduzir os custos de recursos em até 72% em relação aos preços pré-pagos e não afetam o estado de tempo de execução dos recursos. Depois de comprar uma reserva, o desconto é aplicado automaticamente aos recursos correspondentes. Você pode comprar reservas no portal do Azure ou usando APIs REST do Azure, PowerShell ou CLI do Azure. Se você usa ferramentas operacionais que dependem de espaços de trabalho do Log Analytics, considere usar Reservas para esse armazenamento também.

  • Adicione um ou mais pools de nós spot ao seu cluster AKS. Um pool de nós spot é um pool de nós apoiado pelos Conjuntos de Escala de Máquina Virtual do Azure Spot. O uso de VMs spot para seus nós de cluster AKS aproveita a capacidade não utilizada do Azure com economias de custos significativas. A quantidade de capacidade disponível não utilizada varia com base em vários fatores, incluindo o tamanho do nó, a região e a hora do dia. O Azure aloca os nós spot se houver capacidade disponível, mas não há SLA para nós spot. Um conjunto de escala spot que apoia o pool de nós spot é implantado em um único domínio de falha e não oferece garantias de alta disponibilidade. Quando o Azure precisa da capacidade de volta, a infraestrutura do Azure remove os nós locais.

    Ao criar um pool de nós spot, você pode definir o preço máximo a pagar por hora e habilitar o autoscaler de cluster, que é recomendado para pools de nós spot. O autoscaler do cluster se expande e dimensiona no número de nós no pool de nós com base nas cargas de trabalho em execução. Para pools de nós spot, o autoscaler do cluster dimensiona o número de nós após uma remoção se os nós ainda forem necessários. Para obter mais informações, consulte Adicionar um pool de nós spot a um cluster do Serviço Kubernetes do Azure (AKS).

  • Escolha o tamanho de VM certo para seus pools de nós de cluster AKS com base nas necessidades de CPU e memória de suas cargas de trabalho. O Azure oferece muitos tipos diferentes de instância de VM que correspondem a uma ampla gama de casos de uso, com diferentes combinações de CPU, memória, armazenamento e capacidade de rede. Cada tipo vem em um ou mais tamanhos, para que você possa facilmente dimensionar seus recursos.

    Agora você pode implantar e gerenciar aplicativos em contêineres com o AKS em execução em processadores baseados em ARM Ampere Altra. Para obter mais informações, consulte Máquinas Virtuais do Azure com processadores baseados em ARM Ampere Altra.

  • Crie vários pools de nós com tamanhos de VM diferentes para fins especiais e cargas de trabalho. Use manchas e tolerâncias do Kubernetes e rótulos de nó para colocar aplicativos que consomem muitos recursos em pools de nós específicos para evitar problemas de vizinhos barulhentos. Mantenha esses recursos de nó disponíveis para cargas de trabalho que os exijam e não agende outras cargas de trabalho nesses nós. O uso de diferentes tamanhos de VM para diferentes pools de nós também pode otimizar custos. Para obter mais informações, consulte Usar vários pools de nós no Serviço Kubernetes do Azure (AKS).

  • Os pools de nós de modo de sistema devem conter pelo menos um nó, enquanto os pools de nós de modo de usuário podem conter zero ou mais nós. Sempre que possível, você pode configurar um pool de nós de modo de usuário para dimensionar automaticamente de 0 nós para N nós. Você pode configurar suas cargas de trabalho para dimensionar e dimensionar usando um autoscaler de pod horizontal. Baseie o dimensionamento automático na CPU e na memória ou use o Kubernetes Event-driven Autoscaling (KEDA) para basear o dimensionamento automático nas métricas de um sistema externo como Apache Kafka, RabbitMQ ou Azure Service Bus.

  • Certifique-se de definir corretamente as solicitações e os limites para seus pods para melhorar a densidade do aplicativo e evitar atribuir muitos recursos de CPU e memória às suas cargas de trabalho. Observe o consumo médio e máximo de CPU e memória usando o Prometheus ou o Container Insights. Configure corretamente limites e cotas para seus pods nos manifestos YAML, gráficos Helm e manifestos Kustomize para suas implantações.

  • Use objetos ResourceQuota para definir cotas para a quantidade total de memória e CPU para todos os pods que estão sendo executados em um determinado namespace. O uso sistemático de cotas de recursos evita problemas de vizinhos barulhentos, melhora a densidade de aplicativos e reduz o número de nós de agente e os custos totais. Use também objetos LimitRange para configurar as solicitações padrão de CPU e memória para pods em um namespace.

  • Use instâncias de contêiner para intermitência.

  • Suas cargas de trabalho do AKS podem não precisar ser executadas continuamente, como cargas de trabalho específicas em pools de nós de cluster de desenvolvimento. Para otimizar custos, você pode desativar completamente um cluster AKS ou parar um ou mais pools de nós em seu cluster AKS. Para obter mais informações, consulte Parar e iniciar um cluster do Serviço Kubernetes do Azure (AKS) e Iniciar e parar um pool de nós no Serviço Kubernetes do Azure (AKS).

  • A Política do Azure integra-se com o AKS através de políticas incorporadas para aplicar imposições e salvaguardas centralizadas, consistentes e em escala. Habilite o complemento Política do Azure em seu cluster e aplique as solicitações e limites de CPU padrão e os limites de recursos de memória, que garantem que os limites de recursos de CPU e memória sejam definidos em contêineres de cluster.

  • Use o Azure Advisor para monitorar e liberar recursos não utilizados.

  • Use os orçamentos e revisões do Microsoft Cost Management para acompanhar os gastos.

Governação dos custos

A nuvem pode melhorar significativamente o desempenho técnico das cargas de trabalho de negócios. As tecnologias de nuvem também podem reduzir o custo e a sobrecarga do gerenciamento de ativos organizacionais. No entanto, essa oportunidade de negócio também cria risco, porque as implantações na nuvem podem aumentar o potencial de desperdício e ineficiência.

A governança de custos é o processo de implementação contínua de políticas ou controles para limitar gastos e custos. As ferramentas nativas do Kubernetes e as ferramentas do Azure oferecem suporte à governança de custos com monitoramento proativo e otimização de custos de infraestrutura subjacentes.

  • O Microsoft Cost Management é um conjunto de ferramentas da Microsoft que o ajuda a analisar, gerir e otimizar os custos da carga de trabalho do Azure. Use o pacote para ajudar a garantir que sua organização esteja aproveitando os benefícios que a nuvem oferece.

  • Analise as práticas recomendadas de governança do Cloud Adoption Framework para a Disciplina de Gerenciamento de Custos para entender melhor como gerenciar e governar os custos da nuvem.

  • Explore ferramentas de código aberto como o KubeCost para monitorar e controlar o custo do cluster AKS. Você pode definir o escopo de alocação de custos para uma implantação, serviço, rótulo, pod e namespace, que fornece flexibilidade para mostrar e cobrar usuários de cluster.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Principais autores:

Outros contribuidores:

Para ver perfis não públicos do LinkedIn, inicie sessão no LinkedIn.

Próximos passos