O desenvolvimento de aplicativos nativo em nuvem está rapidamente se tornando a norma no setor. Com cada vez mais confiança nas tecnologias em nuvem, o desenvolvimento de aplicativos mudou para uma abordagem mais focada na nuvem. A contêinerização está na vanguarda de alimentar esses aplicativos nativos da nuvem e os aplicativos de contêiner despertaram a necessidade de orquestração de contêineres.
Kubernetes nasceu dessa necessidade de orquestração de contêineres como uma solução robusta para o gerenciamento de contêineres.
Tornou-se o padrão de fato para a orquestração de contêineres com seu poderoso conjunto de recursos, natureza robusta e comunidade ativa que melhora continuamente a plataforma. No entanto, esse uso generalizado também fez do Kubernetes uma solução complexa. Essa complexidade resultou em uma curva de aprendizado relativamente mais acentuada para qualquer pessoa que iniciasse em Kubernetes. Portanto, neste artigo, vejamos alguns conceitos e práticas importantes que você deve conhecer como um recém -chegado a Kubernetes.
As vagens não são iguais a recipientes
A primeira coisa que alguém deve saber é a diferença entre uma vagem e um contêiner. As vagens são a menor unidade implantável do K8S. As vagens não são análogas aos contêineres, pois podem consistir em um ou múltiplo ou múltiplos contêineres e serem gerenciados como uma única entidade. Um POD pode ser considerado como um grupo de recipientes bem acoplados que compartilham recursos. Os contêineres com um POD podem ser simplesmente considerados contêineres em execução em um único host lógico.
Ignorando a importância dos rótulos
Os rótulos podem não ser identificadores únicos, mas fornecem um mecanismo para os usuários adicionarem metadados significativos e identificáveis aos objetos Kubernetes. Esses pares de valor-chave podem ser implementados e modificados em qualquer ponto do ciclo de vida de um objeto K8S. Além de fornecer informações identificáveis, os rótulos são cruciais ao selecionar objetos Kubernetes. A API da Kubernetes usa setores de etiquetas para identificar e selecionar os objetos K8S necessários por meio de seletores baseados em igualdade ou com base em conjunto.
Os rótulos são usados em geral para selecionar objetos K8S, independentemente de você criar uma implantação, replicaset, definir um serviço de rede ou simplesmente consultar os pods via Kubectl.
Sempre considere o comportamento de terminação do pod
É essencial considerar o comportamento de rescisão de sua aplicação para reduzir o impacto no usuário final e facilitar a recuperação rápida. O Kubernetes utiliza sinais Linux para sinalizar a terminação. O procedimento comum é enviar um sinal sigterm para os contêineres em uma vagem que os sinaliza para terminar e aguardar o período de carência de terminação especificado (por padrão 30 segundos) para desligar. Finalmente, o Kubernetes envia o sinal Sigkill para remover o pod e limpar qualquer objetivo do Kubernetes.
Assim, os contêineres devem ser programados para receber esses sinais, e os processos adequados de rescisão graciosa devem ser implementados em seu aplicativo. Dependendo dos requisitos, os sinalizadores Prestop Hook ou “TerminEGracePeriod” podem ser usados para alterar facilmente o comportamento de terminação sem modificar o código do aplicativo. Este método é altamente útil ao solucionar erros relacionados à terminação do pod. Além disso, permite que os usuários entendam facilmente os problemas subjacentes, seguindo um guia sobre o Sigkill, que é representado como o sinal 9.
Definindo solicitações ou limites de recursos
Como em qualquer aplicativo, o gerenciamento de recursos deve ser uma parte central de qualquer gerenciamento de cluster do Kubernetes. Não especificando a solicitação e os limites para contêineres ou especificações incorretas podem levar a consequências desastrosas, como a fome de recursos no cluster, aumentos drásticos de custos nos clusters K8S gerenciados devido a contêineres que consomem recursos ilimitados ou problemas fora da memória e estrofiação da CPU.
Portanto, é crucial configurar adequadamente solicitações e limites para os contêineres para ajustar o desempenho e aumentar a eficiência do ambiente K8S. O valor solicitado define o valor do recurso que os contêineres podem solicitar, enquanto o limite especifica o limite máximo de recursos que o contêiner pode consumir. A definição desses limites deve ser feita, dependendo dos requisitos do aplicativo e do caso de uso específico. Além disso, é sempre uma boa ideia ter espaço suficiente para que os contêineres críticos de missão lidem com cargas de trabalho inesperadas.
Utilizando o monitoramento de Kubernetes
O monitoramento é um aspecto importante da manutenção adequada de um aplicativo durante todo o seu ciclo de vida. O Kubernetes Monitoring fornece a espinha dorsal para o gerenciamento proativo de clusters K8S. A Kubernetes utiliza seu servidor métrico para agregar e coletar dados de cada nó do cluster. Algumas métricas importantes disponíveis através do servidor métrico são status do nó, disponibilidade de pod, CPU e utilização de memória, latência de solicitação da API, armazenamento disponível, etc.
Essas métricas são cruciais para determinar o desempenho do cluster geral e a identificação de falhas ou equívocas que podem causar problemas de disponibilidade ou desempenho para objetos e infraestrutura K8S. O servidor de métricas é crucial para fornecer DAnull