Introdução ao Kubernetes: uma introdução para iniciantes

O Kubernetes é o software de código aberto mais popular que automatiza os processos de desenvolvimento de contêineres.

De acordo com o estudo anual da Cloud Native Computing Foundation (CNCF), 96% das organizações estão usando K8s ou considerando usá-los. Se você acompanhar de perto, 5,8 milhões de desenvolvedores em todo o mundo usam o Kubernetes, o que representa 31% dos desenvolvedores de back-end em todo o mundo.

Ele é preferido por sua capacidade de alavancar a tecnologia por meio de escalabilidade aprimorada, disponibilidade e tempo de implantação curto. Enquanto muitos desenvolvedores iniciam sua trajetória de contêineres com o Docker (uma ferramenta abrangente que depende da CLI para interagir com os contêineres, um por vez), o K8s fornece abstrações de alto nível para você definir aplicativos e sua infraestrutura por meio de esquemas que você pode colaborar.

Se você é novo no Kubernetes, este artigo foi especialmente adaptado para ajudá-lo em suas partes introdutórias e compartilhar insights para você começar. Você aprenderá como o K8s pode ajudá-lo como desenvolvedor a turbinar seus produtos digitais.

O que é o Kubernetes e por que você precisa dele?

O Kubernetes é um mecanismo de coordenação (framework) de código aberto usado para automatizar a implantação, dimensionamento e gerenciamento de aplicativos em contêineres; isso inclui lidar com previsibilidade e disponibilidade.

Simplificando, vamos pensar em um aplicativo que você conteinerizou. Para atender os usuários do seu aplicativo, você precisa executar vários contêineres. A preocupação surge quando você precisa gerenciar esses contêineres. Os recipientes podem não estar necessariamente na mesma máquina, tornando-se mais complicado. Então, qual é a solução para este problema?

O Kubernetes vem em seu socorro, fornecendo uma maneira eficiente de lidar com todos esses processos perfeitamente. Embora você possa comparar o K8s a um mecanismo de contêiner como o Docker, é um orquestrador de contêiner. Como desenvolvedor iniciante, você não precisa se preocupar em como o K8s faz a orquestração. Você provavelmente não configurará um cluster K8s para seu aplicativo; mais sobre isso em breve.

No entanto, você interagirá com clusters configurados por sua equipe de infraestrutura. Familiarizar-se com os objetos com os quais você estará interagindo é crucial. Mas antes de fazer isso, você precisará de uma compreensão de alto nível de sua arquitetura para entender o que acontece por baixo dela.

Recursos do Kubernetes

