O que você quer saber sobre Kubernetes

1.19k views2724 WordsCopy TextShare
Fabricio Veronez
No vídeo de hoje, eu vou responder as principais dúvidas que vocês me mandaram sobre Kubernetes. E ...
Video Transcript:
Qual a diferença entre o docker e o kubernetes como é que eu faço para persistir informações dentro das minhas aplicações com o kubernet como é que funciona esse lance de escalabilidade automática como é que eu faço para gerenciar corretamente o meu ambiente dentro do kubernetes essas e outras perguntas eu vou responder para você nesse [Aplausos] [Música] vídeo Fala aí beleza seja bem-vindo seja bem-vinda a mais esse vídeo aqui no canal eu sou Fabrício Veronez e eu ajudo você a desenvolver aplicações escaláveis de Grand porte sem ter medo de Deploy em produção utilizando as principais práticas
e tecnologias de cloud e de devops e nesse vídeo aqui eu vou tirar as principais dúvidas que vocês têm em relação ao kubernetes eu peguei aqui as cinco principais dúvidas que a galera manda para mim não não só aqui no YouTube mas também no meu Instagram no meu LinkedIn em todas as minhas redes sociais e vou tirar essas dúvidas agora vou responder essas perguntas agora inclusive se você não é inscrito não é inscrita aqui no canal se inscreve aciona o Sininho para você não perder mais nenhum conteúdo como esse e me segue também nas outras
redes sociais Manda as suas dúvidas porque ela pode est aqui no próximo vídeo certo então eu separei cinco perguntas aqui que que vocês mais fazem para mim e vamos lá que eu vou responder primeira pergunta qual a principal diferença entre o docker e o kubernetes Essa é clássica vamos lá o docker ele é uma tecnologia utilizada para executar contêiners Ou seja é uma tecnologia utilizada para executar processos de uma forma isolada em um ambiente com o docker eu consigo Executar a minha aplicação desenvolvida em Python em nodejs em dnet em Jalva Posso rodar banco de
dados qualquer processo de forma isolada no meu computador no meu ambiente de nuvem no meu ambiente de data center e por aí vai então o docker ele tá relacionado a criação e execução de contêiners e também de imagens de contêiners que é a base para você criar um contêiner então o DOC tá relacionado à execução de contêiners já o kubernetes ele tá relacionado a a gerenciamento de contêiners porque quando nós queremos executar aplicações no ambiente produtivo Principalmente quando a gente fala em aplicações de grande porte aplicações baseadas em microsserviços eh chega uma hora em que
eu preciso escalar essa aplicação criar réplicas dessa aplicação para distribuir as cargas distribuir os workloads as requisições que vão chegando Principalmente quando a demanda começa a aumentar e o docker sozinho ele não faz isso porque o docker ele é uma ferramenta utilizada para executar o contêiner mas gerenciar esses contêiners orquestrar a escalabilidade garantir o balanceamento de carga gerenciamento de configuração eh gestão de atualização na hora que eu quero atualizar uma versão ali da minha aplicação o Dock não vai fazer isso e aí entra o kubernetes que é a ferramenta utilizar para gerenciar os contêiners Então
essa é a diferença entre o docker e o kubernetes o Dock ele é utilizado para criar e executar contêiners para poder executar meus processos de forma isolada e o kubernetes ele gerencia os meus contêiners ele é um orquestrador de contêiners Na verdade ele é o principal orquestrador de contêiners do mercado mas você tem outras opções como o RCP nômade Você tem o apach mesos tem as ferramentas também dos Claudio providers utilizados também para executar contêiners ou melhor para orquestrar os contêiners e o kubernetes sem somb de dúvida ele é o principal certo Então essa é
a diferença entre o Dock e o kubernetes muitas vezes a galera acha que eles concorrem entre si mas na verdade eles são complementos um do outro vamos lá segunda pergunta quais são os requisitos básicos para colocar uma aplicação no kubernet cara isso é um ponto muito importante e eu vejo a galera errar muito nisso tentar aprender o kubernetes sem antes aprender a base para se trabalhar com containers e entender os componentes do kubernetes para rodar a aplicação E aí quando acontece um problema não sabe o que que tá acontecendo por quê Porque não conhece os
componentes não conhece a base e acaba se perdendo Então vamos lá Primeira coisa eu falei aí antes que o kubernetes ele é um orquestrador de contêiners então para você trabalhar com kubernetes primeiro você tem que entender e saber Criar e executar corretamente contêiners então docker é a base para você aprender como trabalhar bem com o kubernetes então saber criar uma imagem da maneira correta saber como executar um contêiner de forma correta no seu próprio ambiente para você poder testar validar ver se tá realmente funcionando entender como é que são as comunicações entre containers entender como
persistir informações trabalhar com volumes em contêiners é essencial Então antes você começar a aprender o kubernetes você precisa dominar o docker tranquilo docker não pode ser um problema para você fechado então antes de aprender kubernetes aprende o docker quando a gente vai falar em kubernetes existem objetos que estão relacionados ao Deploy da sua aplicação quando você roda sua aplicação no kubernetes tem alguns objetos ali envolvidos que são importantíssimos você entender para saber o que realmente acontece por debaixo dos panos o primeiro objeto é o pod o pod ele é o menor objeto do cluster kubernetes
é nem que eu executo os meus contêiners então Toda vez que você cria um contêiner no kubernet Na verdade ele é executado dentro do pod mas o pod sozinho ele não resolve muita coisa ele executa ali o contêiner quando um codde ele é eliminado seja porque alguém deletou ou porque uma máquina que tava fazendo parte ali do cluster kubernetes eh foi eliminada ou não tem comunicação e tava sendo executado o contêiner naquela máquina o que que vai acontecer o pod ele vai ser destruído ali ele não vai est mais em execução e nenhum outro vai
ser criado no lugar seja você deletando manualmente ou por conta de qualquer desastre que tenha acontecido nada vai acontecer a não ser que você tenha um controlador acima desse pod gerenciando esse pod e garantindo a quantidade de réplicas a quantidade de Pods em execução no cluster kubernetes então aí entra o replica set Então você precisa quando for fazer o Deploy da sua aplicação criar o pod utilizando réplica set que vai ser o controlador inclus Inclusive tem um termo chamado naked pod que é o pod que é criado sem ter um controlador um gerenciador e cuidando
dele beleza mas simplesmente criar com réplica 7 também não vai resolver todos os seus problemas Principalmente quando a gente fala em atualização dessa aplicação Toda vez que você precisa atualizar a sua aplicação o RCA 7 ele não vai fazer isso para você e aí que entra um outro controlador acima que é o deployment então Toda vez que você for fazer o Deploy de uma aplicação no kubernetes você vai criar utilizando o deployment porque o deployment aí vai criar o replica set e o replica set vai gerenciar ali os Pods então é fica mais ou menos
essa hierarquia o deployment depois o replica set e depois ali o pode executando o seu contêiner tem outras formas de fazer ali o Deploy de uma aplicação no kubernetes Mas você entendendo essa base aqui você já tá bem na fita e tem também o service que é um objeto que vai fazer a exposição dos seus podes é através dele que você vai criar o ponto de comunicação com os seus Pods lembra que eu falei antes de escalabilidade né você criar réplicas ali horizontais criar cópias ali do seu processo para distribuir a carga distribuir as chamadas
Pois é o service aí vai ser o ponto um único de comunicação e ele vai também fazer o balanceamento ele vai fazer a distribuição das requisições entre as épicas Então você precisa entender esses componentes e também dominar corretamente o uso do docker e de containers você entendendo isso você já vai est aí na frente de muita gente que simplesmente pega um tutorial executa aí os emos e não tem a menor ideia do que tá acontecendo beleza vamos agora pra terceira pergunta mas antes faz o seguinte dá um like no vídeo pro YouTube entender que esse
conteúdo é de qualidade Vale a Pena Ser distribuído e também pega o link aí do vídeo compartilha nas suas redes sociais seu LinkedIn Instagram enfim grupo de WhatsApp eu vou ter maior prazer e interagir com você nas suas redes sociais lá me marca Putz vídeo maneiro do Fabrício explicando tirando as dúvidas sobre kubernetes e tal vou ter maior prazer de interagir a galera vai ver que você tá se aprimorando e também vai vir mais gente para cá V vir mais pessoas e ajudar o canal a crescer ainda mais beleza então Compartilha aí o vídeo dá
um like e vamos pra terceira Pergunta a terceira pergunta é É verdade que o kubernetes pode escalar minha aplicação automaticamente como isso funciona na prática então é uma das características do kubernetes é ajudar na escalabilidade da minha aplicação mas primeiro você tem que ter arquitetado ali tem que ter desenhado a sua aplicação para ela suportar essa escalabilidade tem que ser escalável mas aqui eu tô considerando que você já fez isso e para escalar a minha aplicação eu posso ir lá no deployment e aumentar o número de réplicas fazendo isso manualmente E aí o réplica 7
vai entrar em Ação vai verificar que eu alterei ali o número de réplicas desejados e vai aumentar ali o número de réplicas ou diminuir caso eu diminua o número de réplicas Mas isso é feito manualmente no kubernetes Eu tenho um recurso chamado horizontal pod a scaler ou também chamado de hpa onde eu utilizo algumas métricas que podem ou não ser customizadas eu posso criar ali Custom Matrix para utilizar métricas eh externas que não são padrões ali do kubernetes e baseado nessas métricas ele pode aumentar o número de R e diminuir ali caso seja necessário E
aí você pode est pensando aí pô Fabrício Mas beleza eu aumento ali o número de réplicas da minha aplicação e qual como é que o kubernetes faz para escalar ele mesmo né criar mais máquinas ali no cluster eu também tenho um a scaler do kubernetes E aí a implementação desse cara depende ali de cada cloud provider da ferramenta que você tá utilizando ali do kubernetes Mas ele também é é capaz de aumentar o número de máquinas aumentar o número de nós no cluster kubernetes e também diminuir é claro tem limitação tem limitação se você tiver
num ambiente de cloud tem que levar em consideração o limite ali da sua conta e se você tiver num datacenter tem as limitações ali de recursos Então não é infinito tá mas dá para você escalar automaticamente sim e funciona mais ou menos dessa forma Ok e se você quer entender mais sobre kubernetes sobre doc sobre construção de pipeline CCD e utilizar as principais ferramentas de cloud de devops do mercado aqui embaixo tem um formulário onde você vai preencher com as suas informações e a gente vai entrar em contato com você para falar sobre a formação
devops pro que é o meu treinamento com hoje mais de 120 Horas de aulas para você aprender sobre kubernetes docker e contêiners infraestrutura como código automação com pipeline CCD observabilidade tudo que é necessário para você ser esse profissional capaz de criar as aplicações de forma escalável sem ter medo de Deploy em produção para que você se diferencie no mercado utilizando o que o mercado precisa então clica aí embaixo vai ter o link aí para você preencher o formulário preenche a gente vai entrar em contato e entender o seu momento saber como a gente pode te
ajudar Ok então vamos lá pra quarta pergunta é verdade que eu não posso usar o kubernet para executar aplicações stateless Qual é o motivo então vamos lá o que que é uma aplicação stateless aplicações stateless elas não armazenam estado não armazenam informações por exemplo uma API uma API normalmente você não armazena nada na api você persiste as informações num banco de dados então a api ela é uma aplicação stateless porque não armazena nada já ferramentas de site como por exemplo WordPress você armazena informações no banco de dados mas você também tem ali arquivos plugins que
são armazenados em um diretório e o site O WordPress ele vai utilizar Então esse é um exemplo de aplicações stateful então o stateless não armazena estado você não precisa se preocupar com o armazenamento de informação e stateful você precisa se preocupar e um erro muito comum é achar que não dá para trabalhar com aplicações stateful no kubernetes mas eu te digo que sim você pode trabalhar sem problema nenhum basta você conhecer o conceito de volume e uso de volume no kubernetes eu tenho alguns objetos alguns componentes no kubernetes que fazem e eu trabalhar corretamente com
volume onde as informações que eu preciso armazenar elas não vão estar dentro do meu contêiner vão est em storages eh externos posso utilizar diversos storages diferentes mas você precisa saber os objetos corretos e os objetos aqui são o persistent volume o persistent volume clan e o Storage Class tudo isso você consegue montar essa solução de volume e armazenamento de informações então você pode sim trabalhar com aplicações stateful basta você entender como trabalhar com diretamente com volume que inclusive tem aqui no canal tem lá na formação devops pro com diversos exemplos é só você conferir aqui
no canal ou fazer parte da formação devops pro Beleza agora vamos pra quinta pergunta como posso controlar o acesso a diferentes microsserviços no kubernetes todos os usuários e serviços têm acesso a tudo então por padrão no kubernetes quando você faz o Deploy de uma ou mais aplicações tudo fica no mesmo lugar e realmente Todo mundo vai ter acesso a tudo agora o kubernetes ele tem um recurso chamado namespace Onde você consegue fazer separações lógicas dentro do kubernetes para executar as suas aplicações de uma forma mais isolada fazendo com que somente as pessoas que precisam acessar
aqueles recursos aquelas aplicações vão realmente acessar então primeira coisa separar tudo por namespace quando você não define um Space pra sua aplicação você vai est executando ela no namespace default isso não é uma boa prática então sempre Crie namespace e coloca a sua aplicação no namespace certo Além disso você consegue definir recurso computacional para cada namespace isso ajuda bastante na hora de gerenciar ambientes Principalmente quando a gente tem um cluster kubernetes para vários Ambientes diferentes o que eu não recomendo coloca produção pelo menos num cluster kubernetes separado Tá mas Além disso você precisa definir as
permissões de acesso e aí você vai utilizar o que a gente chama de rbac onde você consegue criar usuários e também usuários pros serviços que são os service account e cada um vai acessar somente o que tem ali a permissão para acessar E além disso você vai utilizar também recurso chamado Network policy que vai fazer as limitações de rede então se você quer é gerenciar vários microsserviços dentro do seu cluster kubernetes várias aplicações e a boa prática é você utilizar namespace para separar os ambientes utilizar o rbac para você gerenciar o acesso dos usuários e
dos serviços e utilizar Network policy para fazer a limitação de comunicação entre os serviços e as aplicações seguindo esse fluxo você vai est utilizando as boas as práticas de gerenciamento e execução no kubernetes Então é isso eu espero que esse vídeo tenha ajudado você a entender mais o kubernetes tirado as suas dúvidas e não deixa de dar um like no vídeo pro YouTube entender que esse conteúdo é de qualidade Vale a Pena Ser distribuído Compartilhar esse vídeo nas suas redes sociais e se você quiser saber mais sobre a formação devops pro O link tá aqui
embaixo preenche o formulário e a gente entra em contato com você beleza então é isso a gente se vê no próximo vídeo valeu
Copyright © 2024. Made with ♥ in London by YTScribe.com