Aula 01 – Kubernates – Introdução ao Kubernetes
Aula 01 – Kubernates – Introdução ao Kubernetes
Voltar para página principal do blog
Todas as aulas desse curso
Aula 02
Redes Sociais:
Site das bibliotecas
Tensorflow
Keras
Cursos Gratuitos
Digital Innovation
Quer aprender python3 de graça e com certificado? Acesse então:
workover
Empresas de Cloud:
Hostinger
Digital Ocean
One.com
Canais do Youtube
Toti
Lofi Music Zone Beats
Backing Track / Play-Along
Código Fluente
Putz!
Vocal Techniques and Exercises
Fiquem a vontade para me adicionar ao linkedin.
PIX para doações
Aula 01 – Kubernates – Introdução ao Kubernetes
O Kubernetes, também conhecido como K8s, é uma plataforma de orquestração de contêineres de código aberto, desenvolvida pelo Google, que facilita a implantação, o dimensionamento e a gestão de aplicativos em contêineres.
A história do Kubernetes remonta à experiência do Google em execução de aplicativos em escala global.
Antes do Kubernetes, o Google utilizava uma solução interna chamada Borg para orquestrar seus contêineres.
Ele foi criado com base em lições aprendidas com o Borg, mas projetado para ser acessível e utilizável pela comunidade de desenvolvedores em geral.
Ou seja, foi projetado para lidar com a complexidade de executar e gerenciar aplicativos distribuídos em larga escala.
O Google decidiu tornar o Kubernetes um projeto de código aberto por vários motivos estratégicos e práticos:
Colaboração e comunidade: Ao disponibilizar o Kubernetes como um projeto de código aberto, o Google abriu caminho para a colaboração com a comunidade de desenvolvedores em todo o mundo. Isso permitiu que especialistas e entusiastas contribuíssem com melhorias, correções de bugs e recursos adicionais, enriquecendo o ecossistema do Kubernetes.
Padronização da indústria: Ao fornecer uma solução de orquestração de contêineres de código aberto, o Google ajudou a estabelecer um padrão comum para a indústria de tecnologia. Isso permitiu que outras empresas e organizações adotassem e construíssem em cima do Kubernetes, evitando fragmentação e promovendo a interoperabilidade entre diferentes soluções de contêiner.
Ampliar a adoção de contêineres: O Google reconheceu o valor dos contêineres como uma forma eficiente e portátil de empacotar e distribuir aplicativos. Ao tornar o Kubernetes acessível e confiável, eles incentivaram a adoção generalizada de contêineres na indústria, impulsionando a inovação e a transformação digital.
Contribuição para a comunidade: Como uma empresa de tecnologia líder, o Google demonstrou seu compromisso em compartilhar seu conhecimento e tecnologia com a comunidade de desenvolvedores. O lançamento do Kubernetes como um projeto de código aberto reflete a cultura de colaboração e o apoio ao desenvolvimento comunitário.
Linguagem que foi desenvolvido
O Kubernetes foi primariamente implementado usando a linguagem Go, também conhecida como Golang, que é uma linguagem de programação de código aberto desenvolvida pelo Google.
A escolha do Go se deu por sua combinação de desempenho, eficiência e facilidade de uso, tornando-a adequada para construir uma plataforma robusta e escalável como o Kubernetes.
Além do Go, o Kubernetes também usa outras linguagens, como YAML e Shell Scripting.
O YAML é uma linguagem de marcação de dados amplamente utilizada no contexto do Kubernetes.
Ela é usada para definir arquivos de manifesto, que descrevem a configuração dos recursos e componentes do Kubernetes, como implantações, serviços e volumes.
Os arquivos YAML fornecem uma sintaxe legível por humanos para expressar as configurações e as relações entre os diferentes elementos no ecossistema do Kubernetes.
Já o Shell Scripting é utilizado para escrever scripts e automações relacionadas ao gerenciamento do Kubernetes.
Com scripts de shell, é possível executar operações e comandos que facilitam a administração do Kubernetes.
Esses scripts são úteis para a implantação de recursos, execução de tarefas em contêineres e outras automações necessárias no gerenciamento do Kubernetes.
Portanto, além da linguagem de programação Go, o Kubernetes se baseia no uso de YAML para a definição de manifestos e no Shell Scripting para a criação de scripts e automações relacionadas ao gerenciamento eficiente da plataforma.
Contêineres
Os contêineres são unidades de empacotamento leves e isoladas que contêm todas as dependências necessárias para executar um aplicativo, incluindo o código, as bibliotecas e as configurações.
Eles oferecem portabilidade, consistência e eficiência, permitindo que os aplicativos sejam executados em qualquer ambiente, desde desenvolvimento local até produção em larga escala.
No entanto, à medida que o número de contêineres aumenta e a complexidade dos aplicativos distribuídos aumenta, surge a necessidade de uma plataforma que facilite a gestão desses contêineres em um ambiente distribuído.
É aí que o Kubernetes entra em cena.
O Kubernetes fornece uma série de recursos e abstrações para facilitar a implantação, o escalonamento e o gerenciamento de aplicativos em contêineres.
Ele permite que você defina como seu aplicativo deve ser implantado, quais recursos ele deve usar e como os contêineres devem ser escalonados para atender à demanda.
Diferença entre o Kubernetes e o Docker
Agora vamos entender a diferença entre o Kubernetes e o Docker, pois eles são frequentemente mencionados juntos, mas desempenham papéis diferentes.
Docker
O Docker é uma plataforma que permite criar, empacotar e distribuir contêineres.
Ele fornece uma maneira consistente e portátil de encapsular aplicativos e suas dependências em contêineres isolados.
Com o Docker, você pode construir imagens de contêiner que contêm tudo o que seu aplicativo precisa para ser executado, incluindo bibliotecas, código e configurações.
O Docker é amplamente utilizado como uma ferramenta de desenvolvimento, permitindo que os desenvolvedores criem ambientes de desenvolvimento consistentes em diferentes sistemas operacionais.
Kubernetes
O Kubernetes, por sua vez, é uma plataforma para orquestração desses contêineres.
Ele é responsável por lidar com a implantação, o escalonamento, a gestão e a coordenação de vários contêineres em um cluster de máquinas.
Ele permite que você dimensione seus aplicativos com facilidade, gerencie o tráfego de rede entre os contêineres e garanta que os aplicativos estejam sempre em execução, mesmo que ocorram falhas em alguns nós do cluster.
Resumindo
O Docker é uma ferramenta para criar e distribuir contêineres, enquanto o Kubernetes é uma plataforma de orquestração de contêineres que gerencia e coordena a execução desses contêineres em um ambiente distribuído.
Razões pelas quais o Kubernetes é amplamente usado para orquestração de contêineres
Escalabilidade
Com base nas configurações definidas, ele pode escalar automaticamente o número de réplicas de um aplicativo em resposta à demanda, garantindo que o aplicativo esteja sempre disponível, mesmo em períodos de tráfego intenso.
Gestão de Recursos
O Kubernetes permite que você especifique os recursos necessários para cada contêiner, como CPU, memória e armazenamento.
Ele garante que os recursos sejam alocados de forma eficiente e justa entre os contêineres em execução, evitando que um contêiner consuma todos os recursos disponíveis.
Autorecuperação
O Kubernetes monitora continuamente os contêineres e os nós em que estão sendo executados. Se um contêiner ou um nó falhar, o Kubernetes automaticamente reinicia o contêiner em outro nó saudável, garantindo a alta disponibilidade dos aplicativos.
Gerenciamento de Rede
O Kubernetes fornece recursos para o gerenciamento de rede, permitindo que os contêineres se comuniquem entre si, mesmo que estejam em diferentes nós do cluster. Ele também oferece suporte a serviços internos e externos para expor os aplicativos de forma controlada.
Implantação Declarativa
O Kubernetes permite que você defina a configuração desejada para seus aplicativos por meio de arquivos de manifesto YAML. Isso possibilita a implantação consistente e repetível dos aplicativos, além de facilitar a gestão das configurações em diferentes ambientes.
Em resumo, o Kubernetes é usado para orquestrar contêineres, fornecendo uma plataforma poderosa para implantar, escalar e gerenciar aplicativos distribuídos em contêineres.
Ele ajuda a simplificar a complexidade da infraestrutura e oferece recursos avançados para garantir a disponibilidade, escalabilidade e resiliência dos aplicativos em um ambiente distribuído.