O Kubernetes possui vários recursos com um amplo escopo de recursos para executar contêineres e outras infraestruturas associadas. Aqui está uma lista:

  • Lançamentos, dimensionamento e reversões automatizados – o K8s robotiza a criação do número especificado de réplicas, distribuindo-as pelo hardware apropriado (mais adequado) e reagendando os contêineres se um nó estiver em tempo de inatividade. Você pode dimensionar instantaneamente suas réplicas com base na demanda ou nas necessidades de mudança, como o uso da CPU.
  • Descoberta de serviço, estabilização de carga e entrada na rede – o Kubernetes oferece uma solução de rede exclusiva, incluindo descoberta de serviço interno e exposição de contêineres públicos.
  • Aplicativos com e sem estado – No início, os K8s focavam principalmente em contêineres sem estado. À medida que a tecnologia evolui em muitas frentes, ela agora acomoda objetos integrados que representam aplicativos com estado. Ratificado, qualquer aplicativo pode rodar no Kubernetes.
  • Regulamentação de armazenamento – Esteja você em um sistema de arquivos local, compartilhamento de rede ou na nuvem, o Kubernetes fornece (abstrai) armazenamento persistente para aplicativos executados em contêineres. E a abstração permite que você defina os requisitos de armazenamento independentemente da infraestrutura subjacente. Embora isso esteja além do escopo deste artigo, ele funciona por meio de princípios como volume persistente (PV), solicitação de volume persistente (PVC), classes de armazenamento e plug-ins de volume.
  • Estado declarativo – K8s usa arquivos Yet Ain’t Markup Language (YAML), chamados de manifestos de objeto, para especificar os estados desejados para seu cluster. Os manifestos determinam a aparência do seu cluster, incluindo, entre outros, as instâncias de aplicativos e regras de rede desejadas, entre outras configurações. Quando você aplica manifestos, o K8s lida automaticamente com todas as transições de estado – você não precisa escrever os scripts para fazer isso.
  • Vários ambientes de trabalho – Você não está limitado a usar o Kubernetes na nuvem ou na estação de trabalho do desenvolvedor. Quase todas as distribuições estão disponíveis para corresponder ao seu caso de uso específico. Procure os principais provedores de tecnologia de nuvem, como Amazon Web Services, Google Cloud e Microsoft Azure. Você perceberá que todos eles oferecem serviços Kubernetes gerenciados, enquanto distribuições de nó único, como Minikube e K3s, estão disponíveis para uso local.
  • Super Extensividade – K8s é uma coleção de muitas funcionalidades. Como se isso não bastasse, você pode acelerar seus recursos com extensões. Você pode criar tipos de objetos, operadores e controladores personalizados para simplificar suas cargas de trabalho.
  •   12 Software de geração de documentos para agilizar seus processos

    Arquitetura do Kubernetes

    Em sua essência, a arquitetura do Kubernetes compreende um único nó mestre e dois nós de trabalho. O nó mestre dá as ordens no cluster, enquanto os nós de trabalho (escravos) executam os aplicativos conforme decidido pelo mestre.

    Fonte: kubernetes.io

    Aqui está mais um detalhamento.

    O(s) nó(s) mestre(s)

    O nó mestre determina os estados do cluster e decide as ações de cada nó específico. Vários processos são necessários para configurar o nó mestre.

  • Servidor de API
    Todas as comunicações do cluster são baseadas aqui. É o gateway que permite que todos os componentes do cluster troquem informações. Ele expõe a API do Kubernetes. Há dois papéis principais desempenhados aqui. O primeiro é um ponto de entrada que permite aos usuários interagir com o cluster. Por exemplo, enviar solicitações ao usar Kubectl. Segundo, gatekeeping para autenticar e validar solicitações. Nesse caso, apenas alguns usuários podem executar solicitações.
  • Agendador
    O planejador designa aplicativos ou objetos de carga de trabalho do Kubernetes ao nó do trabalhador. Aqui, o agendador coloca pods em nós com base nos requisitos de recursos. E quando você fala em pods, é apenas uma pequena unidade de implantação no Kubernetes.
  • Gerente de Controladoria
    Esta unidade mantém clusters como falhas de nó para manter o número correto de pods. Ele detecta alterações no estado do cluster, como pods morrendo, e tenta restaurar o pod ao seu estado original. Por exemplo, se um pod morrer acidentalmente, o gerenciador do controlador solicitará ao escalonador que ratifique qual nó ativa um novo pod como substituto e o kubelet ativa um novo pod.
  • etcd
    Também é referido como o cérebro do cluster. A unidade é um armazenamento de valor de chave para a configuração do cluster. Isso significa que todas as alterações de cluster são feitas aqui. Você pode fazer backup de um cluster salvando o armazenamento distribuído de chave-valor. No entanto, observe que apenas os dados de estado do cluster são armazenados aqui, não os dados do aplicativo. Esta unidade é especificamente para manter as informações de estado do cluster e disponibilizá-las para os processos anteriores, dando-lhes conhecimento sobre o cluster.
  • O(s) nó(s) escravo(s)

    Cada nó escravo é instalado com três processos de nó que permitem que os K8s interajam com ele e gerem pods separadamente em cada nó. Os processos necessários são:

  • KubeletGenericName
    Este é o serviço principal do Kubernetes que executa a execução para a camada de execução do contêiner. Se você retirar esta unidade, o Kubernetes nada mais é do que uma API REST endossada com um armazenamento de chave-valor. Por padrão, o K8s executa o aplicativo de contêiner. Os contêineres são sempre isolados uns dos outros e do sistema host subjacente. Isso provou ser analítico para separar o gerenciamento de aplicativos individuais entre si e a infraestrutura física ou virtual.
      17 melhores programas de afiliados de jogos para ganhar altas comissões

    Embora o controle de admissão da API possa rejeitar pods ou adicionar restrições adicionais, kubelet é o ratificador final de quais pods são executados em um nó específico, não agendadores ou Daemonsets. Para resumir, os kubelets interagem com o nó e o contêiner. Ele também usa arquivos de configuração e ativa pods usando o tempo de execução do contêiner.

  • Tempo de execução do contêiner
    Esta seção executa contêineres. Por exemplo, você pode usar Docker, rkt ou conatinered um pouco mais na seção como funcionam os contêineres.
  • Kube-proxy
    Esta unidade fornece uma camada de abstração para grupos de pods de nós em políticas comuns, como no caso do balanceamento de carga. Todos os nós aplicam o Kube-proxy para fornecer um endereço IP virtual para clientes que acessam pods dinâmicos. Essa estrutura é a solução para o balanceamento de carga, mantendo uma sobrecarga de baixo desempenho.
  • Como funciona a conteinerização

    A conteinerização envolve a virtualização de todas as peças necessárias de um aplicativo de software em uma unidade. Abaixo dos contêineres, há uma coleção de bibliotecas, binários e todas as configurações de aplicativos necessárias. Mas eles não incluem recursos de kernel ou hardware virtualizado.

    Por fim, execute os tempos de execução do contêiner ‘no topo’ que descrevem os recursos. Como os contêineres incluem apenas os componentes básicos e as dependências do aplicativo, eles são leves e, portanto, mais rápidos, ao contrário de outras máquinas virtuais.

    Leia também: Containers vs. Máquinas Virtuais: Explicando as Diferenças

    Como instalar e configurar o Kubernetes

    Passei tanto tempo sendo teórico; a seção em cascata será tática e envolverá alguma experiência prática em contêineres. Este tutorial cobre particularmente a instalação no sistema operacional Windows.

    Existem várias maneiras de fazer instalações ao usar o Windows; você pode optar pela linha de comando ou pela interface gráfica do usuário. No entanto, você deve garantir que atende às seguintes especificações exigidas.

    Seu hardware precisa de um nó mestre com pelo menos 2 GB de memória e 700 MB para o nó do trabalhador. Para os requisitos de software, Hype-v, Docker para desktop, endereço Mac exclusivo e um UUID de produto exclusivo para cada nó. Aqui está a abordagem passo a passo.

    Instalando e Configurando o Hyper-V

    Hyper-V é o software de virtualização padrão do Windows. Essencialmente, é um VirtualBox com esteróides. Ele permite que você gerencie máquinas virtuais na GUI da Microsoft ou na linha de comando. Para ativar o Hyper-V, siga estas etapas.

  • Abra o Painel de Controle.
  • Clique em programas no painel esquerdo.
  • Na página de programas e recursos, clique em “Ativar ou desativar recursos do Windows”.
  • Selecione os recursos Hyper-V e Hypervisor para Windows.
  • Em seguida, selecione ok nesta etapa; sua máquina deve reiniciar para ativar as novas configurações.
  • Ocasionalmente, seu PC pode reiniciar várias vezes para garantir que tudo esteja configurado corretamente. Você pode verificar o sucesso da instalação digitando o seguinte comando no Power Shell.

    Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V

    Confirme se sua tela está preenchida com um estado ‘ativado’.

    Instalando o Docker

    Como você aprendeu, o K8s é uma ferramenta de orquestração de contêiner construída sobre contêineres; neste caso, o Docker é uma boa escolha. O K8s se comunica com o Docker e gerencia tudo em nível empresarial. Movimente-se baixando o Docker para Windows. Se você está se perguntando por que é necessário usar o Docker Desktop, ele é o preferido para simplificar o desenvolvimento, envio e execução de aplicativos dockerizados (em contêineres).

      Como usar o Microsoft Bing AI Chat em qualquer navegador da Web (método de trabalho)

    Também é a maneira mais rápida de criar aplicativos do Docker no Windows usando o Hyper-V e a rede. Após a instalação bem-sucedida, o Docker estará sempre acessível em qualquer terminal, desde que esteja em execução. Para obter um guia detalhado sobre a instalação, você pode conferir a documentação oficial do Docker. Se você encontrar problemas como ícones ocultos após a instalação, o problema pode ser resolvido reiniciando a máquina.

    Instalando o Kubernetes

    A GUI do Docker permite definir configurações, instalar e habilitar o Kubernetes. Para instalar o K8s, siga estas etapas.

  • Clique com o botão direito do mouse no ícone da bandeja do Docker e selecione propriedades.
  • Selecione `Configurações` no menu suspenso depois de clicar em `Propriedades`.
  • No painel esquerdo, escolha `Kubernetes` e clique em `Aplicar`.
  • O Docker instalará alguns pacotes e dependências adicionais. O processo leva cerca de cinco a dez minutos, com base na velocidade da sua internet. Você pode usar o aplicativo Docker para garantir que tudo está funcionando corretamente.

    Como os aplicativos do Kubernetes podem ser implantados usando a CLI, pode ser necessário instalar o painel do K8s, pois ele não é instalado por padrão. Instale o painel usando as etapas a seguir.

  • Baixe a configuração YAML.
  • Implante o aplicativo usando este código: . Kubectl apply -f .recommended.yaml.
  • Confirme se tudo está bem definido por: kubectl.exe get -f .recommended.yaml.txt.
  • Para acessar o painel, execute o seguinte comando no Power Shell (não no CMD)

  • Execute o seguinte código ((kubectl -n kube-system describe secret default | select-string “token:”) – split “+”)[1]
    • Copie o token gerado e execute kubectl proxy.
  • No seu navegador, abra este link.
  • Clique em `Token` e cole seu token aqui.
  • Entrar.
  • Se você chegou até aqui, bravo, sua tela deve ser preenchida com o painel do K8s. Agora você pode gerenciar seus aplicativos sem fazer o trabalho pesado usando a CLI.

    Leia também: Como instalar o Kubernetes no Ubuntu 18

    Como criar e gerenciar o cluster do Kubernetes

    Se você seguiu até aqui, deve ter instalado o Kubernetes com sucesso em seu host. Em seguida, siga estas etapas para criar e executar um gerenciamento simples em seu cluster:

  • Configurar rede – Aqui, você precisa configurar a rede entre os nós do cluster; permitir que eles se comuniquem entre si.
  • Configurar a autenticação do cluster – Crie mecanismos de autenticação e autorização para acesso ao cluster.
  • Componentes mestres de instalação; envolve servidor de API, agendador e gerenciador de controladores.
  • Junte-se a nós do trabalhador – conecte os nós do trabalhador ao cluster usando arquivos de configuração fornecidos pelo processo de configuração do cluster.
  • Implantar complementos – você pode instalar extensões para aprimorar a funcionalidade do cluster.
  • Gerenciar cargas de trabalho – é hora de você implantar seus aplicativos.
  • Embora esta seja apenas uma visão geral do processo de criação do cluster, ela envolve muitas etapas que envolvem vários comandos. Aqui está o guia de documentação oficial sobre como criar clusters antes da implantação. Deve ser sua mão orientadora.

    Como implantar seu primeiro aplicativo usando o Kubernetes

    O comando mais comum ao usar o K8s é kubectl action resource, que permite executar ações específicas, como criar ou excluir um recurso especificado.

    Se você estiver travado, poderá usar –help após um subcomando específico para obter informações adicionais.

    Por exemplo, o Kubernetes obtém nós –help. Implante seu primeiro aplicativo K8s usando o comando kubectl create deployment Kubernetes-bootcamp –image=gcr.io/google-samples/Kubernetes-bootcamp:v1.

    Palavras Finais

    Este guia foi um ponto de entrada para a tecnologia Kubernetes. Você aprendeu os benefícios, recursos e arquitetura do Kubernetes. Felizmente, você pode ter que consultar alguns ponteiros (recursos externos) para prosseguir; explicou como as coisas funcionam sob o capô.

    Embora possa parecer difícil entender toda a pilha de tecnologia como iniciante, esta postagem foi uma diretriz suave para você começar com o K8s. Você precisará de um pouco de prática para se sentir confiante no uso dessa tecnologia, por isso estou indicando a documentação oficial do Kubernetes como referência lado a lado. Quanto mais prática você tiver, mais rápido se tornará um especialista em K8s.

    Em seguida, confira os tutoriais do Kubernetes para iniciantes dominarem.