Criar e gerenciar Clusters dá mais trabalho do que você imagina! | AdviseU IT
Criar e gerenciar Clusters dá mais trabalho do que você imagina!
Quando falamos em utilizar tecnologias OpenSource de forma consistente, geralmente as coisas podem parecer mais simples do que realmente são. Vamos tomar como exemplo a implementação e hospedagem de um Kubernetes em cluster.
A configuração de um cluster Kubernetes em funcionamento é bastante simples, mas isso está muito distante de um que esteja pronto para produção.
A opção de auto-hospedar um cluster desse tipo exige o máximo de recursos, em termos de pessoas, habilidades, tempo de engenharia, manutenção e solução de problemas. Por isso, se estiver pensando nisso, precisa considerar pelo menos as seguintes perguntas:
Seu plano de controle está em alta disponibilidade? Ou seja, se um nó principal ficar inativo ou não responder, seu cluster ainda funcionará? Você ainda pode implantar ou atualizar aplicativos? Seus aplicativos em execução ainda serão tolerantes a falhas sem o plano de controle?
Seu pool de nós de trabalho tem alta disponibilidade? Ou seja, se uma interrupção interromper vários nós de trabalho, ou mesmo uma zona inteira de disponibilidade da nuvem, suas cargas de trabalho deixarão de ser executadas? Seu cluster continuará funcionando? Será capaz de provisionar automaticamente novos nós para se restaurar ou exigirá intervenção manual?
Seu cluster está configurado com segurança? Seus componentes internos se comunicam usando criptografia TLS e certificados confiáveis? Usuários e aplicativos têm direitos e permissões mínimos para operações de cluster? Os padrões de segurança do contêiner estão definidos corretamente? Os nós têm acesso desnecessário para controlar os componentes do plano? O acesso ao banco de dados subjacente é adequadamente controlado e autenticado?
Todos os serviços do seu cluster são seguros? Se são acessíveis pela Internet, estão devidamente autenticados e autorizados? O acesso à API do cluster é estritamente limitado?
Seu cluster é compatível? Ele atende aos padrões para clusters Kubernetes definidos pela Cloud Native Computing Foundation?
Seus nós do cluster são totalmente gerenciados por configuração, em vez de serem configurados por scripts shell imperativos e depois deixados pra trás? O sistema operacional e o kernel em cada nó precisam ser atualizados, aplicar patches de segurança e assim por diante?
Os dados do seu cluster foram submetidos a backup corretamente, incluindo algum armazenamento persistente? Qual é o seu processo de restauração? Com que frequência você testa restaurações?
Depois de ter um cluster em funcionamento, como você o mantém ao longo do tempo? Como você provisiona novos nós? Como implementa alterações de configuração nos nós existentes? Como distribui as atualizações do Kubernetes? Como escala em resposta à demanda? Como aplica políticas?
A engenheira e escritora de sistemas distribuídos, Cindy Sridharan, estimou que são necessários cerca de um milhão de dólares em salário de engenheiro para colocar um cluster de Kubernetes em funcionamento em uma configuração de produção a partir do zero ("E você ainda pode não chegar lá"). Esse número deve ser levado em consideração por qualquer líder técnico quando tiver que considerar um cluster Kubernetes auto criado e gerenciado em casa.
Não se trata apenas da configuração inicial
Agora, lembre-se de que você deve prestar atenção a esses fatores, não apenas ao configurar o primeiro cluster pela primeira vez, mas para todas as vezes que o fizer. Ao fazer alterações ou atualizações na infraestrutura do Kubernetes, é necessário considerar o impacto na alta disponibilidade, segurança e assim por diante. Você precisará ter um monitoramento para garantir que os nós do cluster e todos os componentes do Kubernetes estejam funcionando corretamente, e um sistema de alertas para que a equipe possa ser chamada por paginação para lidar com qualquer problema, dia ou noite.
O Kubernetes ainda está em rápido desenvolvimento, e novos recursos e atualizações são lançados o tempo todo. Você precisará manter seu cluster atualizado e entender como as alterações afetam sua configuração existente. Pode ser necessário reprovisionar seu cluster para obter todos os benefícios da funcionalidade mais recente do Kubernetes.
Da mesma forma, não é suficiente ler alguns livros ou artigos, configurar o cluster da maneira certa e deixá-lo assim. Você precisa testar e verificar a configuração regularmente − matando um nó mestre e certificando-se de que tudo ainda funciona, por exemplo. Ferramentas automatizadas de teste de resiliência, como o Chaos Monkey da Netflix, podem ajudar com isso, matando aleatoriamente nós, Pods ou conexões de rede de vez em quando.
As ferramentas não fazem todo o trabalho para você
Existem ferramentas − muitas e muitas ferramentas − para ajudar a instalar e configurar os clusters do Kubernetes, e muitos deles se anunciam como mais ou como menos soluções instantâneas de apontar e clicar, sem esforço. O fato triste é que, em nossa opinião, a grande maioria dessas ferramentas resolve apenas os problemas fáceis e ignora os difíceis. Por outro lado, ferramentas comerciais poderosas, flexíveis e de nível corporativo tendem a ser muito caras, ou nem disponíveis ao público, uma vez que há mais dinheiro a ser ganho com a venda de um serviço gerenciado do que com uma ferramenta de gerenciamento de cluster de uso geral .
Apesar da noção generalizada de que é simples de configurar e gerenciar, na verdade o Kubernetes não é fácil. Considerando o que faz, é notavelmente simples e bem projetado, mas precisa lidar com situações muito complexas, o que leva a um software complexo. Não se engane, há um investimento significativo de tempo e energia envolvidos em aprender a gerenciar adequadamente seus próprios clusters e a fazê-lo no dia-a-dia. Não queremos desencorajá-lo a usar o Kubernetes, mas queremos que você tenha um entendimento claro do que está envolvido na sua execução. Isso o ajudará a tomar uma decisão informada sobre os custos e benefícios de manter isso você mesmo ou utilizando serviços gerenciados.
Sobrecarga de administração
Se sua organização for grande, com recursos de sobra para uma equipe de operações de cluster Kubernetes dedicada, isso pode não ser um problema tão grande. Mas, para pequenas e médias empresas, ou até mesmo startups com um punhado de engenheiros, a sobrecarga administrativa de executar seus próprios clusters Kubernetes pode ser proibitiva.
Dado um orçamento limitado e o número de funcionários disponíveis para operações de TI, que proporção de seus recursos você deseja gastar na administração do Kubernetes? Esses recursos seriam melhor utilizados para suportar as cargas de trabalho da sua empresa? Você pode operar o Kubernetes de maneira mais econômica com sua própria equipe ou usando um serviço gerenciado?
Comprar ou construir: nossas recomendações
Podemos fazer algumas recomendações baseadas em alguns princípios de senso comum. Uma delas é a filosofia de "Executar Menos Software".
Existem três pilares da filosofia "Executar Menos Software", que ajudarão você a manipular o tempo e a derrotar seus inimigos:
1. Escolha a tecnologia padrão.
2. Terceirize o trabalho pesado.
3. Crie uma vantagem competitiva duradoura.
(Rich Archbold)
Embora o uso de novas tecnologias inovadoras seja divertido e empolgante, nem sempre faz sentido do ponto de vista de negócios.
Usar um software chato que todo mundo está usando geralmente é uma boa aposta. Provavelmente funciona, provavelmente é bem suportado e você não será o único a assumir riscos e a lidar com os erros inevitáveis.
Se você estiver executando cargas de trabalho em contêiner e aplicativos nativos da nuvem, o Kubernetes é a opção mais chata, da melhor maneira possível. Dado isso, você deve optar pelas ferramentas e serviços Kubernetes mais maduros, estáveis ​​e amplamente usados.
O trabalho pesado indiferenciado é um termo cunhado na Amazon para denotar todo trabalho e esforço necessários para instalar e gerenciar software, manter a infraestrutura e assim por diante. Não há nada de especial neste trabalho; é o mesmo para você e para todas as outras empresas por aí. Custa-lhe dinheiro, em vez de ganhar dinheiro.
A filosofia de executar menos software diz que você deve terceirizar o trabalho pesado indiferenciado, porque será mais barato a longo prazo e libera recursos que você pode usar para trabalhar em seus negócios principais.
Com os princípios de "Executar Menos Software" em mente, recomendamos que você terceirize as operações de cluster do Kubernetes para um serviço gerenciado. Instalar, configurar, manter, proteger, atualizar e tornar seu cluster Kubernetes confiável é um trabalho pesado indiferenciado; portanto, faz sentido para quase todas as empresas não fazerem isso sozinhas.