Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução a Kubernetes

Avatar for Lucas Santos Lucas Santos
November 25, 2017

Introdução a Kubernetes

Uma introdução rápida ao sistema de gerenciamento de containers Kubernetes

Avatar for Lucas Santos

Lucas Santos

November 25, 2017
Tweet

More Decks by Lucas Santos

Other Decks in Programming

Transcript

  1. História - Nasceu dentro do Google como uma ferramenta para

    orquestrar workloads de produção em 2000 - Foi aprimorado ao longo de 15 anos de uso contínuo - Primeira versão open lançada em 2015 - Transformado em Open Source e agora é regido pela Cloud Native Computing Foundation, que é uma parte da The Linux Foundation - "Kubernetes" significa timoneiro (helmsman) que mantém o tema marítimo do Docker dando a ideia de que o Kubernetes é o capitão de um "navio de containers" - Escrito em GO
  2. O que é o Kubernetes? - Definido como: "An Open-Source

    system for automating deployment, scaling and management of containerized applications." - Agrupa contêineres em unidades lógicas simples e de fácil gerência - Cria regras e monitoramentos de ambiente - Permite a integração e comunicação interna dos containers - Ecossistema para integração de containers - Clusters de máquinas
  3. O que o Kubernetes não é - Um container engine

    como o Docker ou Rocket - Uma ferramenta de monitoramento - Uma máquina virtual - Um sistema operacional - Um serviço - Um provedor de serviços (PaaS)
  4. Evolução para containers - Não dependem do SO - Leves

    - Isolados - Auto Contidos - Portáteis
  5. Master - Gerencia todos os demais nós - Possui três

    serviços - Um Scheduler - Uma API - Um controller - Um storage para manter o estado Kubernetes Master Scheduler Service API Server Node Controller State storage (etcd)
  6. Workers (Kubelets) - Possui apenas dois serviços - Kubelet: Gerenciador

    do Kubernetes dentro do Node - Proxy: Gerencia configurações de redes - Se comunica com o Master por API - Geralmente uma VM Kubelet Proxy Seu APP
  7. Conexão - Conexões nos clusters do Kubernetes são feitas através

    de um arquivo de configuração - Este arquivo está presente em ~/.kube/ e se chama "config" - Essencialmente é um arquivo YAML com chaves RSA e endereços - A interface CLI é o Kubectl Cluster Kubectl
  8. Estruturas do Kubernetes Pod Deploy Stateful Set Horizontal Auto Scaler

    Ingress ReplicaSet Service Secret Service Account Daemon Set Config Map Volume Claim Chart
  9. Pods - Grupo de aplicações ou containers - Menor estrutura

    existente - Volumes compartilhados - IP único para todas as apps - Contém informações sobre o estado desejado - Contexto compartilhado no mesmo Kubelet - Intimamente ligado ao Kubelet criado
  10. Replica Set - Evoluções dos Replication Controllers - Usado principalmente

    por Deployments - Observam e gerenciam a quantidade de réplicas de um pod - Garantem que um número X de pods sempre estará up and running
  11. DaemonSet - Executa um Pod em cada Kubelet - Útil

    para executar operações cluster-wide - Monitoramento - Storage - Não tem um número fixo de réplicas - Criado e removido conforme o Kubelet
  12. Deployments - Updates declarativos para pods - Controlam estados com

    um modelo de inteligência mínima - Permite o Rolling Update - Gerencia versões diferentes de uma mesma app - Permite upgrades, downgrades e scales
  13. Stateful Set - O mesmo que o deployment, porém para

    aplicações que possuem estado - Mantém uma identificação única persistente - Útil para os casos de: - Apps com identificação única de rede - Armazenamento persistente (entre deploys) - Scale, remoção ou update ordenado
  14. Horizontal AutoScaler - Permite a escalabilidade e duplicação automática de

    pods em deployments, replicasets ou outros objetos baseado no uso de CPU reportado pelo pod
  15. Secret - Utilizado para armazenar informações de ambiente - Armazena

    chaves TLS - Armazena credenciais do DockerHub - Pode armazenar senhas e outras informações - Base64 encoded - Pode ser criado manualmente ou a partir de arquivos - Definem um usuário gerenciado pelo cluster - É a identidade de um Pod - Kubernetes não possui objetos para usuários externos - Possuem o token estático de autenticação ou a referência a um secret para o certificado que permite acesso à API do master Service Account
  16. Config Map - Objetos literais de configuração - Permite desacoplar

    a config do container - Objetos chave e valor - Podem ser criados por arquivos, diretórios ou manualmente - Um volume simples - Atua como storage de um pod - Persistente - Similar a um S3 - Precisa ser criado em duas partes - Persistent Volumes - Persistent Volume Claim Volume Claim
  17. Ingress - Permite acesso externo a serviços internos - Geralmente

    IP's do cluster só podem ser roteados pelo próprio cluster - IP's externos são bloqueados ou redirecionados para outro lugar - Provém acesso externo via domínio - SSL Internet Internet
  18. Service - Grupos de pods que trabalham juntos - Agrupados

    por label (o único agrupador disponível) - Dizem como acessar o serviço - DNS - Endpoints - Políticas de acesso - Load balancer - Headless - IP fixo imutável para todos - Expõe um grupo de pods externamente
  19. Chart - Pacotes pré definidos de aplicações - Funcionam como

    "Dockerfiles" - Permitem a criação de sistemas completos usando um único comando - Abstraem e descrevem tudo que deve rodar em um serviço - Funcionam com o Helm, um package manager do Kubernetes
  20. Arquivos .yaml - Kubernetes é totalmente declarativo - Não depende

    de configuração ou programação externa - Todas as ações são feitas usando arquivos yaml