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

Introdução a Kubernetes

Lucas Santos
November 25, 2017

Introdução a Kubernetes

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

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