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.
Por essa aula é só, nos vemos na próxima, valeu \o/.
Meu github:
Novamente deixo meus link de afiliados:
Obrigado, até a próxima e bons estudos. ;)